| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212 | 
							- <?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\Tester;
 
- use PHPUnit\Framework\TestCase;
 
- use Symfony\Component\Console\Application;
 
- use Symfony\Component\Console\Command\Command;
 
- use Symfony\Component\Console\Helper\HelperSet;
 
- use Symfony\Component\Console\Helper\QuestionHelper;
 
- use Symfony\Component\Console\Output\Output;
 
- use Symfony\Component\Console\Question\ChoiceQuestion;
 
- use Symfony\Component\Console\Question\Question;
 
- use Symfony\Component\Console\Style\SymfonyStyle;
 
- use Symfony\Component\Console\Tester\CommandTester;
 
- class CommandTesterTest extends TestCase
 
- {
 
-     protected $command;
 
-     protected $tester;
 
-     protected function setUp()
 
-     {
 
-         $this->command = new Command('foo');
 
-         $this->command->addArgument('command');
 
-         $this->command->addArgument('foo');
 
-         $this->command->setCode(function ($input, $output) { $output->writeln('foo'); });
 
-         $this->tester = new CommandTester($this->command);
 
-         $this->tester->execute(['foo' => 'bar'], ['interactive' => false, 'decorated' => false, 'verbosity' => Output::VERBOSITY_VERBOSE]);
 
-     }
 
-     protected function tearDown()
 
-     {
 
-         $this->command = null;
 
-         $this->tester = null;
 
-     }
 
-     public function testExecute()
 
-     {
 
-         $this->assertFalse($this->tester->getInput()->isInteractive(), '->execute() takes an interactive option');
 
-         $this->assertFalse($this->tester->getOutput()->isDecorated(), '->execute() takes a decorated option');
 
-         $this->assertEquals(Output::VERBOSITY_VERBOSE, $this->tester->getOutput()->getVerbosity(), '->execute() takes a verbosity option');
 
-     }
 
-     public function testGetInput()
 
-     {
 
-         $this->assertEquals('bar', $this->tester->getInput()->getArgument('foo'), '->getInput() returns the current input instance');
 
-     }
 
-     public function testGetOutput()
 
-     {
 
-         rewind($this->tester->getOutput()->getStream());
 
-         $this->assertEquals('foo'.PHP_EOL, stream_get_contents($this->tester->getOutput()->getStream()), '->getOutput() returns the current output instance');
 
-     }
 
-     public function testGetDisplay()
 
-     {
 
-         $this->assertEquals('foo'.PHP_EOL, $this->tester->getDisplay(), '->getDisplay() returns the display of the last execution');
 
-     }
 
-     public function testGetStatusCode()
 
-     {
 
-         $this->assertSame(0, $this->tester->getStatusCode(), '->getStatusCode() returns the status code');
 
-     }
 
-     public function testCommandFromApplication()
 
-     {
 
-         $application = new Application();
 
-         $application->setAutoExit(false);
 
-         $command = new Command('foo');
 
-         $command->setCode(function ($input, $output) { $output->writeln('foo'); });
 
-         $application->add($command);
 
-         $tester = new CommandTester($application->find('foo'));
 
-         // check that there is no need to pass the command name here
 
-         $this->assertEquals(0, $tester->execute([]));
 
-     }
 
-     public function testCommandWithInputs()
 
-     {
 
-         $questions = [
 
-             'What\'s your name?',
 
-             'How are you?',
 
-             'Where do you come from?',
 
-         ];
 
-         $command = new Command('foo');
 
-         $command->setHelperSet(new HelperSet([new QuestionHelper()]));
 
-         $command->setCode(function ($input, $output) use ($questions, $command) {
 
-             $helper = $command->getHelper('question');
 
-             $helper->ask($input, $output, new Question($questions[0]));
 
-             $helper->ask($input, $output, new Question($questions[1]));
 
-             $helper->ask($input, $output, new Question($questions[2]));
 
-         });
 
-         $tester = new CommandTester($command);
 
-         $tester->setInputs(['Bobby', 'Fine', 'France']);
 
-         $tester->execute([]);
 
-         $this->assertEquals(0, $tester->getStatusCode());
 
-         $this->assertEquals(implode('', $questions), $tester->getDisplay(true));
 
-     }
 
-     public function testCommandWithDefaultInputs()
 
-     {
 
-         $questions = [
 
-             'What\'s your name?',
 
-             'How are you?',
 
-             'Where do you come from?',
 
-         ];
 
-         $command = new Command('foo');
 
-         $command->setHelperSet(new HelperSet([new QuestionHelper()]));
 
-         $command->setCode(function ($input, $output) use ($questions, $command) {
 
-             $helper = $command->getHelper('question');
 
-             $helper->ask($input, $output, new Question($questions[0], 'Bobby'));
 
-             $helper->ask($input, $output, new Question($questions[1], 'Fine'));
 
-             $helper->ask($input, $output, new Question($questions[2], 'France'));
 
-         });
 
-         $tester = new CommandTester($command);
 
-         $tester->setInputs(['', '', '']);
 
-         $tester->execute([]);
 
-         $this->assertEquals(0, $tester->getStatusCode());
 
-         $this->assertEquals(implode('', $questions), $tester->getDisplay(true));
 
-     }
 
-     public function testCommandWithWrongInputsNumber()
 
-     {
 
-         $this->expectException('RuntimeException');
 
-         $this->expectExceptionMessage('Aborted.');
 
-         $questions = [
 
-             'What\'s your name?',
 
-             'How are you?',
 
-             'Where do you come from?',
 
-         ];
 
-         $command = new Command('foo');
 
-         $command->setHelperSet(new HelperSet([new QuestionHelper()]));
 
-         $command->setCode(function ($input, $output) use ($questions, $command) {
 
-             $helper = $command->getHelper('question');
 
-             $helper->ask($input, $output, new ChoiceQuestion('choice', ['a', 'b']));
 
-             $helper->ask($input, $output, new Question($questions[0]));
 
-             $helper->ask($input, $output, new Question($questions[1]));
 
-             $helper->ask($input, $output, new Question($questions[2]));
 
-         });
 
-         $tester = new CommandTester($command);
 
-         $tester->setInputs(['a', 'Bobby', 'Fine']);
 
-         $tester->execute([]);
 
-     }
 
-     public function testCommandWithQuestionsButNoInputs()
 
-     {
 
-         $this->expectException('RuntimeException');
 
-         $this->expectExceptionMessage('Aborted.');
 
-         $questions = [
 
-             'What\'s your name?',
 
-             'How are you?',
 
-             'Where do you come from?',
 
-         ];
 
-         $command = new Command('foo');
 
-         $command->setHelperSet(new HelperSet([new QuestionHelper()]));
 
-         $command->setCode(function ($input, $output) use ($questions, $command) {
 
-             $helper = $command->getHelper('question');
 
-             $helper->ask($input, $output, new ChoiceQuestion('choice', ['a', 'b']));
 
-             $helper->ask($input, $output, new Question($questions[0]));
 
-             $helper->ask($input, $output, new Question($questions[1]));
 
-             $helper->ask($input, $output, new Question($questions[2]));
 
-         });
 
-         $tester = new CommandTester($command);
 
-         $tester->execute([]);
 
-     }
 
-     public function testSymfonyStyleCommandWithInputs()
 
-     {
 
-         $questions = [
 
-             'What\'s your name?',
 
-             'How are you?',
 
-             'Where do you come from?',
 
-         ];
 
-         $command = new Command('foo');
 
-         $command->setCode(function ($input, $output) use ($questions) {
 
-             $io = new SymfonyStyle($input, $output);
 
-             $io->ask($questions[0]);
 
-             $io->ask($questions[1]);
 
-             $io->ask($questions[2]);
 
-         });
 
-         $tester = new CommandTester($command);
 
-         $tester->setInputs(['Bobby', 'Fine', 'France']);
 
-         $tester->execute([]);
 
-         $this->assertEquals(0, $tester->getStatusCode());
 
-     }
 
- }
 
 
  |