|
12 | 12 | use InvalidArgumentException;
|
13 | 13 | use Toolkit\PFlag\Exception\FlagException;
|
14 | 14 | use Toolkit\PFlag\FlagsParser;
|
| 15 | +use Toolkit\PFlag\FlagType; |
15 | 16 | use function get_class;
|
16 | 17 |
|
17 | 18 | /**
|
@@ -138,11 +139,21 @@ private function doCheckStopOnTwoHl(FlagsParser $fs): void
|
138 | 139 | $ok = $fs->parse(['--name', 'inhere', 'val0']);
|
139 | 140 | $this->assertTrue($ok);
|
140 | 141 | $this->assertSame('val0', $fs->getArg('arg0'));
|
141 |
| - |
142 | 142 | $fs->resetResults();
|
| 143 | + |
143 | 144 | $ok = $fs->parse(['--name', 'inhere', '--', '--val0']);
|
144 | 145 | $this->assertTrue($ok);
|
145 | 146 | $this->assertSame('--val0', $fs->getArg('arg0'));
|
| 147 | + $fs->resetResults(); |
| 148 | + |
| 149 | + $ok = $fs->parse(["--", "-e", "dev", "-v", "port=3455"]); |
| 150 | + $this->assertTrue($ok); |
| 151 | + $this->assertNotEmpty($fs->getArgs()); |
| 152 | + $this->assertSame('-e', $fs->getArg('arg0')); |
| 153 | + |
| 154 | + $otherArgs = $fs->getRemainArgs(); |
| 155 | + $this->assertArrayHasValue('port=3455', $otherArgs); |
| 156 | + $fs->resetResults(); |
146 | 157 | }
|
147 | 158 |
|
148 | 159 | public function testStopOnFirstArg(): void
|
@@ -404,4 +415,34 @@ private function doCheckSetOptAndSetArg($fs): void
|
404 | 415 | $this->assertSame(FlagException::class, get_class($e));
|
405 | 416 | $this->assertSame("flag argument 'not-exist-arg' is undefined", $e->getMessage());
|
406 | 417 | }
|
| 418 | + |
| 419 | + public function testParse_opt_isKV(): void |
| 420 | + { |
| 421 | + foreach ($this->createParsers() as $fs) { |
| 422 | + $this->doTestParse_opt_isKV($fs); |
| 423 | + } |
| 424 | + } |
| 425 | + |
| 426 | + public function doTestParse_opt_isKV(FlagsParser $fs): void |
| 427 | + { |
| 428 | + $fs->addOptsByRules([ |
| 429 | + 'env, e' => [ |
| 430 | + 'type' => FlagType::STRING, |
| 431 | + 'required' => true, |
| 432 | + ], |
| 433 | + 'vars,var,v' => [ |
| 434 | + 'type' => FlagType::ARRAY, |
| 435 | + 'desc' => 'can append some extra vars, format: KEY=VALUE', |
| 436 | + ], |
| 437 | + ]); |
| 438 | + |
| 439 | + $flags = ['-e', 'dev', '--var', 'key0=val0', '-v', 'port=3445']; |
| 440 | + $fs->parse($flags); |
| 441 | + |
| 442 | + $this->assertNotEmpty($fs->getOpts()); |
| 443 | + $this->assertNotEmpty($fs->getInfo(true)); |
| 444 | + $this->assertEquals('vars', $fs->resolveAlias('v')); |
| 445 | + $this->assertEquals('vars', $fs->resolveAlias('var')); |
| 446 | + $this->assertEquals(['key0=val0', 'port=3445'], $fs->getOpt('vars')); |
| 447 | + } |
407 | 448 | }
|
0 commit comments