From fdb4b1fd75169839c218762854d5a931ebf53c6a Mon Sep 17 00:00:00 2001 From: Fabien Potencier Date: Thu, 9 May 2013 10:40:45 +0200 Subject: [PATCH] [Console] moved --help support to allow proper behavior with other passed options --- src/Symfony/Component/Console/Application.php | 21 +++++++++---------- .../Console/Tests/ApplicationTest.php | 12 +++++++++++ 2 files changed, 22 insertions(+), 11 deletions(-) diff --git a/src/Symfony/Component/Console/Application.php b/src/Symfony/Component/Console/Application.php index e8761d8837..c713bc2340 100644 --- a/src/Symfony/Component/Console/Application.php +++ b/src/Symfony/Component/Console/Application.php @@ -154,23 +154,12 @@ class Application */ public function doRun(InputInterface $input, OutputInterface $output) { - $name = $this->getCommandName($input); - if (true === $input->hasParameterOption(array('--ansi'))) { $output->setDecorated(true); } elseif (true === $input->hasParameterOption(array('--no-ansi'))) { $output->setDecorated(false); } - if (true === $input->hasParameterOption(array('--help', '-h'))) { - if (!$name) { - $name = 'help'; - $input = new ArrayInput(array('command' => 'help')); - } else { - $this->wantHelps = true; - } - } - if (true === $input->hasParameterOption(array('--no-interaction', '-n'))) { $input->setInteractive(false); } @@ -200,6 +189,16 @@ class Application return 0; } + $name = $this->getCommandName($input); + if (true === $input->hasParameterOption(array('--help', '-h'))) { + if (!$name) { + $name = 'help'; + $input = new ArrayInput(array('command' => 'help')); + } else { + $this->wantHelps = true; + } + } + if (!$name) { $name = 'list'; $input = new ArrayInput(array('command' => 'list')); diff --git a/src/Symfony/Component/Console/Tests/ApplicationTest.php b/src/Symfony/Component/Console/Tests/ApplicationTest.php index 912de51c10..f912338e04 100644 --- a/src/Symfony/Component/Console/Tests/ApplicationTest.php +++ b/src/Symfony/Component/Console/Tests/ApplicationTest.php @@ -146,6 +146,18 @@ class ApplicationTest extends \PHPUnit_Framework_TestCase $this->assertInstanceOf('Symfony\Component\Console\Command\HelpCommand', $command, '->get() returns the help command if --help is provided as the input'); } + public function testSilentHelp() + { + $application = new Application(); + $application->setAutoExit(false); + $application->setCatchExceptions(false); + + $tester = new ApplicationTester($application); + $tester->run(array('-h' => true, '-q' => true), array('decorated' => false)); + + $this->assertEmpty($tester->getDisplay(true)); + } + /** * @expectedException \InvalidArgumentException * @expectedExceptionMessage The command "foofoo" does not exist.