From 302d44fb4087aa727d190741fd93ea85c595c0cb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9nald=20Casagraude?= Date: Thu, 11 Apr 2013 00:42:15 +0200 Subject: [PATCH] [Console] fixed handling of "0" input on ask --- src/Symfony/Component/Console/Helper/DialogHelper.php | 4 +++- .../Component/Console/Tests/Helper/DialogHelperTest.php | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/Symfony/Component/Console/Helper/DialogHelper.php b/src/Symfony/Component/Console/Helper/DialogHelper.php index 170abd8886..49fc2c178f 100644 --- a/src/Symfony/Component/Console/Helper/DialogHelper.php +++ b/src/Symfony/Component/Console/Helper/DialogHelper.php @@ -102,7 +102,9 @@ class DialogHelper extends Helper $output->getFormatter()->setStyle('hl', new OutputFormatterStyle('black', 'white')); // Read a keypress - while ($c = fread($inputStream, 1)) { + while (!feof($inputStream)) { + $c = fread($inputStream, 1); + // Backspace Character if ("\177" === $c) { if (0 === $numMatches && 0 !== $i) { diff --git a/src/Symfony/Component/Console/Tests/Helper/DialogHelperTest.php b/src/Symfony/Component/Console/Tests/Helper/DialogHelperTest.php index 12f27005cb..e6418ad710 100644 --- a/src/Symfony/Component/Console/Tests/Helper/DialogHelperTest.php +++ b/src/Symfony/Component/Console/Tests/Helper/DialogHelperTest.php @@ -69,7 +69,8 @@ class DialogHelperTest extends \PHPUnit_Framework_TestCase // Test // // S - $inputStream = $this->getInputStream("Acm\nAc\177\177s\tTest\n\n\033[A\033[A\n\033[A\033[A\033[A\033[A\033[A\tTest\n\033[B\nS\177\177\033[B\033[B\n"); + // F00oo + $inputStream = $this->getInputStream("Acm\nAc\177\177s\tTest\n\n\033[A\033[A\n\033[A\033[A\033[A\033[A\033[A\tTest\n\033[B\nS\177\177\033[B\033[B\nF00\177\177oo\t\n"); $dialog = new DialogHelper(); $dialog->setInputStream($inputStream); @@ -83,6 +84,7 @@ class DialogHelperTest extends \PHPUnit_Framework_TestCase $this->assertEquals('FooBundleTest', $dialog->ask($this->getOutputStream(), 'Please select a bundle', 'FrameworkBundle', $bundles)); $this->assertEquals('AcmeDemoBundle', $dialog->ask($this->getOutputStream(), 'Please select a bundle', 'FrameworkBundle', $bundles)); $this->assertEquals('AsseticBundle', $dialog->ask($this->getOutputStream(), 'Please select a bundle', 'FrameworkBundle', $bundles)); + $this->assertEquals('FooBundle', $dialog->ask($this->getOutputStream(), 'Please select a bundle', 'FrameworkBundle', $bundles)); } public function testAskHiddenResponse()