You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
bug #19946 [Console] Fix parsing optionnal options with empty value in argv (chalasr)
This PR was merged into the 2.7 branch.
Discussion
----------
[Console] Fix parsing optionnal options with empty value in argv
| Q | A
| ------------- | ---
| Branch? | 2.7
| Bug fix? | yes
| New feature? | no
| BC breaks? | no
| Deprecations? | no
| Tests pass? | yes
| Fixed tickets | #19884
| License | MIT
If a command takes an option accepting an optional value, passing an empty value to this option will make it parsed as `null`, e.g:
`bin/console dummy --foo ""` gives `['foo' => null]`.
`bin/console dummy --foo=""` gives `['foo' => null]`.
Problems appear when adding an argument with a required value (let's call it `bar`):
`bin/console dummy --foo "" "bar-val"` gives `['foo' => null, 'bar' => 'bar-val']` which is OK.
But:
`bin/console dummy --foo="" "bar-val"`
> [RuntimeException]
Not enough arguments (missing: "bar").
The empty value is never considered, as `$argv` just return `"--foo="` for the option, the current implementation doesn't handle the empty value when using an equal as separator, so the `bar` argument value is considered as the `foo` one, giving a missing required argument at runtime.
This fixes it by explicitly considering the empty value if there is nothing immediately after the equal sign, so args/options correctly take their respective values.
Commits
-------
8952155 [Console] Fix empty optionnal options with = separator in argv
0 commit comments