107 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			107 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| 
 | |
| /*
 | |
|  * This file is part of the Symfony package.
 | |
|  *
 | |
|  * (c) Fabien Potencier <fabien@symfony.com>
 | |
|  *
 | |
|  * For the full copyright and license information, please view the LICENSE
 | |
|  * file that was distributed with this source code.
 | |
|  */
 | |
| 
 | |
| namespace Symfony\Component\Console\Tests\Descriptor;
 | |
| 
 | |
| use Symfony\Component\Console\Application;
 | |
| use Symfony\Component\Console\Command\Command;
 | |
| use Symfony\Component\Console\Input\InputArgument;
 | |
| use Symfony\Component\Console\Input\InputDefinition;
 | |
| use Symfony\Component\Console\Input\InputOption;
 | |
| use Symfony\Component\Console\Output\BufferedOutput;
 | |
| 
 | |
| abstract class AbstractDescriptorTest extends \PHPUnit_Framework_TestCase
 | |
| {
 | |
|     /** @dataProvider getDescribeInputArgumentTestData */
 | |
|     public function testDescribeInputArgument(InputArgument $argument, $expectedDescription)
 | |
|     {
 | |
|         $this->assertDescription($expectedDescription, $argument);
 | |
|     }
 | |
| 
 | |
|     /** @dataProvider getDescribeInputOptionTestData */
 | |
|     public function testDescribeInputOption(InputOption $option, $expectedDescription)
 | |
|     {
 | |
|         $this->assertDescription($expectedDescription, $option);
 | |
|     }
 | |
| 
 | |
|     /** @dataProvider getDescribeInputDefinitionTestData */
 | |
|     public function testDescribeInputDefinition(InputDefinition $definition, $expectedDescription)
 | |
|     {
 | |
|         $this->assertDescription($expectedDescription, $definition);
 | |
|     }
 | |
| 
 | |
|     /** @dataProvider getDescribeCommandTestData */
 | |
|     public function testDescribeCommand(Command $command, $expectedDescription)
 | |
|     {
 | |
|         $this->assertDescription($expectedDescription, $command);
 | |
|     }
 | |
| 
 | |
|     /** @dataProvider getDescribeApplicationTestData */
 | |
|     public function testDescribeApplication(Application $application, $expectedDescription)
 | |
|     {
 | |
|         // Replaces the dynamic placeholders of the command help text with a static version.
 | |
|         // The placeholder %command.full_name% includes the script path that is not predictable
 | |
|         // and can not be tested against.
 | |
|         foreach ($application->all() as $command) {
 | |
|             $command->setHelp(str_replace('%command.full_name%', 'app/console %command.name%', $command->getHelp()));
 | |
|         }
 | |
| 
 | |
|         $this->assertDescription($expectedDescription, $application);
 | |
|     }
 | |
| 
 | |
|     public function getDescribeInputArgumentTestData()
 | |
|     {
 | |
|         return $this->getDescriptionTestData(ObjectsProvider::getInputArguments());
 | |
|     }
 | |
| 
 | |
|     public function getDescribeInputOptionTestData()
 | |
|     {
 | |
|         return $this->getDescriptionTestData(ObjectsProvider::getInputOptions());
 | |
|     }
 | |
| 
 | |
|     public function getDescribeInputDefinitionTestData()
 | |
|     {
 | |
|         return $this->getDescriptionTestData(ObjectsProvider::getInputDefinitions());
 | |
|     }
 | |
| 
 | |
|     public function getDescribeCommandTestData()
 | |
|     {
 | |
|         return $this->getDescriptionTestData(ObjectsProvider::getCommands());
 | |
|     }
 | |
| 
 | |
|     public function getDescribeApplicationTestData()
 | |
|     {
 | |
|         return $this->getDescriptionTestData(ObjectsProvider::getApplications());
 | |
|     }
 | |
| 
 | |
|     abstract protected function getDescriptor();
 | |
| 
 | |
|     abstract protected function getFormat();
 | |
| 
 | |
|     private function getDescriptionTestData(array $objects)
 | |
|     {
 | |
|         $data = array();
 | |
|         foreach ($objects as $name => $object) {
 | |
|             $description = file_get_contents(sprintf('%s/../Fixtures/%s.%s', __DIR__, $name, $this->getFormat()));
 | |
|             $data[] = array($object, $description);
 | |
|         }
 | |
| 
 | |
|         return $data;
 | |
|     }
 | |
| 
 | |
|     protected function assertDescription($expectedDescription, $describedObject)
 | |
|     {
 | |
|         $output = new BufferedOutput(BufferedOutput::VERBOSITY_NORMAL, true);
 | |
|         $this->getDescriptor()->describe($output, $describedObject, array('raw_output' => true));
 | |
|         $this->assertEquals(trim($expectedDescription), trim(str_replace(PHP_EOL, "\n", $output->fetch())));
 | |
|     }
 | |
| }
 | 
