radarrplexorganizrnginxsonarrdashboardembycouchpotatonzbgetbookmarkapplication-dashboardmuximuxlandingpagestartpagelandinghtpcserverhomepagesabnzbdheimdall
		
		
		
		
			You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							177 lines
						
					
					
						
							5.4 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							177 lines
						
					
					
						
							5.4 KiB
						
					
					
				| <?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\Tester; | |
| 
 | |
| use Symfony\Component\Console\Input\InputInterface; | |
| use Symfony\Component\Console\Output\ConsoleOutput; | |
| use Symfony\Component\Console\Output\OutputInterface; | |
| use Symfony\Component\Console\Output\StreamOutput; | |
| 
 | |
| /** | |
|  * @author Amrouche Hamza <hamza.simperfit@gmail.com> | |
|  */ | |
| trait TesterTrait | |
| { | |
|     /** @var StreamOutput */ | |
|     private $output; | |
|     private $inputs = []; | |
|     private $captureStreamsIndependently = false; | |
| 
 | |
|     /** | |
|      * Gets the display returned by the last execution of the command or application. | |
|      * | |
|      * @param bool $normalize Whether to normalize end of lines to \n or not | |
|      * | |
|      * @return string The display | |
|      */ | |
|     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()); | |
| 
 | |
|         if ($normalize) { | |
|             $display = str_replace(PHP_EOL, "\n", $display); | |
|         } | |
| 
 | |
|         return $display; | |
|     } | |
| 
 | |
|     /** | |
|      * Gets the output written to STDERR by the application. | |
|      * | |
|      * @param bool $normalize Whether to normalize end of lines to \n or not | |
|      * | |
|      * @return string | |
|      */ | |
|     public function getErrorOutput($normalize = false) | |
|     { | |
|         if (!$this->captureStreamsIndependently) { | |
|             throw new \LogicException('The error output is not available when the tester is run without "capture_stderr_separately" option set.'); | |
|         } | |
| 
 | |
|         rewind($this->output->getErrorOutput()->getStream()); | |
| 
 | |
|         $display = stream_get_contents($this->output->getErrorOutput()->getStream()); | |
| 
 | |
|         if ($normalize) { | |
|             $display = str_replace(PHP_EOL, "\n", $display); | |
|         } | |
| 
 | |
|         return $display; | |
|     } | |
| 
 | |
|     /** | |
|      * Gets the input instance used by the last execution of the command or application. | |
|      * | |
|      * @return InputInterface The current input instance | |
|      */ | |
|     public function getInput() | |
|     { | |
|         return $this->input; | |
|     } | |
| 
 | |
|     /** | |
|      * Gets the output instance used by the last execution of the command or application. | |
|      * | |
|      * @return OutputInterface The current output instance | |
|      */ | |
|     public function getOutput() | |
|     { | |
|         return $this->output; | |
|     } | |
| 
 | |
|     /** | |
|      * Gets the status code returned by the last execution of the command or application. | |
|      * | |
|      * @return int The status code | |
|      */ | |
|     public function getStatusCode() | |
|     { | |
|         return $this->statusCode; | |
|     } | |
| 
 | |
|     /** | |
|      * Sets the user inputs. | |
|      * | |
|      * @param array $inputs An array of strings representing each input | |
|      *                      passed to the command input stream | |
|      * | |
|      * @return self | |
|      */ | |
|     public function setInputs(array $inputs) | |
|     { | |
|         $this->inputs = $inputs; | |
| 
 | |
|         return $this; | |
|     } | |
| 
 | |
|     /** | |
|      * Initializes the output property. | |
|      * | |
|      * Available options: | |
|      * | |
|      *  * decorated:                 Sets the output decorated flag | |
|      *  * verbosity:                 Sets the output verbosity flag | |
|      *  * capture_stderr_separately: Make output of stdOut and stdErr separately available | |
|      */ | |
|     private function initOutput(array $options) | |
|     { | |
|         $this->captureStreamsIndependently = \array_key_exists('capture_stderr_separately', $options) && $options['capture_stderr_separately']; | |
|         if (!$this->captureStreamsIndependently) { | |
|             $this->output = new StreamOutput(fopen('php://memory', 'w', false)); | |
|             if (isset($options['decorated'])) { | |
|                 $this->output->setDecorated($options['decorated']); | |
|             } | |
|             if (isset($options['verbosity'])) { | |
|                 $this->output->setVerbosity($options['verbosity']); | |
|             } | |
|         } else { | |
|             $this->output = new ConsoleOutput( | |
|                 isset($options['verbosity']) ? $options['verbosity'] : ConsoleOutput::VERBOSITY_NORMAL, | |
|                 isset($options['decorated']) ? $options['decorated'] : null | |
|             ); | |
| 
 | |
|             $errorOutput = new StreamOutput(fopen('php://memory', 'w', false)); | |
|             $errorOutput->setFormatter($this->output->getFormatter()); | |
|             $errorOutput->setVerbosity($this->output->getVerbosity()); | |
|             $errorOutput->setDecorated($this->output->isDecorated()); | |
| 
 | |
|             $reflectedOutput = new \ReflectionObject($this->output); | |
|             $strErrProperty = $reflectedOutput->getProperty('stderr'); | |
|             $strErrProperty->setAccessible(true); | |
|             $strErrProperty->setValue($this->output, $errorOutput); | |
| 
 | |
|             $reflectedParent = $reflectedOutput->getParentClass(); | |
|             $streamProperty = $reflectedParent->getProperty('stream'); | |
|             $streamProperty->setAccessible(true); | |
|             $streamProperty->setValue($this->output, fopen('php://memory', 'w', false)); | |
|         } | |
|     } | |
| 
 | |
|     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; | |
|     } | |
| }
 | |
| 
 |