[Console] Fix an autocompletion question helper issue with non-sequentially indexed choices
This commit is contained in:
parent
a1c95f79d6
commit
9c3247cfd4
@ -135,8 +135,8 @@ class Question
|
|||||||
*/
|
*/
|
||||||
public function setAutocompleterValues($values)
|
public function setAutocompleterValues($values)
|
||||||
{
|
{
|
||||||
if (is_array($values) && $this->isAssoc($values)) {
|
if (is_array($values)) {
|
||||||
$values = array_merge(array_keys($values), array_values($values));
|
$values = $this->isAssoc($values) ? array_merge(array_keys($values), array_values($values)) : array_values($values);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (null !== $values && !is_array($values)) {
|
if (null !== $values && !is_array($values)) {
|
||||||
|
@ -135,6 +135,26 @@ class QuestionHelperTest extends \PHPUnit_Framework_TestCase
|
|||||||
$this->assertEquals('FooBundle', $dialog->ask($this->createInputInterfaceMock(), $this->createOutputInterface(), $question));
|
$this->assertEquals('FooBundle', $dialog->ask($this->createInputInterfaceMock(), $this->createOutputInterface(), $question));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function testAskWithAutocompleteWithNonSequentialKeys()
|
||||||
|
{
|
||||||
|
if (!$this->hasSttyAvailable()) {
|
||||||
|
$this->markTestSkipped('`stty` is required to test autocomplete functionality');
|
||||||
|
}
|
||||||
|
|
||||||
|
// <UP ARROW><UP ARROW><NEWLINE><DOWN ARROW><DOWN ARROW><NEWLINE>
|
||||||
|
$inputStream = $this->getInputStream("\033[A\033[A\n\033[B\033[B\n");
|
||||||
|
|
||||||
|
$dialog = new QuestionHelper();
|
||||||
|
$dialog->setInputStream($inputStream);
|
||||||
|
$dialog->setHelperSet(new HelperSet(array(new FormatterHelper())));
|
||||||
|
|
||||||
|
$question = new ChoiceQuestion('Please select a bundle', array(1 => 'AcmeDemoBundle', 4 => 'AsseticBundle'));
|
||||||
|
$question->setMaxAttempts(1);
|
||||||
|
|
||||||
|
$this->assertEquals('AcmeDemoBundle', $dialog->ask($this->createInputInterfaceMock(), $this->createOutputInterface(), $question));
|
||||||
|
$this->assertEquals('AsseticBundle', $dialog->ask($this->createInputInterfaceMock(), $this->createOutputInterface(), $question));
|
||||||
|
}
|
||||||
|
|
||||||
public function testAskHiddenResponse()
|
public function testAskHiddenResponse()
|
||||||
{
|
{
|
||||||
if ('\\' === DIRECTORY_SEPARATOR) {
|
if ('\\' === DIRECTORY_SEPARATOR) {
|
||||||
|
Reference in New Issue
Block a user