diff --git a/Completion/CompletionInput.php b/Completion/CompletionInput.php index eda95bef5..368b94507 100644 --- a/Completion/CompletionInput.php +++ b/Completion/CompletionInput.php @@ -109,12 +109,12 @@ public function bind(InputDefinition $definition): void // complete argument value $this->completionType = self::TYPE_ARGUMENT_VALUE; - $arguments = $this->getArguments(); - foreach ($arguments as $argumentName => $argumentValue) { - if (null === $argumentValue) { + foreach ($this->definition->getArguments() as $argumentName => $argument) { + if (!isset($this->arguments[$argumentName])) { break; } + $argumentValue = $this->arguments[$argumentName]; $this->completionName = $argumentName; if (\is_array($argumentValue)) { $this->completionValue = $argumentValue ? $argumentValue[array_key_last($argumentValue)] : null; @@ -124,7 +124,7 @@ public function bind(InputDefinition $definition): void } if ($this->currentIndex >= \count($this->tokens)) { - if (null === $arguments[$argumentName] || $this->definition->getArgument($argumentName)->isArray()) { + if (!isset($this->arguments[$argumentName]) || $this->definition->getArgument($argumentName)->isArray()) { $this->completionName = $argumentName; $this->completionValue = ''; } else { diff --git a/Helper/ProcessHelper.php b/Helper/ProcessHelper.php index 87d3e6539..4ea3d724d 100644 --- a/Helper/ProcessHelper.php +++ b/Helper/ProcessHelper.php @@ -31,8 +31,6 @@ class ProcessHelper extends Helper * @param array|Process $cmd An instance of Process or an array of the command and arguments * @param callable|null $callback A PHP callback to run whenever there is some * output available on STDOUT or STDERR - * - * @return Process */ public function run(OutputInterface $output, $cmd, string $error = null, callable $callback = null, int $verbosity = OutputInterface::VERBOSITY_VERY_VERBOSE): Process { @@ -96,8 +94,6 @@ public function run(OutputInterface $output, $cmd, string $error = null, callabl * @param callable|null $callback A PHP callback to run whenever there is some * output available on STDOUT or STDERR * - * @return Process - * * @throws ProcessFailedException * * @see run() diff --git a/Tests/ApplicationTest.php b/Tests/ApplicationTest.php index 9f9620739..fe1f27fcc 100644 --- a/Tests/ApplicationTest.php +++ b/Tests/ApplicationTest.php @@ -883,6 +883,9 @@ public function testRenderExceptionLineBreaks() $this->assertStringMatchesFormatFile(self::$fixturesPath.'/application_renderexception_linebreaks.txt', $tester->getDisplay(true), '->renderException() keep multiple line breaks'); } + /** + * @group transient-on-windows + */ public function testRenderAnonymousException() { $application = new Application(); @@ -906,6 +909,9 @@ public function testRenderAnonymousException() $this->assertStringContainsString('Dummy type "class@anonymous" is invalid.', $tester->getDisplay(true)); } + /** + * @group transient-on-windows + */ public function testRenderExceptionStackTraceContainsRootException() { $application = new Application(); diff --git a/Tests/Command/HelpCommandTest.php b/Tests/Command/HelpCommandTest.php index bf0ab9720..0e8a7f4f7 100644 --- a/Tests/Command/HelpCommandTest.php +++ b/Tests/Command/HelpCommandTest.php @@ -92,7 +92,7 @@ public function provideCompletionSuggestions() yield 'nothing' => [ [''], - [], + ['completion', 'help', 'list', 'foo:bar'], ]; yield 'command_name' => [ diff --git a/Tests/Completion/CompletionInputTest.php b/Tests/Completion/CompletionInputTest.php index f83a0f898..ee370076c 100644 --- a/Tests/Completion/CompletionInputTest.php +++ b/Tests/Completion/CompletionInputTest.php @@ -97,6 +97,20 @@ public function provideBindWithLastArrayArgumentData() yield [CompletionInput::fromTokens(['bin/console', 'symfony', 'sen'], 2), 'sen']; } + public function testBindArgumentWithDefault() + { + $definition = new InputDefinition([ + new InputArgument('arg-with-default', InputArgument::OPTIONAL, '', 'default'), + ]); + + $input = CompletionInput::fromTokens(['bin/console'], 1); + $input->bind($definition); + + $this->assertEquals(CompletionInput::TYPE_ARGUMENT_VALUE, $input->getCompletionType(), 'Unexpected type'); + $this->assertEquals('arg-with-default', $input->getCompletionName(), 'Unexpected name'); + $this->assertEquals('', $input->getCompletionValue(), 'Unexpected value'); + } + /** * @dataProvider provideFromStringData */