Преглед изворни кода

Merge remote branch 'Herzult/fixArrayOption'

* Herzult/fixArrayOption:
  Simplify conditional block
  [Command] Fix array option parsing
Fabien Potencier пре 14 година
родитељ
комит
c6cfd3aeb1

+ 5 - 1
src/Symfony/Component/Console/Input/ArgvInput.php

@@ -229,7 +229,11 @@ class ArgvInput extends Input
             $value = $option->isValueOptional() ? $option->getDefault() : true;
         }
 
-        $this->options[$name] = $value;
+        if ($option->isArray()) {
+            $this->options[$name][] = $value;
+        } else {
+            $this->options[$name] = $value;
+        }
     }
 
     /**

+ 4 - 0
tests/Symfony/Tests/Component/Console/Input/ArgvInputTest.php

@@ -147,6 +147,10 @@ class ArgvInputTest extends \PHPUnit_Framework_TestCase
         } catch (\RuntimeException $e) {
             $this->assertNotEquals('Too many arguments.', $e->getMessage(), '->parse() parses array arguments');
         }
+
+        $input = new ArgvInput(array('cli.php', '--name=foo', '--name=bar', '--name=baz'));
+        $input->bind(new InputDefinition(array(new InputOption('name', null, InputOption::VALUE_OPTIONAL | InputOption::VALUE_IS_ARRAY))));
+        $this->assertEquals(array('name' => array('foo', 'bar', 'baz')), $input->getOptions());
     }
 
     public function testGetFirstArgument()