79 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
		
		
			
		
	
	
			79 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| 
								 | 
							
								<?php
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								namespace Consolidation\SiteProcess;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								use Consolidation\SiteProcess\Util\Escape;
							 | 
						||
| 
								 | 
							
								use PHPUnit\Framework\TestCase;
							 | 
						||
| 
								 | 
							
								use Consolidation\SiteProcess\Util\ArgumentProcessor;
							 | 
						||
| 
								 | 
							
								use Consolidation\SiteAlias\SiteAlias;
							 | 
						||
| 
								 | 
							
								use Symfony\Component\Console\Output\BufferedOutput;
							 | 
						||
| 
								 | 
							
								use Symfony\Component\Console\Style\SymfonyStyle;
							 | 
						||
| 
								 | 
							
								use Symfony\Component\Console\Input\ArrayInput;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class RealtimeOutputHandlerTest extends TestCase
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * Data provider for testRealtimeOutputHandler.
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    public function realtimeOutputHandlerTestValues()
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        return [
							 | 
						||
| 
								 | 
							
								            [
							 | 
						||
| 
								 | 
							
								                'hello, world',
							 | 
						||
| 
								 | 
							
								                '',
							 | 
						||
| 
								 | 
							
								                ['echo', 'hello, world'],
							 | 
						||
| 
								 | 
							
								                'LINUX',
							 | 
						||
| 
								 | 
							
								            ],
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								            [
							 | 
						||
| 
								 | 
							
								                '"hello, world"',
							 | 
						||
| 
								 | 
							
								                '',
							 | 
						||
| 
								 | 
							
								                ['echo', 'hello, world'],
							 | 
						||
| 
								 | 
							
								                'WIN'
							 | 
						||
| 
								 | 
							
								            ],
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								            [
							 | 
						||
| 
								 | 
							
								                'README.md',
							 | 
						||
| 
								 | 
							
								                '',
							 | 
						||
| 
								 | 
							
								                ['ls', 'README.md'],
							 | 
						||
| 
								 | 
							
								                'LINUX',
							 | 
						||
| 
								 | 
							
								            ],
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								            [
							 | 
						||
| 
								 | 
							
								                '',
							 | 
						||
| 
								 | 
							
								                'No such file or directory',
							 | 
						||
| 
								 | 
							
								                ['ls', 'no/such/file'],
							 | 
						||
| 
								 | 
							
								                'LINUX',
							 | 
						||
| 
								 | 
							
								            ],
							 | 
						||
| 
								 | 
							
								        ];
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * Test the RealtimeOutputHandler class.
							 | 
						||
| 
								 | 
							
								     *
							 | 
						||
| 
								 | 
							
								     * @dataProvider realtimeOutputHandlerTestValues
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    public function testRealtimeOutputHandler($expectedStdout, $expectedStderr, $args, $os)
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        if (Escape::isWindows() != Escape::isWindows($os)) {
							 | 
						||
| 
								 | 
							
								          $this->markTestSkipped("OS isn't supported");
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								        $stdin = new ArrayInput([]);
							 | 
						||
| 
								 | 
							
								        $stdout = new BufferedOutput();
							 | 
						||
| 
								 | 
							
								        $stderr = new BufferedOutput();
							 | 
						||
| 
								 | 
							
								        $symfonyStyle = new SymfonyStyle($stdin, $stdout);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        $process = new ProcessBase($args);
							 | 
						||
| 
								 | 
							
								        $process->setRealtimeOutput($symfonyStyle, $stderr);
							 | 
						||
| 
								 | 
							
								        $process->run($process->showRealtime());
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        $this->assertEquals($expectedStdout, trim($stdout->fetch()));
							 | 
						||
| 
								 | 
							
								        if (empty($expectedStderr)) {
							 | 
						||
| 
								 | 
							
								            $this->assertEquals('', trim($stderr->fetch()));
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								        else {
							 | 
						||
| 
								 | 
							
								            $this->assertStringContainsString($expectedStderr, trim($stderr->fetch()));
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								}
							 |