Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit df84a50

Browse filesBrowse files
committed
[Console] Add another test and some tweaks
1 parent 9fbfe1c commit df84a50
Copy full SHA for df84a50

File tree

Expand file treeCollapse file tree

2 files changed

+31
-32
lines changed
Filter options
Expand file treeCollapse file tree

2 files changed

+31
-32
lines changed

‎src/Symfony/Component/Console/Helper/QuestionHelper.php

Copy file name to clipboardExpand all lines: src/Symfony/Component/Console/Helper/QuestionHelper.php
+27-27Lines changed: 27 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -303,10 +303,10 @@ private function autocomplete(OutputInterface $output, Question $question, $inpu
303303
if ($numMatches > 0 && -1 !== $ofs) {
304304
$ret = $matches[$ofs];
305305
// Echo out remaining chars for current match
306-
$remainingCharacters = substr($ret, strlen(trim($this->mostRecentlyEnteredValue($fullChoice))));
306+
$remainingCharacters = substr($ret, \strlen(trim($this->mostRecentlyEnteredValue($fullChoice))));
307307
$output->write($remainingCharacters);
308308
$fullChoice .= $remainingCharacters;
309-
$i = strlen($fullChoice);
309+
$i = \strlen($fullChoice);
310310
}
311311

312312
if ("\n" === $c) {
@@ -330,9 +330,8 @@ private function autocomplete(OutputInterface $output, Question $question, $inpu
330330

331331
$tempRet = $ret;
332332

333-
if ($question instanceof ChoiceQuestion && $question->isMultiselect())
334-
{
335-
$tempRet = $this->mostRecentlyEnteredValue($ret);
333+
if ($question instanceof ChoiceQuestion && $question->isMultiselect()) {
334+
$tempRet = $this->mostRecentlyEnteredValue($fullChoice);
336335
}
337336

338337
$numMatches = 0;
@@ -353,7 +352,7 @@ private function autocomplete(OutputInterface $output, Question $question, $inpu
353352
// Save cursor position
354353
$output->write("\0337");
355354
// Write highlighted text, complete the partially entered response
356-
$charactersEntered = strlen(trim($this->mostRecentlyEnteredValue($ret)));
355+
$charactersEntered = \strlen(trim($this->mostRecentlyEnteredValue($fullChoice)));
357356
$output->write('<hl>'.OutputFormatter::escapeTrailingBackslash(substr($matches[$ofs], $charactersEntered)).'</hl>');
358357
// Restore cursor position
359358
$output->write("\0338");
@@ -366,27 +365,28 @@ private function autocomplete(OutputInterface $output, Question $question, $inpu
366365
return $fullChoice;
367366
}
368367

369-
/**
370-
* Determine the most recent value the user entered
371-
* @param $ret
372-
* @return string
373-
*/
374-
private function mostRecentlyEnteredValue($ret)
375-
{
376-
$tempRet = $ret;
377-
378-
if (strpos($ret, ',') !== false)
379-
{
380-
$choices = explode(',', $ret);
381-
$lastChoice = trim($choices[count($choices) - 1]);
382-
if (strlen($lastChoice) > 0)
383-
{
384-
$tempRet = $lastChoice;
385-
}
386-
}
387-
388-
return $tempRet;
389-
}
368+
/**
369+
* Determine the most recent value the user entered.
370+
*
371+
* @param $entered
372+
*
373+
* @return string
374+
*/
375+
private function mostRecentlyEnteredValue($entered)
376+
{
377+
$tempEntered = $entered;
378+
379+
if (false !== strpos($entered, ',')) {
380+
$choices = explode(',', $entered);
381+
$lastChoice = trim($choices[\count($choices) - 1]);
382+
383+
if (\strlen($lastChoice) > 0) {
384+
$tempEntered = $lastChoice;
385+
}
386+
}
387+
388+
return $tempEntered;
389+
}
390390

391391
/**
392392
* Gets a hidden response from user.

‎src/Symfony/Component/Console/Tests/Helper/QuestionHelperTest.php

Copy file name to clipboardExpand all lines: src/Symfony/Component/Console/Tests/Helper/QuestionHelperTest.php
+4-5Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1020,15 +1020,13 @@ public function testTraversableAutocomplete()
10201020

10211021
public function testTraversableMultiselectAutocomplete()
10221022
{
1023-
// Test cases:
1024-
// 1) default; 2) Tab single; 3) Traverse and tab multiple; 4) Backspace and traverse multiple; 5) Backspace all
1025-
10261023
// <NEWLINE>
10271024
// F<TAB><NEWLINE>
10281025
// A<3x UP ARROW><TAB>,F<TAB><NEWLINE>
10291026
// F00<BACKSPACE><BACKSPACE>o<TAB>,A<DOWN ARROW>,<SPACE>SecurityBundle<NEWLINE>
1030-
// Acme<TAB> ,<SPACE>As<TAB><29x BACKSPACE>S<TAB><NEWLINE>
1031-
$inputStream = $this->getInputStream("\nF\t\nA\033[A\033[A\033[A\t,F\t\nF00\177\177o\t,A\033[B\t, SecurityBundle\nAcme\t, As\t\177\177\177\177\177\177\177\177\177\177\177\177\177\177\177\177\177\177\177\177\177\177\177\177\177\177\177\177\177S\t\n");
1027+
// Acme<TAB>,<SPACE>As<TAB><29x BACKSPACE>S<TAB><NEWLINE>
1028+
// Ac<TAB>,As<TAB><3x BACKSPACE>d<TAB><NEWLINE>
1029+
$inputStream = $this->getInputStream("\nF\t\nA\033[A\033[A\033[A\t,F\t\nF00\177\177o\t,A\033[B\t, SecurityBundle\nAcme\t, As\t\177\177\177\177\177\177\177\177\177\177\177\177\177\177\177\177\177\177\177\177\177\177\177\177\177\177\177\177\177S\t\nAc\t,As\t\177\177\177d\t\n");
10321030

10331031
$dialog = new QuestionHelper();
10341032
$helperSet = new HelperSet([new FormatterHelper()]);
@@ -1048,6 +1046,7 @@ public function testTraversableMultiselectAutocomplete()
10481046
$this->assertEquals(['AsseticBundle', 'FooBundle'], $dialog->ask($this->createStreamableInputInterfaceMock($inputStream), $this->createOutputInterface(), $question));
10491047
$this->assertEquals(['FooBundle', 'AsseticBundle', 'SecurityBundle'], $dialog->ask($this->createStreamableInputInterfaceMock($inputStream), $this->createOutputInterface(), $question));
10501048
$this->assertEquals(['SecurityBundle'], $dialog->ask($this->createStreamableInputInterfaceMock($inputStream), $this->createOutputInterface(), $question));
1049+
$this->assertEquals(['AcmeDemoBundle', 'AsseticBundle'], $dialog->ask($this->createStreamableInputInterfaceMock($inputStream), $this->createOutputInterface(), $question));
10511050
}
10521051

10531052
protected function getInputStream($input)

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.