[Console] Fixed #29835: ConfirmationQuestion with default true for answer '0'
This commit is contained in:
parent
a5c52b81f2
commit
a0a7400d6f
@ -53,7 +53,7 @@ class ConfirmationQuestion extends Question
|
||||
return $answer && $answerIsTrue;
|
||||
}
|
||||
|
||||
return !$answer || $answerIsTrue;
|
||||
return '' === $answer || $answerIsTrue;
|
||||
};
|
||||
}
|
||||
}
|
||||
|
@ -0,0 +1,62 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* This file is part of the Symfony package.
|
||||
*
|
||||
* (c) Fabien Potencier <fabien@symfony.com>
|
||||
*
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace Symfony\Component\Console\Tests\Question;
|
||||
|
||||
use PHPUnit\Framework\TestCase;
|
||||
use Symfony\Component\Console\Question\ConfirmationQuestion;
|
||||
|
||||
class ConfirmationQuestionTest extends TestCase
|
||||
{
|
||||
/**
|
||||
* @dataProvider normalizerUsecases
|
||||
*/
|
||||
public function testDefaultRegexUsecases($default, $answers, $expected, $message)
|
||||
{
|
||||
$sut = new ConfirmationQuestion('A question', $default);
|
||||
|
||||
foreach ($answers as $answer) {
|
||||
$normalizer = $sut->getNormalizer();
|
||||
$actual = $normalizer($answer);
|
||||
$this->assertEquals($expected, $actual, sprintf($message, $answer));
|
||||
}
|
||||
}
|
||||
|
||||
public function normalizerUsecases()
|
||||
{
|
||||
return [
|
||||
[
|
||||
true,
|
||||
['y', 'Y', 'yes', 'YES', 'yEs', ''],
|
||||
true,
|
||||
'When default is true, the normalizer must return true for "%s"',
|
||||
],
|
||||
[
|
||||
true,
|
||||
['n', 'N', 'no', 'NO', 'nO', 'foo', '1', '0'],
|
||||
false,
|
||||
'When default is true, the normalizer must return false for "%s"',
|
||||
],
|
||||
[
|
||||
false,
|
||||
['y', 'Y', 'yes', 'YES', 'yEs'],
|
||||
true,
|
||||
'When default is false, the normalizer must return true for "%s"',
|
||||
],
|
||||
[
|
||||
false,
|
||||
['n', 'N', 'no', 'NO', 'nO', 'foo', '1', '0', ''],
|
||||
false,
|
||||
'When default is false, the normalizer must return false for "%s"',
|
||||
],
|
||||
];
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user