From: RazeSoldier Date: Sat, 15 Jun 2019 06:35:18 +0000 (+0800) Subject: Skip ::testT69870() under Windows system X-Git-Tag: 1.34.0-rc.0~1306 X-Git-Url: http://git.cyclocoop.org/data/%24oldEdit?a=commitdiff_plain;h=af5df424fc15132d552443f626cd801ce74cc45d;p=lhc%2Fweb%2Fwiklou.git Skip ::testT69870() under Windows system Anonymous pipe under Windows does not support asynchronous read and write[1], and the default buffer is too small (~4K), the test will definitely block it. Before T69870, anonymous pipe for Windows can no longer hold more than 4K of data. [1] https://docs.microsoft.com/en-us/windows/desktop/ipc/anonymous-pipe-operations Bug: T209159 Change-Id: Ie9de36b1e6b68db95c35a0044c5b0d86c0050d33 --- diff --git a/tests/phpunit/includes/GlobalFunctions/wfShellExecTest.php b/tests/phpunit/includes/GlobalFunctions/wfShellExecTest.php index 6279cf6eee..68bb1e9689 100644 --- a/tests/phpunit/includes/GlobalFunctions/wfShellExecTest.php +++ b/tests/phpunit/includes/GlobalFunctions/wfShellExecTest.php @@ -6,14 +6,17 @@ */ class WfShellExecTest extends MediaWikiTestCase { public function testT69870() { - $command = wfIsWindows() - // 333 = 331 + CRLF - ? ( 'for /l %i in (1, 1, 1001) do @echo ' . str_repeat( '*', 331 ) ) - : 'printf "%-333333s" "*"'; + if ( wfIsWindows() ) { + // T209159: Anonymous pipe under Windows does not support asynchronous read and write, + // and the default buffer is too small (~4K), it is easy to be blocked. + $this->markTestSkipped( + 'T209159: Anonymous pipe under Windows cannot withstand such a large amount of data' + ); + } // Test several times because it involves a race condition that may randomly succeed or fail for ( $i = 0; $i < 10; $i++ ) { - $output = wfShellExec( $command ); + $output = wfShellExec( 'printf "%-333333s" "*"' ); $this->assertEquals( 333333, strlen( $output ) ); } } diff --git a/tests/phpunit/includes/shell/CommandTest.php b/tests/phpunit/includes/shell/CommandTest.php index 2e03163885..c5e8e897ab 100644 --- a/tests/phpunit/includes/shell/CommandTest.php +++ b/tests/phpunit/includes/shell/CommandTest.php @@ -119,15 +119,18 @@ class CommandTest extends PHPUnit\Framework\TestCase { } public function testT69870() { - $commandLine = wfIsWindows() - // 333 = 331 + CRLF - ? ( 'for /l %i in (1, 1, 1001) do @echo ' . str_repeat( '*', 331 ) ) - : 'printf "%-333333s" "*"'; + if ( wfIsWindows() ) { + // T209159: Anonymous pipe under Windows does not support asynchronous read and write, + // and the default buffer is too small (~4K), it is easy to be blocked. + $this->markTestSkipped( + 'T209159: Anonymous pipe under Windows cannot withstand such a large amount of data' + ); + } // Test several times because it involves a race condition that may randomly succeed or fail for ( $i = 0; $i < 10; $i++ ) { $command = new Command(); - $output = $command->unsafeParams( $commandLine ) + $output = $command->unsafeParams( 'printf "%-333333s" "*"' ) ->execute() ->getStdout(); $this->assertEquals( 333333, strlen( $output ) );