vendor/symfony/src/Symfony/Component/Console/Tester/CommandTester.php
changeset 0 7f95f8617b0b
equal deleted inserted replaced
-1:000000000000 0:7f95f8617b0b
       
     1 <?php
       
     2 
       
     3 /*
       
     4  * This file is part of the Symfony package.
       
     5  *
       
     6  * (c) Fabien Potencier <fabien@symfony.com>
       
     7  *
       
     8  * For the full copyright and license information, please view the LICENSE
       
     9  * file that was distributed with this source code.
       
    10  */
       
    11 
       
    12 namespace Symfony\Component\Console\Tester;
       
    13 
       
    14 use Symfony\Component\Console\Command\Command;
       
    15 use Symfony\Component\Console\Input\ArrayInput;
       
    16 use Symfony\Component\Console\Output\StreamOutput;
       
    17 
       
    18 /**
       
    19  * @author Fabien Potencier <fabien@symfony.com>
       
    20  */
       
    21 class CommandTester
       
    22 {
       
    23     private $command;
       
    24     private $input;
       
    25     private $output;
       
    26 
       
    27     /**
       
    28      * Constructor.
       
    29      *
       
    30      * @param Command $command A Command instance to test.
       
    31      */
       
    32     public function __construct(Command $command)
       
    33     {
       
    34         $this->command = $command;
       
    35     }
       
    36 
       
    37     /**
       
    38      * Executes the command.
       
    39      *
       
    40      * Available options:
       
    41      *
       
    42      *  * interactive: Sets the input interactive flag
       
    43      *  * decorated:   Sets the output decorated flag
       
    44      *  * verbosity:   Sets the output verbosity flag
       
    45      *
       
    46      * @param array $input   An array of arguments and options
       
    47      * @param array $options An array of options
       
    48      *
       
    49      * @return integer The command exit code
       
    50      */
       
    51     public function execute(array $input, array $options = array())
       
    52     {
       
    53         $this->input = new ArrayInput($input);
       
    54         if (isset($options['interactive'])) {
       
    55             $this->input->setInteractive($options['interactive']);
       
    56         }
       
    57 
       
    58         $this->output = new StreamOutput(fopen('php://memory', 'w', false));
       
    59         if (isset($options['decorated'])) {
       
    60             $this->output->setDecorated($options['decorated']);
       
    61         }
       
    62         if (isset($options['verbosity'])) {
       
    63             $this->output->setVerbosity($options['verbosity']);
       
    64         }
       
    65 
       
    66         return $this->command->run($this->input, $this->output);
       
    67     }
       
    68 
       
    69     /**
       
    70      * Gets the display returned by the last execution of the command.
       
    71      *
       
    72      * @return string The display
       
    73      */
       
    74     public function getDisplay()
       
    75     {
       
    76         rewind($this->output->getStream());
       
    77 
       
    78         return stream_get_contents($this->output->getStream());
       
    79     }
       
    80 
       
    81     /**
       
    82      * Gets the input instance used by the last execution of the command.
       
    83      *
       
    84      * @return InputInterface The current input instance
       
    85      */
       
    86     public function getInput()
       
    87     {
       
    88         return $this->input;
       
    89     }
       
    90 
       
    91     /**
       
    92      * Gets the output instance used by the last execution of the command.
       
    93      *
       
    94      * @return OutputInterface The current output instance
       
    95      */
       
    96     public function getOutput()
       
    97     {
       
    98         return $this->output;
       
    99     }
       
   100 }