From ab9a96b77463c48e48a6708e9329bcc5415e258b Mon Sep 17 00:00:00 2001 From: Vasily Khayrulin Date: Thu, 15 Aug 2013 17:16:55 +0400 Subject: [PATCH] Fixes for hasParameterOption and getParameterOption methods of ArgvInput --- src/Symfony/Component/Console/Input/ArgvInput.php | 10 ++++++---- .../Component/Console/Tests/Input/ArgvInputTest.php | 4 ++++ 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/src/Symfony/Component/Console/Input/ArgvInput.php b/src/Symfony/Component/Console/Input/ArgvInput.php index 6c3267c9fd02..05640a36b151 100644 --- a/src/Symfony/Component/Console/Input/ArgvInput.php +++ b/src/Symfony/Component/Console/Input/ArgvInput.php @@ -284,9 +284,11 @@ public function hasParameterOption($values) { $values = (array) $values; - foreach ($this->tokens as $v) { - if (in_array($v, $values)) { - return true; + foreach ($this->tokens as $token) { + foreach ($values as $value) { + if ($token === $value || 0 === strpos($token, $value . '=')) { + return true; + } } } @@ -311,7 +313,7 @@ public function getParameterOption($values, $default = false) $tokens = $this->tokens; while ($token = array_shift($tokens)) { foreach ($values as $value) { - if (0 === strpos($token, $value)) { + if ($token === $value || 0 === strpos($token, $value . '=')) { if (false !== $pos = strpos($token, '=')) { return substr($token, $pos + 1); } diff --git a/src/Symfony/Component/Console/Tests/Input/ArgvInputTest.php b/src/Symfony/Component/Console/Tests/Input/ArgvInputTest.php index 532841c0b0fb..cd4dceb66158 100644 --- a/src/Symfony/Component/Console/Tests/Input/ArgvInputTest.php +++ b/src/Symfony/Component/Console/Tests/Input/ArgvInputTest.php @@ -230,6 +230,9 @@ public function testHasParameterOption() $input = new ArgvInput(array('cli.php', 'foo')); $this->assertFalse($input->hasParameterOption('--foo'), '->hasParameterOption() returns false if the given short option is not in the raw input'); + + $input = new ArgvInput(array('cli.php', '--foo=bar')); + $this->assertTrue($input->hasParameterOption('--foo'), '->hasParameterOption() returns true if the given option with provided value is in the raw input'); } /** @@ -248,6 +251,7 @@ public function provideGetParameterOptionValues() array(array('app/console', 'foo:bar', '--env=dev'), '--env', 'dev'), array(array('app/console', 'foo:bar', '-e', 'dev'), array('-e', '--env'), 'dev'), array(array('app/console', 'foo:bar', '--env=dev'), array('-e', '--env'), 'dev'), + array(array('app/console', 'foo:bar', '--env=dev', '--en=1'), array('--en'), '1'), ); } }