X-Git-Url: https://git.heureux-cyclage.org/?a=blobdiff_plain;f=tests%2Fphpunit%2Fincludes%2Fshell%2FCommandTest.php;h=81fae33c84606a03be3eb2731d478b2ad3772015;hb=6ff59f49793acccc53b34188d7490a35cbd7f3a2;hp=33a7f44704caeb5d207c339aebd8989d72c6c19e;hpb=079d61fb79ac0a026c5a4c3b57bfbdaf3a037cd1;p=lhc%2Fweb%2Fwiklou.git diff --git a/tests/phpunit/includes/shell/CommandTest.php b/tests/phpunit/includes/shell/CommandTest.php index 33a7f44704..81fae33c84 100644 --- a/tests/phpunit/includes/shell/CommandTest.php +++ b/tests/phpunit/includes/shell/CommandTest.php @@ -6,17 +6,6 @@ use MediaWiki\Shell\Command; * @group Shell */ class CommandTest extends PHPUnit_Framework_TestCase { - /** - * @expectedException PHPUnit_Framework_Error_Notice - */ - public function testDestruct() { - if ( defined( 'HHVM_VERSION' ) ) { - $this->markTestSkipped( 'destructors are unreliable in HHVM' ); - } - $command = new Command(); - $command->params( 'true' ); - } - private function requirePosix() { if ( wfIsWindows() ) { $this->markTestSkipped( 'This test requires a POSIX environment.' ); @@ -57,23 +46,61 @@ class CommandTest extends PHPUnit_Framework_TestCase { $this->assertSame( "bar\n", $result->getStdout() ); } + public function testStdout() { + $this->requirePosix(); + + $command = new Command(); + + $result = $command + ->params( 'bash', '-c', 'echo ThisIsStderr 1>&2' ) + ->execute(); + + $this->assertNotContains( 'ThisIsStderr', $result->getStdout() ); + $this->assertEquals( "ThisIsStderr\n", $result->getStderr() ); + } + + public function testStdoutRedirection() { + $this->requirePosix(); + + $command = new Command(); + + $result = $command + ->params( 'bash', '-c', 'echo ThisIsStderr 1>&2' ) + ->includeStderr( true ) + ->execute(); + + $this->assertEquals( "ThisIsStderr\n", $result->getStdout() ); + $this->assertNull( $result->getStderr() ); + } + public function testOutput() { global $IP; $this->requirePosix(); + chdir( $IP ); $command = new Command(); $result = $command - ->params( [ 'ls', "$IP/index.php" ] ) + ->params( [ 'ls', 'index.php' ] ) ->execute(); - $this->assertSame( "$IP/index.php", trim( $result->getStdout() ) ); + $this->assertRegExp( '/^index.php$/m', $result->getStdout() ); + $this->assertSame( null, $result->getStderr() ); $command = new Command(); $result = $command ->params( [ 'ls', 'index.php', 'no-such-file' ] ) ->includeStderr() ->execute(); + $this->assertRegExp( '/^index.php$/m', $result->getStdout() ); $this->assertRegExp( '/^.+no-such-file.*$/m', $result->getStdout() ); + $this->assertSame( null, $result->getStderr() ); + + $command = new Command(); + $result = $command + ->params( [ 'ls', 'index.php', 'no-such-file' ] ) + ->execute(); + $this->assertRegExp( '/^index.php$/m', $result->getStdout() ); + $this->assertRegExp( '/^.+no-such-file.*$/m', $result->getStderr() ); } public function testT69870() { @@ -91,4 +118,25 @@ class CommandTest extends PHPUnit_Framework_TestCase { $this->assertEquals( 333333, strlen( $output ) ); } } + + public function testLogStderr() { + $this->requirePosix(); + + $logger = new TestLogger( true, function ( $message, $level, $context ) { + return $level === Psr\Log\LogLevel::ERROR ? '1' : null; + }, true ); + $command = new Command(); + $command->setLogger( $logger ); + $command->params( 'bash', '-c', 'echo ThisIsStderr 1>&2' ); + $command->execute(); + $this->assertEmpty( $logger->getBuffer() ); + + $command = new Command(); + $command->setLogger( $logger ); + $command->logStderr(); + $command->params( 'bash', '-c', 'echo ThisIsStderr 1>&2' ); + $command->execute(); + $this->assertSame( 1, count( $logger->getBuffer() ) ); + $this->assertSame( trim( $logger->getBuffer()[0][2]['error'] ), 'ThisIsStderr' ); + } }