Replace some of MaintenanceTest with dataProviders
Bug: T184775 Change-Id: Icbaf3cbcf3c51e5b4cd53d55a5230534e74a0a38
This commit is contained in:
parent
f5e752d9f8
commit
2df1e9e5fc
1 changed files with 266 additions and 453 deletions
|
|
@ -37,459 +37,272 @@ class MaintenanceTest extends MaintenanceBaseTestCase {
|
|||
// test.*Intermittent.* tests), the objective of these tests is not to describe
|
||||
// consistent behavior, but rather currently existing behavior.
|
||||
|
||||
function testOutputEmpty() {
|
||||
$this->maintenance->output( "" );
|
||||
$this->assertOutputPrePostShutdown( "", false );
|
||||
}
|
||||
|
||||
function testOutputString() {
|
||||
$this->maintenance->output( "foo" );
|
||||
$this->assertOutputPrePostShutdown( "foo", false );
|
||||
}
|
||||
|
||||
function testOutputStringString() {
|
||||
$this->maintenance->output( "foo" );
|
||||
$this->maintenance->output( "bar" );
|
||||
$this->assertOutputPrePostShutdown( "foobar", false );
|
||||
}
|
||||
|
||||
function testOutputStringNL() {
|
||||
$this->maintenance->output( "foo\n" );
|
||||
$this->assertOutputPrePostShutdown( "foo\n", false );
|
||||
}
|
||||
|
||||
function testOutputStringNLNL() {
|
||||
$this->maintenance->output( "foo\n\n" );
|
||||
$this->assertOutputPrePostShutdown( "foo\n\n", false );
|
||||
}
|
||||
|
||||
function testOutputStringNLString() {
|
||||
$this->maintenance->output( "foo\nbar" );
|
||||
$this->assertOutputPrePostShutdown( "foo\nbar", false );
|
||||
}
|
||||
|
||||
function testOutputStringNLStringNL() {
|
||||
$this->maintenance->output( "foo\nbar\n" );
|
||||
$this->assertOutputPrePostShutdown( "foo\nbar\n", false );
|
||||
}
|
||||
|
||||
function testOutputStringNLStringNLLinewise() {
|
||||
$this->maintenance->output( "foo\n" );
|
||||
$this->maintenance->output( "bar\n" );
|
||||
$this->assertOutputPrePostShutdown( "foo\nbar\n", false );
|
||||
}
|
||||
|
||||
function testOutputStringNLStringNLArbitrary() {
|
||||
$this->maintenance->output( "" );
|
||||
$this->maintenance->output( "foo" );
|
||||
$this->maintenance->output( "" );
|
||||
$this->maintenance->output( "\n" );
|
||||
$this->maintenance->output( "ba" );
|
||||
$this->maintenance->output( "" );
|
||||
$this->maintenance->output( "r\n" );
|
||||
$this->assertOutputPrePostShutdown( "foo\nbar\n", false );
|
||||
}
|
||||
|
||||
function testOutputStringNLStringNLArbitraryAgain() {
|
||||
$this->maintenance->output( "" );
|
||||
$this->maintenance->output( "foo" );
|
||||
$this->maintenance->output( "" );
|
||||
$this->maintenance->output( "\nb" );
|
||||
$this->maintenance->output( "a" );
|
||||
$this->maintenance->output( "" );
|
||||
$this->maintenance->output( "r\n" );
|
||||
$this->assertOutputPrePostShutdown( "foo\nbar\n", false );
|
||||
}
|
||||
|
||||
function testOutputWNullChannelEmpty() {
|
||||
$this->maintenance->output( "", null );
|
||||
$this->assertOutputPrePostShutdown( "", false );
|
||||
}
|
||||
|
||||
function testOutputWNullChannelString() {
|
||||
$this->maintenance->output( "foo", null );
|
||||
$this->assertOutputPrePostShutdown( "foo", false );
|
||||
}
|
||||
|
||||
function testOutputWNullChannelStringString() {
|
||||
$this->maintenance->output( "foo", null );
|
||||
$this->maintenance->output( "bar", null );
|
||||
$this->assertOutputPrePostShutdown( "foobar", false );
|
||||
}
|
||||
|
||||
function testOutputWNullChannelStringNL() {
|
||||
$this->maintenance->output( "foo\n", null );
|
||||
$this->assertOutputPrePostShutdown( "foo\n", false );
|
||||
}
|
||||
|
||||
function testOutputWNullChannelStringNLNL() {
|
||||
$this->maintenance->output( "foo\n\n", null );
|
||||
$this->assertOutputPrePostShutdown( "foo\n\n", false );
|
||||
}
|
||||
|
||||
function testOutputWNullChannelStringNLString() {
|
||||
$this->maintenance->output( "foo\nbar", null );
|
||||
$this->assertOutputPrePostShutdown( "foo\nbar", false );
|
||||
}
|
||||
|
||||
function testOutputWNullChannelStringNLStringNL() {
|
||||
$this->maintenance->output( "foo\nbar\n", null );
|
||||
$this->assertOutputPrePostShutdown( "foo\nbar\n", false );
|
||||
}
|
||||
|
||||
function testOutputWNullChannelStringNLStringNLLinewise() {
|
||||
$this->maintenance->output( "foo\n", null );
|
||||
$this->maintenance->output( "bar\n", null );
|
||||
$this->assertOutputPrePostShutdown( "foo\nbar\n", false );
|
||||
}
|
||||
|
||||
function testOutputWNullChannelStringNLStringNLArbitrary() {
|
||||
$this->maintenance->output( "", null );
|
||||
$this->maintenance->output( "foo", null );
|
||||
$this->maintenance->output( "", null );
|
||||
$this->maintenance->output( "\n", null );
|
||||
$this->maintenance->output( "ba", null );
|
||||
$this->maintenance->output( "", null );
|
||||
$this->maintenance->output( "r\n", null );
|
||||
$this->assertOutputPrePostShutdown( "foo\nbar\n", false );
|
||||
}
|
||||
|
||||
function testOutputWNullChannelStringNLStringNLArbitraryAgain() {
|
||||
$this->maintenance->output( "", null );
|
||||
$this->maintenance->output( "foo", null );
|
||||
$this->maintenance->output( "", null );
|
||||
$this->maintenance->output( "\nb", null );
|
||||
$this->maintenance->output( "a", null );
|
||||
$this->maintenance->output( "", null );
|
||||
$this->maintenance->output( "r\n", null );
|
||||
$this->assertOutputPrePostShutdown( "foo\nbar\n", false );
|
||||
}
|
||||
|
||||
function testOutputWChannelString() {
|
||||
$this->maintenance->output( "foo", "bazChannel" );
|
||||
$this->assertOutputPrePostShutdown( "foo", true );
|
||||
}
|
||||
|
||||
function testOutputWChannelStringNL() {
|
||||
$this->maintenance->output( "foo\n", "bazChannel" );
|
||||
$this->assertOutputPrePostShutdown( "foo", true );
|
||||
}
|
||||
|
||||
function testOutputWChannelStringNLNL() {
|
||||
// If this test fails, note that output takes strings with double line
|
||||
// endings (although output's implementation in this situation calls
|
||||
// outputChanneled with a string ending in a nl ... which is not allowed
|
||||
// according to the documentation of outputChanneled)
|
||||
$this->maintenance->output( "foo\n\n", "bazChannel" );
|
||||
$this->assertOutputPrePostShutdown( "foo\n", true );
|
||||
}
|
||||
|
||||
function testOutputWChannelStringNLString() {
|
||||
$this->maintenance->output( "foo\nbar", "bazChannel" );
|
||||
$this->assertOutputPrePostShutdown( "foo\nbar", true );
|
||||
}
|
||||
|
||||
function testOutputWChannelStringNLStringNL() {
|
||||
$this->maintenance->output( "foo\nbar\n", "bazChannel" );
|
||||
$this->assertOutputPrePostShutdown( "foo\nbar", true );
|
||||
}
|
||||
|
||||
function testOutputWChannelStringNLStringNLLinewise() {
|
||||
$this->maintenance->output( "foo\n", "bazChannel" );
|
||||
$this->maintenance->output( "bar\n", "bazChannel" );
|
||||
$this->assertOutputPrePostShutdown( "foobar", true );
|
||||
}
|
||||
|
||||
function testOutputWChannelStringNLStringNLArbitrary() {
|
||||
$this->maintenance->output( "", "bazChannel" );
|
||||
$this->maintenance->output( "foo", "bazChannel" );
|
||||
$this->maintenance->output( "", "bazChannel" );
|
||||
$this->maintenance->output( "\n", "bazChannel" );
|
||||
$this->maintenance->output( "ba", "bazChannel" );
|
||||
$this->maintenance->output( "", "bazChannel" );
|
||||
$this->maintenance->output( "r\n", "bazChannel" );
|
||||
$this->assertOutputPrePostShutdown( "foobar", true );
|
||||
}
|
||||
|
||||
function testOutputWChannelStringNLStringNLArbitraryAgain() {
|
||||
$this->maintenance->output( "", "bazChannel" );
|
||||
$this->maintenance->output( "foo", "bazChannel" );
|
||||
$this->maintenance->output( "", "bazChannel" );
|
||||
$this->maintenance->output( "\nb", "bazChannel" );
|
||||
$this->maintenance->output( "a", "bazChannel" );
|
||||
$this->maintenance->output( "", "bazChannel" );
|
||||
$this->maintenance->output( "r\n", "bazChannel" );
|
||||
$this->assertOutputPrePostShutdown( "foo\nbar", true );
|
||||
}
|
||||
|
||||
function testOutputWMultipleChannelsChannelChange() {
|
||||
$this->maintenance->output( "foo", "bazChannel" );
|
||||
$this->maintenance->output( "bar", "bazChannel" );
|
||||
$this->maintenance->output( "qux", "quuxChannel" );
|
||||
$this->maintenance->output( "corge", "bazChannel" );
|
||||
$this->assertOutputPrePostShutdown( "foobar\nqux\ncorge", true );
|
||||
}
|
||||
|
||||
function testOutputWMultipleChannelsChannelChangeNL() {
|
||||
$this->maintenance->output( "foo", "bazChannel" );
|
||||
$this->maintenance->output( "bar\n", "bazChannel" );
|
||||
$this->maintenance->output( "qux\n", "quuxChannel" );
|
||||
$this->maintenance->output( "corge", "bazChannel" );
|
||||
$this->assertOutputPrePostShutdown( "foobar\nqux\ncorge", true );
|
||||
}
|
||||
|
||||
function testOutputWAndWOChannelStringStartWO() {
|
||||
$this->maintenance->output( "foo" );
|
||||
$this->maintenance->output( "bar", "bazChannel" );
|
||||
$this->maintenance->output( "qux" );
|
||||
$this->maintenance->output( "quux", "bazChannel" );
|
||||
$this->assertOutputPrePostShutdown( "foobar\nquxquux", true );
|
||||
}
|
||||
|
||||
function testOutputWAndWOChannelStringStartW() {
|
||||
$this->maintenance->output( "foo", "bazChannel" );
|
||||
$this->maintenance->output( "bar" );
|
||||
$this->maintenance->output( "qux", "bazChannel" );
|
||||
$this->maintenance->output( "quux" );
|
||||
$this->assertOutputPrePostShutdown( "foo\nbarqux\nquux", false );
|
||||
}
|
||||
|
||||
function testOutputWChannelTypeSwitch() {
|
||||
$this->maintenance->output( "foo", 1 );
|
||||
$this->maintenance->output( "bar", 1.0 );
|
||||
$this->assertOutputPrePostShutdown( "foo\nbar", true );
|
||||
}
|
||||
|
||||
function testOutputIntermittentEmpty() {
|
||||
$this->maintenance->output( "foo" );
|
||||
$this->maintenance->output( "" );
|
||||
$this->maintenance->output( "bar" );
|
||||
$this->assertOutputPrePostShutdown( "foobar", false );
|
||||
}
|
||||
|
||||
function testOutputIntermittentFalse() {
|
||||
$this->maintenance->output( "foo" );
|
||||
$this->maintenance->output( false );
|
||||
$this->maintenance->output( "bar" );
|
||||
$this->assertOutputPrePostShutdown( "foobar", false );
|
||||
}
|
||||
|
||||
function testOutputIntermittentFalseAfterOtherChannel() {
|
||||
$this->maintenance->output( "qux", "quuxChannel" );
|
||||
$this->maintenance->output( "foo" );
|
||||
$this->maintenance->output( false );
|
||||
$this->maintenance->output( "bar" );
|
||||
$this->assertOutputPrePostShutdown( "qux\nfoobar", false );
|
||||
}
|
||||
|
||||
function testOutputWNullChannelIntermittentEmpty() {
|
||||
$this->maintenance->output( "foo", null );
|
||||
$this->maintenance->output( "", null );
|
||||
$this->maintenance->output( "bar", null );
|
||||
$this->assertOutputPrePostShutdown( "foobar", false );
|
||||
}
|
||||
|
||||
function testOutputWNullChannelIntermittentFalse() {
|
||||
$this->maintenance->output( "foo", null );
|
||||
$this->maintenance->output( false, null );
|
||||
$this->maintenance->output( "bar", null );
|
||||
$this->assertOutputPrePostShutdown( "foobar", false );
|
||||
}
|
||||
|
||||
function testOutputWChannelIntermittentEmpty() {
|
||||
$this->maintenance->output( "foo", "bazChannel" );
|
||||
$this->maintenance->output( "", "bazChannel" );
|
||||
$this->maintenance->output( "bar", "bazChannel" );
|
||||
$this->assertOutputPrePostShutdown( "foobar", true );
|
||||
}
|
||||
|
||||
function testOutputWChannelIntermittentFalse() {
|
||||
$this->maintenance->output( "foo", "bazChannel" );
|
||||
$this->maintenance->output( false, "bazChannel" );
|
||||
$this->maintenance->output( "bar", "bazChannel" );
|
||||
$this->assertOutputPrePostShutdown( "foobar", true );
|
||||
}
|
||||
|
||||
// Note that (per documentation) outputChanneled does take strings that end
|
||||
// in \n, hence we do not test such strings.
|
||||
|
||||
function testOutputChanneledEmpty() {
|
||||
$this->maintenance->outputChanneled( "" );
|
||||
$this->assertOutputPrePostShutdown( "\n", false );
|
||||
}
|
||||
|
||||
function testOutputChanneledString() {
|
||||
$this->maintenance->outputChanneled( "foo" );
|
||||
$this->assertOutputPrePostShutdown( "foo\n", false );
|
||||
}
|
||||
|
||||
function testOutputChanneledStringString() {
|
||||
$this->maintenance->outputChanneled( "foo" );
|
||||
$this->maintenance->outputChanneled( "bar" );
|
||||
$this->assertOutputPrePostShutdown( "foo\nbar\n", false );
|
||||
}
|
||||
|
||||
function testOutputChanneledStringNLString() {
|
||||
$this->maintenance->outputChanneled( "foo\nbar" );
|
||||
$this->assertOutputPrePostShutdown( "foo\nbar\n", false );
|
||||
}
|
||||
|
||||
function testOutputChanneledStringNLStringNLArbitraryAgain() {
|
||||
$this->maintenance->outputChanneled( "" );
|
||||
$this->maintenance->outputChanneled( "foo" );
|
||||
$this->maintenance->outputChanneled( "" );
|
||||
$this->maintenance->outputChanneled( "\nb" );
|
||||
$this->maintenance->outputChanneled( "a" );
|
||||
$this->maintenance->outputChanneled( "" );
|
||||
$this->maintenance->outputChanneled( "r" );
|
||||
$this->assertOutputPrePostShutdown( "\nfoo\n\n\nb\na\n\nr\n", false );
|
||||
}
|
||||
|
||||
function testOutputChanneledWNullChannelEmpty() {
|
||||
$this->maintenance->outputChanneled( "", null );
|
||||
$this->assertOutputPrePostShutdown( "\n", false );
|
||||
}
|
||||
|
||||
function testOutputChanneledWNullChannelString() {
|
||||
$this->maintenance->outputChanneled( "foo", null );
|
||||
$this->assertOutputPrePostShutdown( "foo\n", false );
|
||||
}
|
||||
|
||||
function testOutputChanneledWNullChannelStringString() {
|
||||
$this->maintenance->outputChanneled( "foo", null );
|
||||
$this->maintenance->outputChanneled( "bar", null );
|
||||
$this->assertOutputPrePostShutdown( "foo\nbar\n", false );
|
||||
}
|
||||
|
||||
function testOutputChanneledWNullChannelStringNLString() {
|
||||
$this->maintenance->outputChanneled( "foo\nbar", null );
|
||||
$this->assertOutputPrePostShutdown( "foo\nbar\n", false );
|
||||
}
|
||||
|
||||
function testOutputChanneledWNullChannelStringNLStringNLArbitraryAgain() {
|
||||
$this->maintenance->outputChanneled( "", null );
|
||||
$this->maintenance->outputChanneled( "foo", null );
|
||||
$this->maintenance->outputChanneled( "", null );
|
||||
$this->maintenance->outputChanneled( "\nb", null );
|
||||
$this->maintenance->outputChanneled( "a", null );
|
||||
$this->maintenance->outputChanneled( "", null );
|
||||
$this->maintenance->outputChanneled( "r", null );
|
||||
$this->assertOutputPrePostShutdown( "\nfoo\n\n\nb\na\n\nr\n", false );
|
||||
}
|
||||
|
||||
function testOutputChanneledWChannelString() {
|
||||
$this->maintenance->outputChanneled( "foo", "bazChannel" );
|
||||
$this->assertOutputPrePostShutdown( "foo", true );
|
||||
}
|
||||
|
||||
function testOutputChanneledWChannelStringNLString() {
|
||||
$this->maintenance->outputChanneled( "foo\nbar", "bazChannel" );
|
||||
$this->assertOutputPrePostShutdown( "foo\nbar", true );
|
||||
}
|
||||
|
||||
function testOutputChanneledWChannelStringString() {
|
||||
$this->maintenance->outputChanneled( "foo", "bazChannel" );
|
||||
$this->maintenance->outputChanneled( "bar", "bazChannel" );
|
||||
$this->assertOutputPrePostShutdown( "foobar", true );
|
||||
}
|
||||
|
||||
function testOutputChanneledWChannelStringNLStringNLArbitraryAgain() {
|
||||
$this->maintenance->outputChanneled( "", "bazChannel" );
|
||||
$this->maintenance->outputChanneled( "foo", "bazChannel" );
|
||||
$this->maintenance->outputChanneled( "", "bazChannel" );
|
||||
$this->maintenance->outputChanneled( "\nb", "bazChannel" );
|
||||
$this->maintenance->outputChanneled( "a", "bazChannel" );
|
||||
$this->maintenance->outputChanneled( "", "bazChannel" );
|
||||
$this->maintenance->outputChanneled( "r", "bazChannel" );
|
||||
$this->assertOutputPrePostShutdown( "foo\nbar", true );
|
||||
}
|
||||
|
||||
function testOutputChanneledWMultipleChannelsChannelChange() {
|
||||
$this->maintenance->outputChanneled( "foo", "bazChannel" );
|
||||
$this->maintenance->outputChanneled( "bar", "bazChannel" );
|
||||
$this->maintenance->outputChanneled( "qux", "quuxChannel" );
|
||||
$this->maintenance->outputChanneled( "corge", "bazChannel" );
|
||||
$this->assertOutputPrePostShutdown( "foobar\nqux\ncorge", true );
|
||||
}
|
||||
|
||||
function testOutputChanneledWMultipleChannelsChannelChangeEnclosedNull() {
|
||||
$this->maintenance->outputChanneled( "foo", "bazChannel" );
|
||||
$this->maintenance->outputChanneled( "bar", null );
|
||||
$this->maintenance->outputChanneled( "qux", null );
|
||||
$this->maintenance->outputChanneled( "corge", "bazChannel" );
|
||||
$this->assertOutputPrePostShutdown( "foo\nbar\nqux\ncorge", true );
|
||||
}
|
||||
|
||||
function testOutputChanneledWMultipleChannelsChannelAfterNullChange() {
|
||||
$this->maintenance->outputChanneled( "foo", "bazChannel" );
|
||||
$this->maintenance->outputChanneled( "bar", null );
|
||||
$this->maintenance->outputChanneled( "qux", null );
|
||||
$this->maintenance->outputChanneled( "corge", "quuxChannel" );
|
||||
$this->assertOutputPrePostShutdown( "foo\nbar\nqux\ncorge", true );
|
||||
}
|
||||
|
||||
function testOutputChanneledWAndWOChannelStringStartWO() {
|
||||
$this->maintenance->outputChanneled( "foo" );
|
||||
$this->maintenance->outputChanneled( "bar", "bazChannel" );
|
||||
$this->maintenance->outputChanneled( "qux" );
|
||||
$this->maintenance->outputChanneled( "quux", "bazChannel" );
|
||||
$this->assertOutputPrePostShutdown( "foo\nbar\nqux\nquux", true );
|
||||
}
|
||||
|
||||
function testOutputChanneledWAndWOChannelStringStartW() {
|
||||
$this->maintenance->outputChanneled( "foo", "bazChannel" );
|
||||
$this->maintenance->outputChanneled( "bar" );
|
||||
$this->maintenance->outputChanneled( "qux", "bazChannel" );
|
||||
$this->maintenance->outputChanneled( "quux" );
|
||||
$this->assertOutputPrePostShutdown( "foo\nbar\nqux\nquux\n", false );
|
||||
}
|
||||
|
||||
function testOutputChanneledWChannelTypeSwitch() {
|
||||
$this->maintenance->outputChanneled( "foo", 1 );
|
||||
$this->maintenance->outputChanneled( "bar", 1.0 );
|
||||
$this->assertOutputPrePostShutdown( "foo\nbar", true );
|
||||
}
|
||||
|
||||
function testOutputChanneledWOChannelIntermittentEmpty() {
|
||||
$this->maintenance->outputChanneled( "foo" );
|
||||
$this->maintenance->outputChanneled( "" );
|
||||
$this->maintenance->outputChanneled( "bar" );
|
||||
$this->assertOutputPrePostShutdown( "foo\n\nbar\n", false );
|
||||
}
|
||||
|
||||
function testOutputChanneledWOChannelIntermittentFalse() {
|
||||
$this->maintenance->outputChanneled( "foo" );
|
||||
$this->maintenance->outputChanneled( false );
|
||||
$this->maintenance->outputChanneled( "bar" );
|
||||
$this->assertOutputPrePostShutdown( "foo\nbar\n", false );
|
||||
}
|
||||
|
||||
function testOutputChanneledWNullChannelIntermittentEmpty() {
|
||||
$this->maintenance->outputChanneled( "foo", null );
|
||||
$this->maintenance->outputChanneled( "", null );
|
||||
$this->maintenance->outputChanneled( "bar", null );
|
||||
$this->assertOutputPrePostShutdown( "foo\n\nbar\n", false );
|
||||
}
|
||||
|
||||
function testOutputChanneledWNullChannelIntermittentFalse() {
|
||||
$this->maintenance->outputChanneled( "foo", null );
|
||||
$this->maintenance->outputChanneled( false, null );
|
||||
$this->maintenance->outputChanneled( "bar", null );
|
||||
$this->assertOutputPrePostShutdown( "foo\nbar\n", false );
|
||||
}
|
||||
|
||||
function testOutputChanneledWChannelIntermittentEmpty() {
|
||||
$this->maintenance->outputChanneled( "foo", "bazChannel" );
|
||||
$this->maintenance->outputChanneled( "", "bazChannel" );
|
||||
$this->maintenance->outputChanneled( "bar", "bazChannel" );
|
||||
$this->assertOutputPrePostShutdown( "foobar", true );
|
||||
}
|
||||
|
||||
function testOutputChanneledWChannelIntermittentFalse() {
|
||||
$this->maintenance->outputChanneled( "foo", "bazChannel" );
|
||||
$this->maintenance->outputChanneled( false, "bazChannel" );
|
||||
$this->maintenance->outputChanneled( "bar", "bazChannel" );
|
||||
$this->assertOutputPrePostShutdown( "foo\nbar", true );
|
||||
/**
|
||||
* @dataProvider provideOutputData
|
||||
*/
|
||||
function testOutput( $outputs, $expected, $extraNL ) {
|
||||
foreach ( $outputs as $data ) {
|
||||
if ( is_array( $data ) ) {
|
||||
list( $msg, $channel ) = $data;
|
||||
} else {
|
||||
$msg = $data;
|
||||
$channel = null;
|
||||
}
|
||||
$this->maintenance->output( $msg, $channel );
|
||||
}
|
||||
$this->assertOutputPrePostShutdown( $expected, $extraNL );
|
||||
}
|
||||
|
||||
public function provideOutputData() {
|
||||
return [
|
||||
[ [ "" ], "", false ],
|
||||
[ [ "foo" ], "foo", false ],
|
||||
[ [ "foo", "bar" ], "foobar", false ],
|
||||
[ [ "foo\n" ], "foo\n", false ],
|
||||
[ [ "foo\n\n" ], "foo\n\n", false ],
|
||||
[ [ "foo\nbar" ], "foo\nbar", false ],
|
||||
[ [ "foo\nbar\n" ], "foo\nbar\n", false ],
|
||||
[ [ "foo\n", "bar\n" ], "foo\nbar\n", false ],
|
||||
[ [ "", "foo", "", "\n", "ba", "", "r\n" ], "foo\nbar\n", false ],
|
||||
[ [ "", "foo", "", "\nb", "a", "", "r\n" ], "foo\nbar\n", false ],
|
||||
[ [ [ "foo", "bazChannel" ] ], "foo", true ],
|
||||
[ [ [ "foo\n", "bazChannel" ] ], "foo", true ],
|
||||
|
||||
// If this test fails, note that output takes strings with double line
|
||||
// endings (although output's implementation in this situation calls
|
||||
// outputChanneled with a string ending in a nl ... which is not allowed
|
||||
// according to the documentation of outputChanneled)
|
||||
[ [ [ "foo\n\n", "bazChannel" ] ], "foo\n", true ],
|
||||
[ [ [ "foo\nbar", "bazChannel" ] ], "foo\nbar", true ],
|
||||
[ [ [ "foo\nbar\n", "bazChannel" ] ], "foo\nbar", true ],
|
||||
[
|
||||
[
|
||||
[ "foo\n", "bazChannel" ],
|
||||
[ "bar\n", "bazChannel" ],
|
||||
],
|
||||
"foobar",
|
||||
true
|
||||
],
|
||||
[
|
||||
[
|
||||
[ "", "bazChannel" ],
|
||||
[ "foo", "bazChannel" ],
|
||||
[ "", "bazChannel" ],
|
||||
[ "\n", "bazChannel" ],
|
||||
[ "ba", "bazChannel" ],
|
||||
[ "", "bazChannel" ],
|
||||
[ "r\n", "bazChannel" ],
|
||||
],
|
||||
"foobar",
|
||||
true
|
||||
],
|
||||
[
|
||||
[
|
||||
[ "", "bazChannel" ],
|
||||
[ "foo", "bazChannel" ],
|
||||
[ "", "bazChannel" ],
|
||||
[ "\nb", "bazChannel" ],
|
||||
[ "a", "bazChannel" ],
|
||||
[ "", "bazChannel" ],
|
||||
[ "r\n", "bazChannel" ],
|
||||
],
|
||||
"foo\nbar",
|
||||
true
|
||||
],
|
||||
[
|
||||
[
|
||||
[ "foo", "bazChannel" ],
|
||||
[ "bar", "bazChannel" ],
|
||||
[ "qux", "quuxChannel" ],
|
||||
[ "corge", "bazChannel" ],
|
||||
],
|
||||
"foobar\nqux\ncorge",
|
||||
true
|
||||
],
|
||||
[
|
||||
[
|
||||
[ "foo", "bazChannel" ],
|
||||
[ "bar\n", "bazChannel" ],
|
||||
[ "qux\n", "quuxChannel" ],
|
||||
[ "corge", "bazChannel" ],
|
||||
],
|
||||
"foobar\nqux\ncorge",
|
||||
true
|
||||
],
|
||||
[
|
||||
[
|
||||
[ "foo", null ],
|
||||
[ "bar", "bazChannel" ],
|
||||
[ "qux", null ],
|
||||
[ "quux", "bazChannel" ],
|
||||
],
|
||||
"foobar\nquxquux",
|
||||
true
|
||||
],
|
||||
[
|
||||
[
|
||||
[ "foo", "bazChannel" ],
|
||||
[ "bar", null ],
|
||||
[ "qux", "bazChannel" ],
|
||||
[ "quux", null ],
|
||||
],
|
||||
"foo\nbarqux\nquux",
|
||||
false
|
||||
],
|
||||
[
|
||||
[
|
||||
[ "foo", 1 ],
|
||||
[ "bar", 1.0 ],
|
||||
],
|
||||
"foo\nbar",
|
||||
true
|
||||
],
|
||||
[ [ "foo", "", "bar" ], "foobar", false ],
|
||||
[ [ "foo", false, "bar" ], "foobar", false ],
|
||||
[
|
||||
[
|
||||
[ "qux", "quuxChannel" ],
|
||||
"foo",
|
||||
false,
|
||||
"bar"
|
||||
],
|
||||
"qux\nfoobar",
|
||||
false
|
||||
],
|
||||
[
|
||||
[
|
||||
[ "foo", "bazChannel" ],
|
||||
[ "", "bazChannel" ],
|
||||
[ "bar", "bazChannel" ],
|
||||
],
|
||||
"foobar",
|
||||
true
|
||||
],
|
||||
[
|
||||
[
|
||||
[ "foo", "bazChannel" ],
|
||||
[ false, "bazChannel" ],
|
||||
[ "bar", "bazChannel" ],
|
||||
],
|
||||
"foobar",
|
||||
true
|
||||
],
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* @dataProvider provideOutputChanneledData
|
||||
*/
|
||||
function testOutputChanneled( $outputs, $expected, $extraNL ) {
|
||||
foreach ( $outputs as $data ) {
|
||||
if ( is_array( $data ) ) {
|
||||
list( $msg, $channel ) = $data;
|
||||
} else {
|
||||
$msg = $data;
|
||||
$channel = null;
|
||||
}
|
||||
$this->maintenance->outputChanneled( $msg, $channel );
|
||||
}
|
||||
$this->assertOutputPrePostShutdown( $expected, $extraNL );
|
||||
}
|
||||
|
||||
public function provideOutputChanneledData() {
|
||||
return [
|
||||
[ [ "" ], "\n", false ],
|
||||
[ [ "foo" ], "foo\n", false ],
|
||||
[ [ "foo", "bar" ], "foo\nbar\n", false ],
|
||||
[ [ "foo\nbar" ], "foo\nbar\n", false ],
|
||||
[ [ "", "foo", "", "\nb", "a", "", "r" ], "\nfoo\n\n\nb\na\n\nr\n", false ],
|
||||
[ [ [ "foo", "bazChannel" ] ], "foo", true ],
|
||||
[
|
||||
[
|
||||
[ "foo\nbar", "bazChannel" ]
|
||||
],
|
||||
"foo\nbar",
|
||||
true
|
||||
],
|
||||
[
|
||||
[
|
||||
[ "foo", "bazChannel" ],
|
||||
[ "bar", "bazChannel" ],
|
||||
],
|
||||
"foobar",
|
||||
true
|
||||
],
|
||||
[
|
||||
[
|
||||
[ "", "bazChannel" ],
|
||||
[ "foo", "bazChannel" ],
|
||||
[ "", "bazChannel" ],
|
||||
[ "\nb", "bazChannel" ],
|
||||
[ "a", "bazChannel" ],
|
||||
[ "", "bazChannel" ],
|
||||
[ "r", "bazChannel" ],
|
||||
],
|
||||
"foo\nbar",
|
||||
true
|
||||
],
|
||||
[
|
||||
[
|
||||
[ "foo", "bazChannel" ],
|
||||
[ "bar", "bazChannel" ],
|
||||
[ "qux", "quuxChannel" ],
|
||||
[ "corge", "bazChannel" ],
|
||||
],
|
||||
"foobar\nqux\ncorge",
|
||||
true
|
||||
],
|
||||
[
|
||||
[
|
||||
[ "foo", "bazChannel" ],
|
||||
[ "bar", "bazChannel" ],
|
||||
[ "qux", "quuxChannel" ],
|
||||
[ "corge", "bazChannel" ],
|
||||
],
|
||||
"foobar\nqux\ncorge",
|
||||
true
|
||||
],
|
||||
[
|
||||
[
|
||||
[ "foo", "bazChannel" ],
|
||||
[ "bar", null ],
|
||||
[ "qux", null ],
|
||||
[ "corge", "bazChannel" ],
|
||||
],
|
||||
"foo\nbar\nqux\ncorge",
|
||||
true
|
||||
],
|
||||
[
|
||||
[
|
||||
[ "foo", null ],
|
||||
[ "bar", "bazChannel" ],
|
||||
[ "qux", null ],
|
||||
[ "quux", "bazChannel" ],
|
||||
],
|
||||
"foo\nbar\nqux\nquux",
|
||||
true
|
||||
],
|
||||
[
|
||||
[
|
||||
[ "foo", "bazChannel" ],
|
||||
[ "bar", null ],
|
||||
[ "qux", "bazChannel" ],
|
||||
[ "quux", null ],
|
||||
],
|
||||
"foo\nbar\nqux\nquux\n",
|
||||
false
|
||||
],
|
||||
[
|
||||
[
|
||||
[ "foo", 1 ],
|
||||
[ "bar", 1.0 ],
|
||||
],
|
||||
"foo\nbar",
|
||||
true
|
||||
],
|
||||
[ [ "foo", "", "bar" ], "foo\n\nbar\n", false ],
|
||||
[ [ "foo", false, "bar" ], "foo\nbar\n", false ],
|
||||
];
|
||||
}
|
||||
|
||||
function testCleanupChanneledClean() {
|
||||
|
|
|
|||
Loading…
Reference in a new issue