From 02c6ec4f298d4c04a03c8679d475e72565eb0abd Mon Sep 17 00:00:00 2001 From: blanchonvincent Date: Sun, 30 Nov 2014 14:01:31 +0100 Subject: [PATCH 1/2] Add method to know if an option has been parsed --- src/Symfony/Component/Console/Input/Input.php | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/Symfony/Component/Console/Input/Input.php b/src/Symfony/Component/Console/Input/Input.php index 494dd4220f692..3ea0ccfc29392 100644 --- a/src/Symfony/Component/Console/Input/Input.php +++ b/src/Symfony/Component/Console/Input/Input.php @@ -200,6 +200,18 @@ public function setOption($name, $value) $this->options[$name] = $value; } + /** + * Returns true if an InputOption object exists by name in the command line arguments. + * + * @param string $name The InputOption name + * + * @return bool true if the InputOption object exists, false otherwise + */ + public function hasParsedOption($name) + { + return array_key_exists($name, $this->options); + } + /** * Returns true if an InputOption object exists by name. * From 9999e0ccd135d47906222d1d31703f5d1dc1aad1 Mon Sep 17 00:00:00 2001 From: blanchonvincent Date: Sun, 30 Nov 2014 14:01:46 +0100 Subject: [PATCH 2/2] Add tests --- .../Console/Tests/Input/ArgvInputTest.php | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/src/Symfony/Component/Console/Tests/Input/ArgvInputTest.php b/src/Symfony/Component/Console/Tests/Input/ArgvInputTest.php index 451b108179a46..2edd26899858d 100644 --- a/src/Symfony/Component/Console/Tests/Input/ArgvInputTest.php +++ b/src/Symfony/Component/Console/Tests/Input/ArgvInputTest.php @@ -278,6 +278,24 @@ public function testHasParameterOption() $this->assertTrue($input->hasParameterOption('--foo'), '->hasParameterOption() returns true if the given option with provided value is in the raw input'); } + public function testGetParameterOption() + { + $input = new ArgvInput(array('cli.php', '--foo')); + $input->bind(new InputDefinition(array(new InputOption('foo', null, InputOption::VALUE_OPTIONAL, 'foo option', 'value')))); + $this->assertEquals('value', $input->getOption('foo')); + $this->assertTrue($input->hasParsedOption('foo')); + + $input = new ArgvInput(array('cli.php', '--foo')); + $input->bind(new InputDefinition(array(new InputOption('foo', null, InputOption::VALUE_OPTIONAL, 'foo option')))); + $this->assertEquals(null, $input->getOption('foo')); + $this->assertTrue($input->hasParsedOption('foo')); + + $input = new ArgvInput(array('cli.php')); + $input->bind(new InputDefinition(array(new InputOption('foo', null, InputOption::VALUE_OPTIONAL, 'foo option')))); + $this->assertEquals(null, $input->getOption('foo')); + $this->assertFalse($input->hasParsedOption('foo')); + } + public function testToString() { $input = new ArgvInput(array('cli.php', '-f', 'foo'));