Fix ArrayInput::toString() for VALUE_IS_ARRAY options/args
This commit is contained in:
parent
26ef6d27ad
commit
2ba5005830
@ -101,9 +101,15 @@ class ArrayInput extends Input
|
|||||||
$params = array();
|
$params = array();
|
||||||
foreach ($this->parameters as $param => $val) {
|
foreach ($this->parameters as $param => $val) {
|
||||||
if ($param && '-' === $param[0]) {
|
if ($param && '-' === $param[0]) {
|
||||||
$params[] = $param.('' != $val ? '='.$this->escapeToken($val) : '');
|
if (is_array($val)) {
|
||||||
|
foreach ($val as $v) {
|
||||||
|
$params[] = $param.('' != $v ? '='.$this->escapeToken($v) : '');
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
$params[] = $this->escapeToken($val);
|
$params[] = $param.('' != $val ? '='.$this->escapeToken($val) : '');
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$params[] = is_array($val) ? array_map(array($this, 'escapeToken'), $val) : $this->escapeToken($val);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -140,5 +140,8 @@ class ArrayInputTest extends TestCase
|
|||||||
{
|
{
|
||||||
$input = new ArrayInput(array('-f' => null, '-b' => 'bar', '--foo' => 'b a z', '--lala' => null, 'test' => 'Foo', 'test2' => "A\nB'C"));
|
$input = new ArrayInput(array('-f' => null, '-b' => 'bar', '--foo' => 'b a z', '--lala' => null, 'test' => 'Foo', 'test2' => "A\nB'C"));
|
||||||
$this->assertEquals('-f -b=bar --foo='.escapeshellarg('b a z').' --lala Foo '.escapeshellarg("A\nB'C"), (string) $input);
|
$this->assertEquals('-f -b=bar --foo='.escapeshellarg('b a z').' --lala Foo '.escapeshellarg("A\nB'C"), (string) $input);
|
||||||
|
|
||||||
|
$input = new ArrayInput(array('-b' => array('bval_1', 'bval_2'), '--f' => array('fval_1', 'fval_2')));
|
||||||
|
$this->assertSame('-b=bval_1 -b=bval_2 --f=fval_1 --f=fval_2', (string) $input);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user