use PHPUnit\Framework\TestCase;
use Symfony\Component\Console\Command\Command;
-use Symfony\Component\Console\Input\InputInterface;
-use Symfony\Component\Console\Output\OutputInterface;
-use Symfony\Component\Console\Style\SymfonyStyle;
use Symfony\Component\Console\Tester\CommandTester;
class SymfonyStyleTest extends TestCase
protected function setUp()
{
+ putenv('COLUMNS=121');
$this->command = new Command('sfstyle');
$this->tester = new CommandTester($this->command);
}
protected function tearDown()
{
+ putenv('COLUMNS');
$this->command = null;
$this->tester = null;
}
$this->assertStringEqualsFile($outputFilepath, $this->tester->getDisplay(true));
}
- public function inputCommandToOutputFilesProvider()
+ /**
+ * @dataProvider inputInteractiveCommandToOutputFilesProvider
+ */
+ public function testInteractiveOutputs($inputCommandFilepath, $outputFilepath)
+ {
+ $code = require $inputCommandFilepath;
+ $this->command->setCode($code);
+ $this->tester->execute(array(), array('interactive' => true, 'decorated' => false));
+ $this->assertStringEqualsFile($outputFilepath, $this->tester->getDisplay(true));
+ }
+
+ public function inputInteractiveCommandToOutputFilesProvider()
{
$baseDir = __DIR__.'/../Fixtures/Style/SymfonyStyle';
- return array_map(null, glob($baseDir.'/command/command_*.php'), glob($baseDir.'/output/output_*.txt'));
+ return array_map(null, glob($baseDir.'/command/interactive_command_*.php'), glob($baseDir.'/output/interactive_output_*.txt'));
}
-}
-/**
- * Use this class in tests to force the line length
- * and ensure a consistent output for expectations.
- */
-class SymfonyStyleWithForcedLineLength extends SymfonyStyle
-{
- public function __construct(InputInterface $input, OutputInterface $output)
+ public function inputCommandToOutputFilesProvider()
{
- parent::__construct($input, $output);
+ $baseDir = __DIR__.'/../Fixtures/Style/SymfonyStyle';
- $ref = new \ReflectionProperty(get_parent_class($this), 'lineLength');
- $ref->setAccessible(true);
- $ref->setValue($this, 120);
+ return array_map(null, glob($baseDir.'/command/command_*.php'), glob($baseDir.'/output/output_*.txt'));
}
}