8000 bug #13332 [Console] ArgvInput and empty tokens (Taluu) · symfony/symfony@56f3154 · GitHub
[go: up one dir, main page]

Skip to content

Commit 56f3154

Browse files
committed
bug #13332 [Console] ArgvInput and empty tokens (Taluu)
This PR was submitted for the 2.5 branch but it was merged into the 2.3 branch instead (closes #13332). Discussion ---------- [Console] ArgvInput and empty tokens | Q | A | ------------- | --- | Bug fix? | yes | New feature? | no | BC breaks? | no | Deprecations? | no | Tests pass? | yes | Fixed tickets | ~ | License | MIT | Doc PR | ~ If an empty token is provided (from automated tools, or on purpose when running a command), the argument getter was not checking the other tokens, as '' == false in php, which is the stop condition of the while loop in this method. This method should now rely on the count of tokens rather than on the value of the return of `array_shift` If the fix is removed on the ArgvInput, the test `testGetParameterOptionEqualSign` should fail, as it shows why this fix is needed (last line of its provider `provideGetParameterOptionValues`) This is relevant on 2.4+, but as 2.4 has stopped expecting bug fixes since july 2014, I based this PR on 2.5+. So this should be merged in 2.5, 2.6, 2.7 and possibly on master. This should also be cherry-pickable on 2.3 (as it is the current LTS) Commits ------- afa1e20 Fixes ArgvInput's argument getter with empty tokens
2 parents b08115b + afa1e20 commit 56f3154

File tree

2 files changed

+5
-2
lines changed

2 files changed

+5
-2
lines changed

src/Symfony/Component/Console/Input/ArgvInput.php

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -309,9 +309,11 @@ public function hasParameterOption($values)
309309
public function getParameterOption($values, $default = false)
310310
{
311311
$values = (array) $values;
312-
313312
$tokens = $this->tokens;
314-
while ($token = array_shift($tokens)) {
313+
314+
while (0 < count($tokens)) {
315+
$token = array_shift($tokens);
316+
315317
foreach ($values as $value) {
316318
if ($token === $value || 0 === strpos($token, $value.'=')) {
317319
if (false !== $pos = strpos($token, '=')) {

src/Symfony/Component/Console/Tests/Input/ArgvInputTest.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -304,6 +304,7 @@ public function provideGetParameterOptionValues()
304304
array(array('app/console', 'foo:bar', '-e', 'dev'), array('-e', '--env'), 'dev'),
305305
array(array('app/console', 'foo:bar', '--env=dev'), array('-e', '--env'), 'dev'),
306306
array(array('app/console', 'foo:bar', '--env=dev', '--en=1'), array('--en'), '1'),
307+
array(array('app/console', 'foo:bar', '--env=dev', '', '--en=1'), array('--en'), '1'),
307308
);
308309
}
309310

0 commit comments

Comments
 (0)
0