From c01812404719eab54c172f581a14aa82ec93205b Mon Sep 17 00:00:00 2001 From: Daniel Jakob Date: Tue, 10 Dec 2019 15:06:01 +0100 Subject: [PATCH] Ensure php7.4 compatibility --- src/Options.php | 4 ++-- tests/OptionsTest.php | 43 +++++++++++++++++++++++++++---------------- 2 files changed, 29 insertions(+), 18 deletions(-) diff --git a/src/Options.php b/src/Options.php index 76733aa..74dae2b 100644 --- a/src/Options.php +++ b/src/Options.php @@ -216,13 +216,13 @@ public function parseOptions() } // first non-option - if ($arg{0} != '-') { + if ($arg[0] != '-') { $non_opts = array_merge($non_opts, array_slice($this->args, $i)); break; } // long option - if (strlen($arg) > 1 && $arg{1} == '-') { + if (strlen($arg) > 1 && $arg[1] === '-') { $arg = explode('=', substr($arg, 2), 2); $opt = array_shift($arg); $val = array_shift($arg); diff --git a/tests/OptionsTest.php b/tests/OptionsTest.php index 47d440b..8dc24c3 100644 --- a/tests/OptionsTest.php +++ b/tests/OptionsTest.php @@ -11,30 +11,41 @@ class Options extends \splitbrain\phpcli\Options class OptionsTest extends \PHPUnit_Framework_TestCase { - function test_simpleshort() - { + /** + * @dataProvider optionDataProvider + * + * @param string $option + * @param string $value + * @param string $argument + */ + function test_optionvariants( + $option, + $value, + $argument + ) { $options = new Options(); $options->registerOption('exclude', 'exclude files', 'x', 'file'); - $options->args = array('-x', 'foo', 'bang'); + $options->args = array($option, $value, $argument); $options->parseOptions(); - $this->assertEquals('foo', $options->getOpt('exclude')); - $this->assertEquals(array('bang'), $options->args); + $this->assertEquals($value, $options->getOpt('exclude')); + $this->assertEquals(array($argument), $options->args); $this->assertFalse($options->getOpt('nothing')); } - function test_simplelong1() - { - $options = new Options(); - $options->registerOption('exclude', 'exclude files', 'x', 'file'); - - $options->args = array('--exclude', 'foo', 'bang'); - $options->parseOptions(); - - $this->assertEquals('foo', $options->getOpt('exclude')); - $this->assertEquals(array('bang'), $options->args); - $this->assertFalse($options->getOpt('nothing')); + /** + * @return array + */ + public function optionDataProvider() { + return array( + array('-x', 'foo', 'bang'), + array('--exclude', 'foo', 'bang'), + array('-x', 'foo-bar', 'bang'), + array('--exclude', 'foo-bar', 'bang'), + array('-x', 'foo', 'bang--bang'), + array('--exclude', 'foo', 'bang--bang'), + ); } function test_simplelong2()