summaryrefslogtreecommitdiff
path: root/vendor/symfony/console/Tests/Input/ArgvInputTest.php
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/symfony/console/Tests/Input/ArgvInputTest.php')
-rw-r--r--vendor/symfony/console/Tests/Input/ArgvInputTest.php125
1 files changed, 111 insertions, 14 deletions
diff --git a/vendor/symfony/console/Tests/Input/ArgvInputTest.php b/vendor/symfony/console/Tests/Input/ArgvInputTest.php
index d2c540e6..01d6e4b9 100644
--- a/vendor/symfony/console/Tests/Input/ArgvInputTest.php
+++ b/vendor/symfony/console/Tests/Input/ArgvInputTest.php
@@ -11,12 +11,13 @@
namespace Symfony\Component\Console\Tests\Input;
+use PHPUnit\Framework\TestCase;
use Symfony\Component\Console\Input\ArgvInput;
use Symfony\Component\Console\Input\InputDefinition;
use Symfony\Component\Console\Input\InputArgument;
use Symfony\Component\Console\Input\InputOption;
-class ArgvInputTest extends \PHPUnit_Framework_TestCase
+class ArgvInputTest extends TestCase
{
public function testConstructor()
{
@@ -47,7 +48,7 @@ class ArgvInputTest extends \PHPUnit_Framework_TestCase
$input = new ArgvInput($input);
$input->bind(new InputDefinition($options));
- $this->assertEquals($expectedOptions, $input->getOptions(), $message);
+ $this->assertSame($expectedOptions, $input->getOptions(), $message);
}
public function provideOptions()
@@ -72,6 +73,36 @@ class ArgvInputTest extends \PHPUnit_Framework_TestCase
'->parse() parses long options with a required value (with a space separator)',
),
array(
+ array('cli.php', '--foo='),
+ array(new InputOption('foo', 'f', InputOption::VALUE_OPTIONAL)),
+ array('foo' => ''),
+ '->parse() parses long options with optional value which is empty (with a = separator) as empty string',
+ ),
+ array(
+ array('cli.php', '--foo=', 'bar'),
+ array(new InputOption('foo', 'f', InputOption::VALUE_OPTIONAL), new InputArgument('name', InputArgument::REQUIRED)),
+ array('foo' => ''),
+ '->parse() parses long options with optional value without value specified or an empty string (with a = separator) followed by an argument as empty string',
+ ),
+ array(
+ array('cli.php', 'bar', '--foo'),
+ array(new InputOption('foo', 'f', InputOption::VALUE_OPTIONAL), new InputArgument('name', InputArgument::REQUIRED)),
+ array('foo' => null),
+ '->parse() parses long options with optional value which is empty (with a = separator) preceded by an argument',
+ ),
+ array(
+ array('cli.php', '--foo', '', 'bar'),
+ array(new InputOption('foo', 'f', InputOption::VALUE_OPTIONAL), new InputArgument('name', InputArgument::REQUIRED)),
+ array('foo' => ''),
+ '->parse() parses long options with optional value which is empty as empty string even followed by an argument',
+ ),
+ array(
+ array('cli.php', '--foo'),
+ array(new InputOption('foo', 'f', InputOption::VALUE_OPTIONAL)),
+ array('foo' => null),
+ '->parse() parses long options with optional value specified with no separator and no value as null',
+ ),
+ array(
array('cli.php', '-f'),
array(new InputOption('foo', 'f')),
array('foo' => true),
@@ -151,7 +182,12 @@ class ArgvInputTest extends \PHPUnit_Framework_TestCase
*/
public function testInvalidInput($argv, $definition, $expectedExceptionMessage)
{
- $this->setExpectedException('RuntimeException', $expectedExceptionMessage);
+ if (method_exists($this, 'expectException')) {
+ $this->expectException('RuntimeException');
+ $this->expectExceptionMessage($expectedExceptionMessage);
+ } else {
+ $this->setExpectedException('RuntimeException', $expectedExceptionMessage);
+ }
$input = new ArgvInput($argv);
$input->bind($definition);
@@ -183,7 +219,17 @@ class ArgvInputTest extends \PHPUnit_Framework_TestCase
array(
array('cli.php', 'foo', 'bar'),
new InputDefinition(),
- 'Too many arguments.',
+ 'No arguments expected, got "foo".',
+ ),
+ array(
+ array('cli.php', 'foo', 'bar'),
+ new InputDefinition(array(new InputArgument('number'))),
+ 'Too many arguments, expected arguments "number".',
+ ),
+ array(
+ array('cli.php', 'foo', 'bar', 'zzz'),
+ new InputDefinition(array(new InputArgument('number'), new InputArgument('county'))),
+ 'Too many arguments, expected arguments "number" "county".',
),
array(
array('cli.php', '--foo'),
@@ -224,14 +270,14 @@ class ArgvInputTest extends \PHPUnit_Framework_TestCase
$input = new ArgvInput(array('cli.php', '--name=foo', '--name=bar', '--name='));
$input->bind(new InputDefinition(array(new InputOption('name', null, InputOption::VALUE_OPTIONAL | InputOption::VALUE_IS_ARRAY))));
- $this->assertSame(array('name' => array('foo', 'bar', null)), $input->getOptions(), '->parse() parses empty array options as null ("--option=value" syntax)');
+ $this->assertSame(array('name' => array('foo', 'bar', '')), $input->getOptions(), '->parse() parses empty array options as null ("--option=value" syntax)');
$input = new ArgvInput(array('cli.php', '--name', 'foo', '--name', 'bar', '--name', '--anotherOption'));
$input->bind(new InputDefinition(array(
new InputOption('name', null, InputOption::VALUE_OPTIONAL | InputOption::VALUE_IS_ARRAY),
new InputOption('anotherOption', null, InputOption::VALUE_NONE),
)));
- $this->assertSame(array('name' => array('foo', 'bar', null), 'anotherOption' => true), $input->getOptions(), '->parse() parses empty array options as null ("--option value" syntax)');
+ $this->assertSame(array('name' => array('foo', 'bar', null), 'anotherOption' => true), $input->getOptions(), '->parse() parses empty array options ("--option value" syntax)');
}
public function testParseNegativeNumberAfterDoubleDash()
@@ -268,6 +314,12 @@ class ArgvInputTest extends \PHPUnit_Framework_TestCase
$input = new ArgvInput(array('cli.php', '-f', 'foo'));
$this->assertTrue($input->hasParameterOption('-f'), '->hasParameterOption() returns true if the given short option is in the raw input');
+ $input = new ArgvInput(array('cli.php', '-fh'));
+ $this->assertTrue($input->hasParameterOption('-fh'), '->hasParameterOption() returns true if the given short option is in the raw input');
+
+ $input = new ArgvInput(array('cli.php', '-e=test'));
+ $this->assertFalse($input->hasParameterOption('-s'), '->hasParameterOption() returns true if the given short option is in the raw input');
+
$input = new ArgvInput(array('cli.php', '--foo', 'foo'));
$this->assertTrue($input->hasParameterOption('--foo'), '->hasParameterOption() returns true if the given short option is in the raw input');
@@ -278,6 +330,21 @@ class ArgvInputTest extends \PHPUnit_Framework_TestCase
$this->assertTrue($input->hasParameterOption('--foo'), '->hasParameterOption() returns true if the given option with provided value is in the raw input');
}
+ public function testHasParameterOptionOnlyOptions()
+ {
+ $input = new ArgvInput(array('cli.php', '-f', 'foo'));
+ $this->assertTrue($input->hasParameterOption('-f', true), '->hasParameterOption() returns true if the given short option is in the raw input');
+
+ $input = new ArgvInput(array('cli.php', '--foo', '--', 'foo'));
+ $this->assertTrue($input->hasParameterOption('--foo', true), '->hasParameterOption() returns true if the given long option is in the raw input');
+
+ $input = new ArgvInput(array('cli.php', '--foo=bar', 'foo'));
+ $this->assertTrue($input->hasParameterOption('--foo', true), '->hasParameterOption() returns true if the given long option with provided value is in the raw input');
+
+ $input = new ArgvInput(array('cli.php', '--', '--foo'));
+ $this->assertFalse($input->hasParameterOption('--foo', true), '->hasParameterOption() returns false if the given option is in the raw input but after an end of options signal');
+ }
+
public function testToString()
{
$input = new ArgvInput(array('cli.php', '-f', 'foo'));
@@ -290,21 +357,25 @@ class ArgvInputTest extends \PHPUnit_Framework_TestCase
/**
* @dataProvider provideGetParameterOptionValues
*/
- public function testGetParameterOptionEqualSign($argv, $key, $expected)
+ public function testGetParameterOptionEqualSign($argv, $key, $onlyParams, $expected)
{
$input = new ArgvInput($argv);
- $this->assertEquals($expected, $input->getParameterOption($key), '->getParameterOption() returns the expected value');
+ $this->assertEquals($expected, $input->getParameterOption($key, false, $onlyParams), '->getParameterOption() returns the expected value');
}
public function provideGetParameterOptionValues()
{
return array(
- array(array('app/console', 'foo:bar', '-e', 'dev'), '-e', 'dev'),
- array(array('app/console', 'foo:bar', '--env=dev'), '--env', 'dev'),
- array(array('app/console', 'foo:bar', '-e', 'dev'), array('-e', '--env'), 'dev'),
- array(array('app/console', 'foo:bar', '--env=dev'), array('-e', '--env'), 'dev'),
- array(array('app/console', 'foo:bar', '--env=dev', '--en=1'), array('--en'), '1'),
- array(array('app/console', 'foo:bar', '--env=dev', '', '--en=1'), array('--en'), '1'),
+ array(array('app/console', 'foo:bar', '-e', 'dev'), '-e', false, 'dev'),
+ array(array('app/console', 'foo:bar', '--env=dev'), '--env', false, 'dev'),
+ array(array('app/console', 'foo:bar', '-e', 'dev'), array('-e', '--env'), false, 'dev'),
+ array(array('app/console', 'foo:bar', '--env=dev'), array('-e', '--env'), false, 'dev'),
+ array(array('app/console', 'foo:bar', '--env=dev', '--en=1'), array('--en'), false, '1'),
+ array(array('app/console', 'foo:bar', '--env=dev', '', '--en=1'), array('--en'), false, '1'),
+ array(array('app/console', 'foo:bar', '--env', 'val'), '--env', false, 'val'),
+ array(array('app/console', 'foo:bar', '--env', 'val', '--dummy'), '--env', false, 'val'),
+ array(array('app/console', 'foo:bar', '--', '--env=dev'), '--env', false, 'dev'),
+ array(array('app/console', 'foo:bar', '--', '--env=dev'), '--env', true, false),
);
}
@@ -314,4 +385,30 @@ class ArgvInputTest extends \PHPUnit_Framework_TestCase
$input->bind(new InputDefinition(array(new InputArgument('file'))));
$this->assertEquals(array('file' => '-'), $input->getArguments(), '->parse() parses single dash as an argument');
}
+
+ public function testParseOptionWithValueOptionalGivenEmptyAndRequiredArgument()
+ {
+ $input = new ArgvInput(array('cli.php', '--foo=', 'bar'));
+ $input->bind(new InputDefinition(array(new InputOption('foo', 'f', InputOption::VALUE_OPTIONAL), new InputArgument('name', InputArgument::REQUIRED))));
+ $this->assertEquals(array('foo' => null), $input->getOptions(), '->parse() parses optional options with empty value as null');
+ $this->assertEquals(array('name' => 'bar'), $input->getArguments(), '->parse() parses required arguments');
+
+ $input = new ArgvInput(array('cli.php', '--foo=0', 'bar'));
+ $input->bind(new InputDefinition(array(new InputOption('foo', 'f', InputOption::VALUE_OPTIONAL), new InputArgument('name', InputArgument::REQUIRED))));
+ $this->assertEquals(array('foo' => '0'), $input->getOptions(), '->parse() parses optional options with empty value as null');
+ $this->assertEquals(array('name' => 'bar'), $input->getArguments(), '->parse() parses required arguments');
+ }
+
+ public function testParseOptionWithValueOptionalGivenEmptyAndOptionalArgument()
+ {
+ $input = new ArgvInput(array('cli.php', '--foo=', 'bar'));
+ $input->bind(new InputDefinition(array(new InputOption('foo', 'f', InputOption::VALUE_OPTIONAL), new InputArgument('name', InputArgument::OPTIONAL))));
+ $this->assertEquals(array('foo' => null), $input->getOptions(), '->parse() parses optional options with empty value as null');
+ $this->assertEquals(array('name' => 'bar'), $input->getArguments(), '->parse() parses optional arguments');
+
+ $input = new ArgvInput(array('cli.php', '--foo=0', 'bar'));
+ $input->bind(new InputDefinition(array(new InputOption('foo', 'f', InputOption::VALUE_OPTIONAL), new InputArgument('name', InputArgument::OPTIONAL))));
+ $this->assertEquals(array('foo' => '0'), $input->getOptions(), '->parse() parses optional options with empty value as null');
+ $this->assertEquals(array('name' => 'bar'), $input->getArguments(), '->parse() parses optional arguments');
+ }
}