diff options
-rw-r--r-- | it.class | 7 | ||||
-rwxr-xr-x | test/it.t | 26 |
2 files changed, 27 insertions, 6 deletions
@@ -901,12 +901,7 @@ static function getopt($usage, $p = array()) foreach (array_slice($_SERVER['argv'], 1) as $arg) { if ($eat) - { - if (it::match('^--?\w', $arg)) # Already next option => Missing argument? - $err = true; - else - $result[array_shift($eat)] = $arg; - } + $result[array_shift($eat)] = $arg; else if ($arg == "--") $noopts = true; else if (!$noopts && ($matches = (array)it::match('^--(\w[\w-]*)(=.*)?', $arg))) @@ -509,3 +509,29 @@ function requesturi($teststring, $expect) it::params2utf8(); is(urldecode($_SERVER['REQUEST_URI']), $expect, "parms2utf8('$expect')"); } + +_getopt(["val"], ['foo' => "val"]); +_getopt(["--", "-val"], ['foo' => "-val"]); +_getopt(["-v", "val"], ['verbose' => true, 'foo' => "val"]); +_getopt(["--verbose", "val"], ['verbose' => true, 'foo' => "val"]); +_getopt(["-vw", "val"], ['verbose' => true, 'werbose' => true, 'foo' => "val"]); +_getopt(["-a", "val1", "val2"], ['arg' => "val1", 'foo' => "val2"]); +_getopt(["--arg", "val1", "val2"], ['arg' => "val1", 'foo' => "val2"]); +_getopt(["--arg=val1", "val2"], ['arg' => "val1", 'foo' => "val2"]); +_getopt(["-va", "val1", "val2"], ['verbose' => true, 'arg' => "val1", 'foo' => "val2"]); +_getopt(["-va", "-val1", "val2"], ['verbose' => true, 'arg' => "-val1", 'foo' => "val2"]); +_getopt(["val1", "val2"], ['args' => ["val2"], 'foo' => 'val1']); + +function _getopt($in, $expect) +{ + $_SERVER['argv'] = array_merge(["cmd.php"], $in); + $opts = it::getopt(" + Usage: test [OPTIONS] FOO [BAR] + -v, --verbose Be verbose + -w, --werbose Be werbose + -a, --arg=ARG Have argument + -b, --brg=ARG Have another arg + "); + + is($opts, ['args' => $expect['args'] ?? []] + $expect); +} |