Augmentation vers version 3.3.0
This commit is contained in:
41
vendor/symfony/console/Tester/CommandTester.php
vendored
41
vendor/symfony/console/Tester/CommandTester.php
vendored
@@ -21,12 +21,14 @@ use Symfony\Component\Console\Output\StreamOutput;
|
||||
* Eases the testing of console commands.
|
||||
*
|
||||
* @author Fabien Potencier <fabien@symfony.com>
|
||||
* @author Robin Chalas <robin.chalas@gmail.com>
|
||||
*/
|
||||
class CommandTester
|
||||
{
|
||||
private $command;
|
||||
private $input;
|
||||
private $output;
|
||||
private $inputs = [];
|
||||
private $statusCode;
|
||||
|
||||
public function __construct(Command $command)
|
||||
@@ -48,7 +50,7 @@ class CommandTester
|
||||
*
|
||||
* @return int The command exit code
|
||||
*/
|
||||
public function execute(array $input, array $options = array())
|
||||
public function execute(array $input, array $options = [])
|
||||
{
|
||||
// set the command name automatically if the application requires
|
||||
// this argument and no command name was passed
|
||||
@@ -56,10 +58,13 @@ class CommandTester
|
||||
&& (null !== $application = $this->command->getApplication())
|
||||
&& $application->getDefinition()->hasArgument('command')
|
||||
) {
|
||||
$input = array_merge(array('command' => $this->command->getName()), $input);
|
||||
$input = array_merge(['command' => $this->command->getName()], $input);
|
||||
}
|
||||
|
||||
$this->input = new ArrayInput($input);
|
||||
// Use an in-memory input stream even if no inputs are set so that QuestionHelper::ask() does not rely on the blocking STDIN.
|
||||
$this->input->setStream(self::createStream($this->inputs));
|
||||
|
||||
if (isset($options['interactive'])) {
|
||||
$this->input->setInteractive($options['interactive']);
|
||||
}
|
||||
@@ -82,6 +87,10 @@ class CommandTester
|
||||
*/
|
||||
public function getDisplay($normalize = false)
|
||||
{
|
||||
if (null === $this->output) {
|
||||
throw new \RuntimeException('Output not initialized, did you execute the command before requesting the display?');
|
||||
}
|
||||
|
||||
rewind($this->output->getStream());
|
||||
|
||||
$display = stream_get_contents($this->output->getStream());
|
||||
@@ -122,4 +131,32 @@ class CommandTester
|
||||
{
|
||||
return $this->statusCode;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the user inputs.
|
||||
*
|
||||
* @param array $inputs An array of strings representing each input
|
||||
* passed to the command input stream
|
||||
*
|
||||
* @return CommandTester
|
||||
*/
|
||||
public function setInputs(array $inputs)
|
||||
{
|
||||
$this->inputs = $inputs;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
private static function createStream(array $inputs)
|
||||
{
|
||||
$stream = fopen('php://memory', 'r+', false);
|
||||
|
||||
foreach ($inputs as $input) {
|
||||
fwrite($stream, $input.PHP_EOL);
|
||||
}
|
||||
|
||||
rewind($stream);
|
||||
|
||||
return $stream;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user