jenkins-bot has submitted this change and it was merged. (
https://gerrit.wikimedia.org/r/404606 )
Change subject: Refactor MaintenanceTest to use a base test case
......................................................................
Refactor MaintenanceTest to use a base test case
Bug: T184775
Change-Id: I0cb2320f765e847a59c721918401da07a3a2b24a
---
M tests/common/TestsAutoLoader.php
A tests/phpunit/maintenance/MaintenanceBaseTestCase.php
D tests/phpunit/maintenance/MaintenanceFixup.php
M tests/phpunit/maintenance/MaintenanceTest.php
4 files changed, 350 insertions(+), 419 deletions(-)
Approvals:
Legoktm: Looks good to me, approved
jenkins-bot: Verified
diff --git a/tests/common/TestsAutoLoader.php b/tests/common/TestsAutoLoader.php
index 825cee0..82149b3 100644
--- a/tests/common/TestsAutoLoader.php
+++ b/tests/common/TestsAutoLoader.php
@@ -151,7 +151,7 @@
# tests/phpunit/maintenance
'MediaWiki\Tests\Maintenance\DumpTestCase' =>
"$testDir/phpunit/maintenance/DumpTestCase.php",
- 'MediaWiki\Tests\Maintenance\MaintenanceFixup' =>
"$testDir/phpunit/maintenance/MaintenanceFixup.php",
+ 'MediaWiki\Tests\Maintenance\MaintenanceBaseTestCase' =>
"$testDir/phpunit/maintenance/MaintenanceBaseTestCase.php",
# tests/phpunit/media
'FakeDimensionFile' =>
"$testDir/phpunit/includes/media/FakeDimensionFile.php",
diff --git a/tests/phpunit/maintenance/MaintenanceBaseTestCase.php
b/tests/phpunit/maintenance/MaintenanceBaseTestCase.php
new file mode 100644
index 0000000..9d73a51
--- /dev/null
+++ b/tests/phpunit/maintenance/MaintenanceBaseTestCase.php
@@ -0,0 +1,92 @@
+<?php
+
+namespace MediaWiki\Tests\Maintenance;
+
+use MediaWikiTestCase;
+use Wikimedia\TestingAccessWrapper;
+
+abstract class MaintenanceBaseTestCase extends MediaWikiTestCase {
+
+ /**
+ * The main Maintenance instance that is used for testing, wrapped and
mockable.
+ *
+ * @var Maintenance
+ */
+ protected $maintenance;
+
+ protected function setUp() {
+ parent::setUp();
+
+ $this->maintenance = $this->createMaintenance();
+ }
+
+ /**
+ * Do a little stream cleanup to prevent output in case the child class
+ * hasn't tested the capture buffer.
+ */
+ protected function tearDown() {
+ if ( $this->maintenance ) {
+ $this->maintenance->cleanupChanneled();
+ }
+
+ // This is smelly, but maintenance scripts usually produce
output, so
+ // we anticipate and ignore with a regex that will catch
everything.
+ //
+ // If you call $this->expectOutputRegex in your subclass, this
guard
+ // won't be triggered, and your specific pattern will be
respected.
+ if ( !$this->hasExpectationOnOutput() ) {
+ $this->expectOutputRegex( '/.*/' );
+ }
+
+ parent::tearDown();
+ }
+
+ /**
+ * @return string Class name
+ *
+ * Subclasses must implement this in order to use the $this->maintenance
+ * variable. Normally, it will be set like:
+ * return PopulateDatabaseMaintenance::class;
+ *
+ * If you need to change the way your maintenance class is constructed,
+ * override createMaintenance.
+ */
+ abstract protected function getMaintenanceClass();
+
+ /**
+ * Called by setUp to initialize $this->maintenance.
+ *
+ * @return object The Maintenance instance to test.
+ */
+ protected function createMaintenance() {
+ $className = $this->getMaintenanceClass();
+ $obj = new $className();
+
+ // We use TestingAccessWrapper in order to access protected
internals
+ // such as `output()`.
+ return TestingAccessWrapper::newFromObject( $obj );
+ }
+
+ /**
+ * Asserts the output before and after simulating shutdown
+ *
+ * This function simulates shutdown of self::maintenance.
+ *
+ * @param string $preShutdownOutput Expected output before simulating
shutdown
+ * @param bool $expectNLAppending Whether or not shutdown simulation is
expected
+ * to add a newline to the output. If false, $preShutdownOutput is the
+ * expected output after shutdown simulation. Otherwise,
+ * $preShutdownOutput with an appended newline is the expected output
+ * after shutdown simulation.
+ */
+ protected function assertOutputPrePostShutdown( $preShutdownOutput,
$expectNLAppending ) {
+ $this->assertEquals( $preShutdownOutput,
$this->getActualOutput(),
+ "Output before shutdown simulation" );
+
+ $this->maintenance->cleanupChanneled();
+
+ $postShutdownOutput = $preShutdownOutput . ( $expectNLAppending
? "\n" : "" );
+ $this->expectOutputString( $postShutdownOutput );
+ }
+
+}
diff --git a/tests/phpunit/maintenance/MaintenanceFixup.php
b/tests/phpunit/maintenance/MaintenanceFixup.php
deleted file mode 100644
index 40da42d..0000000
--- a/tests/phpunit/maintenance/MaintenanceFixup.php
+++ /dev/null
@@ -1,142 +0,0 @@
-<?php
-
-namespace MediaWiki\Tests\Maintenance;
-
-use Maintenance;
-use MediaWikiTestCase;
-
-/**
- * Makes parts of Maintenance class API visible for testing, and makes up for a
- * stream closing hack in Maintenance.php.
- *
- * This class is solely used for being able to test Maintenance right now
- * without having to apply major refactorings to fix some design issues in
- * Maintenance.php. Before adding more functions here, please consider whether
- * this approach is correct, or a refactoring Maintenance to separate concerns
- * is more appropriate.
- *
- * Upon refactoring, keep in mind that besides the maintenance scripts
themselves
- * and tests right here, some extensions including Extension:Maintenance make
- * use of the Maintenance class.
- *
- * Due to a hack in Maintenance.php using register_shutdown_function, be sure
to
- * call simulateShutdown on MaintenanceFixup instance before a test ends.
- *
- * FIXME:
- * It would be great if we were able to use PHPUnit's getMockForAbstractClass
- * instead of the MaintenanceFixup hack below. However, we cannot do so
- * without changing method visibility and without working around hacks in
- * Maintenance.php
- *
- * For the same reason, we cannot just use FakeMaintenance.
- */
-class MaintenanceFixup extends Maintenance {
-
- // --- Making up for the register_shutdown_function hack in
Maintenance.php
-
- /**
- * The test case that generated this instance.
- *
- * This member is motivated by allowing the destructor to check whether
or not
- * the test failed, in order to avoid unnecessary nags about omitted
shutdown
- * simulation.
- * But as it is already available, we also usi it to flagging tests as
failed
- *
- * @var MediaWikiTestCase
- */
- private $testCase;
-
- /**
- * shutdownSimulated === true if simulateShutdown has done its work
- *
- * @var bool
- */
- private $shutdownSimulated = false;
-
- /**
- * Simulates what Maintenance wants to happen at script's end.
- */
- public function simulateShutdown() {
- if ( $this->shutdownSimulated ) {
- $this->testCase->fail( __METHOD__ . " called more than
once" );
- }
-
- // The cleanup action.
- $this->outputChanneled( false );
-
- // Bookkeeping that we simulated the clean up.
- $this->shutdownSimulated = true;
- }
-
- // Note that the "public" here does not change visibility
- public function outputChanneled( $msg, $channel = null ) {
- if ( $this->shutdownSimulated ) {
- if ( $msg !== false ) {
- $this->testCase->fail( "Already past simulated
shutdown, but msg is "
- . "not false. Did the hack in
Maintenance.php change? Please "
- . "adapt the test case or
Maintenance.php" );
- }
-
- // The current call is the one registered via
register_shutdown_function.
- // We can safely ignore it, as we simulated this one
via simulateShutdown
- // before (if we did not, the destructor of this
instance will warn about
- // it)
- return;
- }
-
- call_user_func_array( [ "parent", __FUNCTION__ ],
func_get_args() );
- }
-
- /**
- * Safety net around register_shutdown_function of Maintenance.php
- */
- public function __destruct() {
- if ( !$this->shutdownSimulated ) {
- // Someone generated a MaintenanceFixup instance
without calling
- // simulateShutdown. We'd have to raise a PHPUnit
exception to correctly
- // flag this illegal usage. However, we are already in
a destruktor, which
- // would trigger undefined behavior. Hence, we can only
report to the
- // error output :( Hopefully people read the PHPUnit
output.
- $name = $this->testCase->getName();
- fwrite( STDERR, "ERROR! Instance of " . __CLASS__ . "
for test $name "
- . "destructed without calling simulateShutdown
method. Call "
- . "simulateShutdown on the instance before it
gets destructed." );
- }
-
- // The following guard is required, as PHP does not offer
default destructors :(
- if ( is_callable( "parent::__destruct" ) ) {
- parent::__destruct();
- }
- }
-
- public function __construct( MediaWikiTestCase $testCase ) {
- parent::__construct();
- $this->testCase = $testCase;
- }
-
- // --- Making protected functions visible for test
-
- public function output( $out, $channel = null ) {
- // Just to make PHP not nag about signature mismatches, we
copied
- // Maintenance::output signature. However, we do not use (or
rely on)
- // those variables. Instead we pass to Maintenance::output
whatever we
- // receive at runtime.
- return call_user_func_array( [ "parent", __FUNCTION__ ],
func_get_args() );
- }
-
- public function addOption( $name, $description, $required = false,
- $withArg = false, $shortName = false, $multiOccurance = false
- ) {
- return call_user_func_array( [ "parent", __FUNCTION__ ],
func_get_args() );
- }
-
- public function getOption( $name, $default = null ) {
- return call_user_func_array( [ "parent", __FUNCTION__ ],
func_get_args() );
- }
-
- // --- Requirements for getting instance of abstract class
-
- public function execute() {
- $this->testCase->fail( __METHOD__ . " called unexpectedly" );
- }
-}
diff --git a/tests/phpunit/maintenance/MaintenanceTest.php
b/tests/phpunit/maintenance/MaintenanceTest.php
index ecb4f34..f29cacd 100644
--- a/tests/phpunit/maintenance/MaintenanceTest.php
+++ b/tests/phpunit/maintenance/MaintenanceTest.php
@@ -2,55 +2,34 @@
namespace MediaWiki\Tests\Maintenance;
+use Maintenance;
use MediaWiki\MediaWikiServices;
-use MediaWikiTestCase;
+use Wikimedia\TestingAccessWrapper;
/**
* @covers Maintenance
*/
-class MaintenanceTest extends MediaWikiTestCase {
+class MaintenanceTest extends MaintenanceBaseTestCase {
/**
- * The main Maintenance instance that is used for testing.
- *
- * @var MaintenanceFixup
+ * @see MaintenanceBaseTestCase::getMaintenanceClass
*/
- private $m;
-
- protected function setUp() {
- parent::setUp();
- $this->m = new MaintenanceFixup( $this );
- }
-
- protected function tearDown() {
- if ( $this->m ) {
- $this->m->simulateShutdown();
- $this->m = null;
- }
- parent::tearDown();
+ protected function getMaintenanceClass() {
+ return Maintenance::class;
}
/**
- * asserts the output before and after simulating shutdown
+ * @see MaintenanceBaseTestCase::createMaintenance
*
- * This function simulates shutdown of self::m.
- *
- * @param string $preShutdownOutput Expected output before simulating
shutdown
- * @param bool $expectNLAppending Whether or not shutdown simulation is
expected
- * to add a newline to the output. If false, $preShutdownOutput is the
- * expected output after shutdown simulation. Otherwise,
- * $preShutdownOutput with an appended newline is the expected output
- * after shutdown simulation.
+ * Note to extension authors looking for a model to follow: This
function
+ * is normally not needed in a maintenance test, it's only overridden
here
+ * because Maintenance is abstract.
*/
- private function assertOutputPrePostShutdown( $preShutdownOutput,
$expectNLAppending ) {
- $this->assertEquals( $preShutdownOutput,
$this->getActualOutput(),
- "Output before shutdown simulation" );
+ protected function createMaintenance() {
+ $className = $this->getMaintenanceClass();
+ $obj = $this->getMockForAbstractClass( $className );
- $this->m->simulateShutdown();
- $this->m = null;
-
- $postShutdownOutput = $preShutdownOutput . ( $expectNLAppending
? "\n" : "" );
- $this->expectOutputString( $postShutdownOutput );
+ return TestingAccessWrapper::newFromObject( $obj );
}
// Although the following tests do not seem to be too consistent
(compare for
@@ -59,140 +38,140 @@
// consistent behavior, but rather currently existing behavior.
function testOutputEmpty() {
- $this->m->output( "" );
+ $this->maintenance->output( "" );
$this->assertOutputPrePostShutdown( "", false );
}
function testOutputString() {
- $this->m->output( "foo" );
+ $this->maintenance->output( "foo" );
$this->assertOutputPrePostShutdown( "foo", false );
}
function testOutputStringString() {
- $this->m->output( "foo" );
- $this->m->output( "bar" );
+ $this->maintenance->output( "foo" );
+ $this->maintenance->output( "bar" );
$this->assertOutputPrePostShutdown( "foobar", false );
}
function testOutputStringNL() {
- $this->m->output( "foo\n" );
+ $this->maintenance->output( "foo\n" );
$this->assertOutputPrePostShutdown( "foo\n", false );
}
function testOutputStringNLNL() {
- $this->m->output( "foo\n\n" );
+ $this->maintenance->output( "foo\n\n" );
$this->assertOutputPrePostShutdown( "foo\n\n", false );
}
function testOutputStringNLString() {
- $this->m->output( "foo\nbar" );
+ $this->maintenance->output( "foo\nbar" );
$this->assertOutputPrePostShutdown( "foo\nbar", false );
}
function testOutputStringNLStringNL() {
- $this->m->output( "foo\nbar\n" );
+ $this->maintenance->output( "foo\nbar\n" );
$this->assertOutputPrePostShutdown( "foo\nbar\n", false );
}
function testOutputStringNLStringNLLinewise() {
- $this->m->output( "foo\n" );
- $this->m->output( "bar\n" );
+ $this->maintenance->output( "foo\n" );
+ $this->maintenance->output( "bar\n" );
$this->assertOutputPrePostShutdown( "foo\nbar\n", false );
}
function testOutputStringNLStringNLArbitrary() {
- $this->m->output( "" );
- $this->m->output( "foo" );
- $this->m->output( "" );
- $this->m->output( "\n" );
- $this->m->output( "ba" );
- $this->m->output( "" );
- $this->m->output( "r\n" );
+ $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->m->output( "" );
- $this->m->output( "foo" );
- $this->m->output( "" );
- $this->m->output( "\nb" );
- $this->m->output( "a" );
- $this->m->output( "" );
- $this->m->output( "r\n" );
+ $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->m->output( "", null );
+ $this->maintenance->output( "", null );
$this->assertOutputPrePostShutdown( "", false );
}
function testOutputWNullChannelString() {
- $this->m->output( "foo", null );
+ $this->maintenance->output( "foo", null );
$this->assertOutputPrePostShutdown( "foo", false );
}
function testOutputWNullChannelStringString() {
- $this->m->output( "foo", null );
- $this->m->output( "bar", null );
+ $this->maintenance->output( "foo", null );
+ $this->maintenance->output( "bar", null );
$this->assertOutputPrePostShutdown( "foobar", false );
}
function testOutputWNullChannelStringNL() {
- $this->m->output( "foo\n", null );
+ $this->maintenance->output( "foo\n", null );
$this->assertOutputPrePostShutdown( "foo\n", false );
}
function testOutputWNullChannelStringNLNL() {
- $this->m->output( "foo\n\n", null );
+ $this->maintenance->output( "foo\n\n", null );
$this->assertOutputPrePostShutdown( "foo\n\n", false );
}
function testOutputWNullChannelStringNLString() {
- $this->m->output( "foo\nbar", null );
+ $this->maintenance->output( "foo\nbar", null );
$this->assertOutputPrePostShutdown( "foo\nbar", false );
}
function testOutputWNullChannelStringNLStringNL() {
- $this->m->output( "foo\nbar\n", null );
+ $this->maintenance->output( "foo\nbar\n", null );
$this->assertOutputPrePostShutdown( "foo\nbar\n", false );
}
function testOutputWNullChannelStringNLStringNLLinewise() {
- $this->m->output( "foo\n", null );
- $this->m->output( "bar\n", null );
+ $this->maintenance->output( "foo\n", null );
+ $this->maintenance->output( "bar\n", null );
$this->assertOutputPrePostShutdown( "foo\nbar\n", false );
}
function testOutputWNullChannelStringNLStringNLArbitrary() {
- $this->m->output( "", null );
- $this->m->output( "foo", null );
- $this->m->output( "", null );
- $this->m->output( "\n", null );
- $this->m->output( "ba", null );
- $this->m->output( "", null );
- $this->m->output( "r\n", null );
+ $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->m->output( "", null );
- $this->m->output( "foo", null );
- $this->m->output( "", null );
- $this->m->output( "\nb", null );
- $this->m->output( "a", null );
- $this->m->output( "", null );
- $this->m->output( "r\n", null );
+ $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->m->output( "foo", "bazChannel" );
+ $this->maintenance->output( "foo", "bazChannel" );
$this->assertOutputPrePostShutdown( "foo", true );
}
function testOutputWChannelStringNL() {
- $this->m->output( "foo\n", "bazChannel" );
+ $this->maintenance->output( "foo\n", "bazChannel" );
$this->assertOutputPrePostShutdown( "foo", true );
}
@@ -201,133 +180,133 @@
// 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->m->output( "foo\n\n", "bazChannel" );
+ $this->maintenance->output( "foo\n\n", "bazChannel" );
$this->assertOutputPrePostShutdown( "foo\n", true );
}
function testOutputWChannelStringNLString() {
- $this->m->output( "foo\nbar", "bazChannel" );
+ $this->maintenance->output( "foo\nbar", "bazChannel" );
$this->assertOutputPrePostShutdown( "foo\nbar", true );
}
function testOutputWChannelStringNLStringNL() {
- $this->m->output( "foo\nbar\n", "bazChannel" );
+ $this->maintenance->output( "foo\nbar\n", "bazChannel" );
$this->assertOutputPrePostShutdown( "foo\nbar", true );
}
function testOutputWChannelStringNLStringNLLinewise() {
- $this->m->output( "foo\n", "bazChannel" );
- $this->m->output( "bar\n", "bazChannel" );
+ $this->maintenance->output( "foo\n", "bazChannel" );
+ $this->maintenance->output( "bar\n", "bazChannel" );
$this->assertOutputPrePostShutdown( "foobar", true );
}
function testOutputWChannelStringNLStringNLArbitrary() {
- $this->m->output( "", "bazChannel" );
- $this->m->output( "foo", "bazChannel" );
- $this->m->output( "", "bazChannel" );
- $this->m->output( "\n", "bazChannel" );
- $this->m->output( "ba", "bazChannel" );
- $this->m->output( "", "bazChannel" );
- $this->m->output( "r\n", "bazChannel" );
+ $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->m->output( "", "bazChannel" );
- $this->m->output( "foo", "bazChannel" );
- $this->m->output( "", "bazChannel" );
- $this->m->output( "\nb", "bazChannel" );
- $this->m->output( "a", "bazChannel" );
- $this->m->output( "", "bazChannel" );
- $this->m->output( "r\n", "bazChannel" );
+ $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->m->output( "foo", "bazChannel" );
- $this->m->output( "bar", "bazChannel" );
- $this->m->output( "qux", "quuxChannel" );
- $this->m->output( "corge", "bazChannel" );
+ $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->m->output( "foo", "bazChannel" );
- $this->m->output( "bar\n", "bazChannel" );
- $this->m->output( "qux\n", "quuxChannel" );
- $this->m->output( "corge", "bazChannel" );
+ $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->m->output( "foo" );
- $this->m->output( "bar", "bazChannel" );
- $this->m->output( "qux" );
- $this->m->output( "quux", "bazChannel" );
+ $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->m->output( "foo", "bazChannel" );
- $this->m->output( "bar" );
- $this->m->output( "qux", "bazChannel" );
- $this->m->output( "quux" );
+ $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->m->output( "foo", 1 );
- $this->m->output( "bar", 1.0 );
+ $this->maintenance->output( "foo", 1 );
+ $this->maintenance->output( "bar", 1.0 );
$this->assertOutputPrePostShutdown( "foo\nbar", true );
}
function testOutputIntermittentEmpty() {
- $this->m->output( "foo" );
- $this->m->output( "" );
- $this->m->output( "bar" );
+ $this->maintenance->output( "foo" );
+ $this->maintenance->output( "" );
+ $this->maintenance->output( "bar" );
$this->assertOutputPrePostShutdown( "foobar", false );
}
function testOutputIntermittentFalse() {
- $this->m->output( "foo" );
- $this->m->output( false );
- $this->m->output( "bar" );
+ $this->maintenance->output( "foo" );
+ $this->maintenance->output( false );
+ $this->maintenance->output( "bar" );
$this->assertOutputPrePostShutdown( "foobar", false );
}
function testOutputIntermittentFalseAfterOtherChannel() {
- $this->m->output( "qux", "quuxChannel" );
- $this->m->output( "foo" );
- $this->m->output( false );
- $this->m->output( "bar" );
+ $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->m->output( "foo", null );
- $this->m->output( "", null );
- $this->m->output( "bar", null );
+ $this->maintenance->output( "foo", null );
+ $this->maintenance->output( "", null );
+ $this->maintenance->output( "bar", null );
$this->assertOutputPrePostShutdown( "foobar", false );
}
function testOutputWNullChannelIntermittentFalse() {
- $this->m->output( "foo", null );
- $this->m->output( false, null );
- $this->m->output( "bar", null );
+ $this->maintenance->output( "foo", null );
+ $this->maintenance->output( false, null );
+ $this->maintenance->output( "bar", null );
$this->assertOutputPrePostShutdown( "foobar", false );
}
function testOutputWChannelIntermittentEmpty() {
- $this->m->output( "foo", "bazChannel" );
- $this->m->output( "", "bazChannel" );
- $this->m->output( "bar", "bazChannel" );
+ $this->maintenance->output( "foo", "bazChannel" );
+ $this->maintenance->output( "", "bazChannel" );
+ $this->maintenance->output( "bar", "bazChannel" );
$this->assertOutputPrePostShutdown( "foobar", true );
}
function testOutputWChannelIntermittentFalse() {
- $this->m->output( "foo", "bazChannel" );
- $this->m->output( false, "bazChannel" );
- $this->m->output( "bar", "bazChannel" );
+ $this->maintenance->output( "foo", "bazChannel" );
+ $this->maintenance->output( false, "bazChannel" );
+ $this->maintenance->output( "bar", "bazChannel" );
$this->assertOutputPrePostShutdown( "foobar", true );
}
@@ -335,355 +314,355 @@
// in \n, hence we do not test such strings.
function testOutputChanneledEmpty() {
- $this->m->outputChanneled( "" );
+ $this->maintenance->outputChanneled( "" );
$this->assertOutputPrePostShutdown( "\n", false );
}
function testOutputChanneledString() {
- $this->m->outputChanneled( "foo" );
+ $this->maintenance->outputChanneled( "foo" );
$this->assertOutputPrePostShutdown( "foo\n", false );
}
function testOutputChanneledStringString() {
- $this->m->outputChanneled( "foo" );
- $this->m->outputChanneled( "bar" );
+ $this->maintenance->outputChanneled( "foo" );
+ $this->maintenance->outputChanneled( "bar" );
$this->assertOutputPrePostShutdown( "foo\nbar\n", false );
}
function testOutputChanneledStringNLString() {
- $this->m->outputChanneled( "foo\nbar" );
+ $this->maintenance->outputChanneled( "foo\nbar" );
$this->assertOutputPrePostShutdown( "foo\nbar\n", false );
}
function testOutputChanneledStringNLStringNLArbitraryAgain() {
- $this->m->outputChanneled( "" );
- $this->m->outputChanneled( "foo" );
- $this->m->outputChanneled( "" );
- $this->m->outputChanneled( "\nb" );
- $this->m->outputChanneled( "a" );
- $this->m->outputChanneled( "" );
- $this->m->outputChanneled( "r" );
+ $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->m->outputChanneled( "", null );
+ $this->maintenance->outputChanneled( "", null );
$this->assertOutputPrePostShutdown( "\n", false );
}
function testOutputChanneledWNullChannelString() {
- $this->m->outputChanneled( "foo", null );
+ $this->maintenance->outputChanneled( "foo", null );
$this->assertOutputPrePostShutdown( "foo\n", false );
}
function testOutputChanneledWNullChannelStringString() {
- $this->m->outputChanneled( "foo", null );
- $this->m->outputChanneled( "bar", null );
+ $this->maintenance->outputChanneled( "foo", null );
+ $this->maintenance->outputChanneled( "bar", null );
$this->assertOutputPrePostShutdown( "foo\nbar\n", false );
}
function testOutputChanneledWNullChannelStringNLString() {
- $this->m->outputChanneled( "foo\nbar", null );
+ $this->maintenance->outputChanneled( "foo\nbar", null );
$this->assertOutputPrePostShutdown( "foo\nbar\n", false );
}
function
testOutputChanneledWNullChannelStringNLStringNLArbitraryAgain() {
- $this->m->outputChanneled( "", null );
- $this->m->outputChanneled( "foo", null );
- $this->m->outputChanneled( "", null );
- $this->m->outputChanneled( "\nb", null );
- $this->m->outputChanneled( "a", null );
- $this->m->outputChanneled( "", null );
- $this->m->outputChanneled( "r", null );
+ $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->m->outputChanneled( "foo", "bazChannel" );
+ $this->maintenance->outputChanneled( "foo", "bazChannel" );
$this->assertOutputPrePostShutdown( "foo", true );
}
function testOutputChanneledWChannelStringNLString() {
- $this->m->outputChanneled( "foo\nbar", "bazChannel" );
+ $this->maintenance->outputChanneled( "foo\nbar", "bazChannel" );
$this->assertOutputPrePostShutdown( "foo\nbar", true );
}
function testOutputChanneledWChannelStringString() {
- $this->m->outputChanneled( "foo", "bazChannel" );
- $this->m->outputChanneled( "bar", "bazChannel" );
+ $this->maintenance->outputChanneled( "foo", "bazChannel" );
+ $this->maintenance->outputChanneled( "bar", "bazChannel" );
$this->assertOutputPrePostShutdown( "foobar", true );
}
function testOutputChanneledWChannelStringNLStringNLArbitraryAgain() {
- $this->m->outputChanneled( "", "bazChannel" );
- $this->m->outputChanneled( "foo", "bazChannel" );
- $this->m->outputChanneled( "", "bazChannel" );
- $this->m->outputChanneled( "\nb", "bazChannel" );
- $this->m->outputChanneled( "a", "bazChannel" );
- $this->m->outputChanneled( "", "bazChannel" );
- $this->m->outputChanneled( "r", "bazChannel" );
+ $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->m->outputChanneled( "foo", "bazChannel" );
- $this->m->outputChanneled( "bar", "bazChannel" );
- $this->m->outputChanneled( "qux", "quuxChannel" );
- $this->m->outputChanneled( "corge", "bazChannel" );
+ $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->m->outputChanneled( "foo", "bazChannel" );
- $this->m->outputChanneled( "bar", null );
- $this->m->outputChanneled( "qux", null );
- $this->m->outputChanneled( "corge", "bazChannel" );
+ $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->m->outputChanneled( "foo", "bazChannel" );
- $this->m->outputChanneled( "bar", null );
- $this->m->outputChanneled( "qux", null );
- $this->m->outputChanneled( "corge", "quuxChannel" );
+ $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->m->outputChanneled( "foo" );
- $this->m->outputChanneled( "bar", "bazChannel" );
- $this->m->outputChanneled( "qux" );
- $this->m->outputChanneled( "quux", "bazChannel" );
+ $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->m->outputChanneled( "foo", "bazChannel" );
- $this->m->outputChanneled( "bar" );
- $this->m->outputChanneled( "qux", "bazChannel" );
- $this->m->outputChanneled( "quux" );
+ $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->m->outputChanneled( "foo", 1 );
- $this->m->outputChanneled( "bar", 1.0 );
+ $this->maintenance->outputChanneled( "foo", 1 );
+ $this->maintenance->outputChanneled( "bar", 1.0 );
$this->assertOutputPrePostShutdown( "foo\nbar", true );
}
function testOutputChanneledWOChannelIntermittentEmpty() {
- $this->m->outputChanneled( "foo" );
- $this->m->outputChanneled( "" );
- $this->m->outputChanneled( "bar" );
+ $this->maintenance->outputChanneled( "foo" );
+ $this->maintenance->outputChanneled( "" );
+ $this->maintenance->outputChanneled( "bar" );
$this->assertOutputPrePostShutdown( "foo\n\nbar\n", false );
}
function testOutputChanneledWOChannelIntermittentFalse() {
- $this->m->outputChanneled( "foo" );
- $this->m->outputChanneled( false );
- $this->m->outputChanneled( "bar" );
+ $this->maintenance->outputChanneled( "foo" );
+ $this->maintenance->outputChanneled( false );
+ $this->maintenance->outputChanneled( "bar" );
$this->assertOutputPrePostShutdown( "foo\nbar\n", false );
}
function testOutputChanneledWNullChannelIntermittentEmpty() {
- $this->m->outputChanneled( "foo", null );
- $this->m->outputChanneled( "", null );
- $this->m->outputChanneled( "bar", null );
+ $this->maintenance->outputChanneled( "foo", null );
+ $this->maintenance->outputChanneled( "", null );
+ $this->maintenance->outputChanneled( "bar", null );
$this->assertOutputPrePostShutdown( "foo\n\nbar\n", false );
}
function testOutputChanneledWNullChannelIntermittentFalse() {
- $this->m->outputChanneled( "foo", null );
- $this->m->outputChanneled( false, null );
- $this->m->outputChanneled( "bar", null );
+ $this->maintenance->outputChanneled( "foo", null );
+ $this->maintenance->outputChanneled( false, null );
+ $this->maintenance->outputChanneled( "bar", null );
$this->assertOutputPrePostShutdown( "foo\nbar\n", false );
}
function testOutputChanneledWChannelIntermittentEmpty() {
- $this->m->outputChanneled( "foo", "bazChannel" );
- $this->m->outputChanneled( "", "bazChannel" );
- $this->m->outputChanneled( "bar", "bazChannel" );
+ $this->maintenance->outputChanneled( "foo", "bazChannel" );
+ $this->maintenance->outputChanneled( "", "bazChannel" );
+ $this->maintenance->outputChanneled( "bar", "bazChannel" );
$this->assertOutputPrePostShutdown( "foobar", true );
}
function testOutputChanneledWChannelIntermittentFalse() {
- $this->m->outputChanneled( "foo", "bazChannel" );
- $this->m->outputChanneled( false, "bazChannel" );
- $this->m->outputChanneled( "bar", "bazChannel" );
+ $this->maintenance->outputChanneled( "foo", "bazChannel" );
+ $this->maintenance->outputChanneled( false, "bazChannel" );
+ $this->maintenance->outputChanneled( "bar", "bazChannel" );
$this->assertOutputPrePostShutdown( "foo\nbar", true );
}
function testCleanupChanneledClean() {
- $this->m->cleanupChanneled();
+ $this->maintenance->cleanupChanneled();
$this->assertOutputPrePostShutdown( "", false );
}
function testCleanupChanneledAfterOutput() {
- $this->m->output( "foo" );
- $this->m->cleanupChanneled();
+ $this->maintenance->output( "foo" );
+ $this->maintenance->cleanupChanneled();
$this->assertOutputPrePostShutdown( "foo", false );
}
function testCleanupChanneledAfterOutputWNullChannel() {
- $this->m->output( "foo", null );
- $this->m->cleanupChanneled();
+ $this->maintenance->output( "foo", null );
+ $this->maintenance->cleanupChanneled();
$this->assertOutputPrePostShutdown( "foo", false );
}
function testCleanupChanneledAfterOutputWChannel() {
- $this->m->output( "foo", "bazChannel" );
- $this->m->cleanupChanneled();
+ $this->maintenance->output( "foo", "bazChannel" );
+ $this->maintenance->cleanupChanneled();
$this->assertOutputPrePostShutdown( "foo\n", false );
}
function testCleanupChanneledAfterNLOutput() {
- $this->m->output( "foo\n" );
- $this->m->cleanupChanneled();
+ $this->maintenance->output( "foo\n" );
+ $this->maintenance->cleanupChanneled();
$this->assertOutputPrePostShutdown( "foo\n", false );
}
function testCleanupChanneledAfterNLOutputWNullChannel() {
- $this->m->output( "foo\n", null );
- $this->m->cleanupChanneled();
+ $this->maintenance->output( "foo\n", null );
+ $this->maintenance->cleanupChanneled();
$this->assertOutputPrePostShutdown( "foo\n", false );
}
function testCleanupChanneledAfterNLOutputWChannel() {
- $this->m->output( "foo\n", "bazChannel" );
- $this->m->cleanupChanneled();
+ $this->maintenance->output( "foo\n", "bazChannel" );
+ $this->maintenance->cleanupChanneled();
$this->assertOutputPrePostShutdown( "foo\n", false );
}
function testCleanupChanneledAfterOutputChanneledWOChannel() {
- $this->m->outputChanneled( "foo" );
- $this->m->cleanupChanneled();
+ $this->maintenance->outputChanneled( "foo" );
+ $this->maintenance->cleanupChanneled();
$this->assertOutputPrePostShutdown( "foo\n", false );
}
function testCleanupChanneledAfterOutputChanneledWNullChannel() {
- $this->m->outputChanneled( "foo", null );
- $this->m->cleanupChanneled();
+ $this->maintenance->outputChanneled( "foo", null );
+ $this->maintenance->cleanupChanneled();
$this->assertOutputPrePostShutdown( "foo\n", false );
}
function testCleanupChanneledAfterOutputChanneledWChannel() {
- $this->m->outputChanneled( "foo", "bazChannel" );
- $this->m->cleanupChanneled();
+ $this->maintenance->outputChanneled( "foo", "bazChannel" );
+ $this->maintenance->cleanupChanneled();
$this->assertOutputPrePostShutdown( "foo\n", false );
}
function testMultipleMaintenanceObjectsInteractionOutput() {
- $m2 = new MaintenanceFixup( $this );
+ $m2 = $this->createMaintenance();
- $this->m->output( "foo" );
+ $this->maintenance->output( "foo" );
$m2->output( "bar" );
$this->assertEquals( "foobar", $this->getActualOutput(),
"Output before shutdown simulation (m2)" );
- $m2->simulateShutdown();
+ $m2->cleanupChanneled();
$this->assertOutputPrePostShutdown( "foobar", false );
}
function testMultipleMaintenanceObjectsInteractionOutputWNullChannel() {
- $m2 = new MaintenanceFixup( $this );
+ $m2 = $this->createMaintenance();
- $this->m->output( "foo", null );
+ $this->maintenance->output( "foo", null );
$m2->output( "bar", null );
$this->assertEquals( "foobar", $this->getActualOutput(),
"Output before shutdown simulation (m2)" );
- $m2->simulateShutdown();
+ $m2->cleanupChanneled();
$this->assertOutputPrePostShutdown( "foobar", false );
}
function testMultipleMaintenanceObjectsInteractionOutputWChannel() {
- $m2 = new MaintenanceFixup( $this );
+ $m2 = $this->createMaintenance();
- $this->m->output( "foo", "bazChannel" );
+ $this->maintenance->output( "foo", "bazChannel" );
$m2->output( "bar", "bazChannel" );
$this->assertEquals( "foobar", $this->getActualOutput(),
"Output before shutdown simulation (m2)" );
- $m2->simulateShutdown();
+ $m2->cleanupChanneled();
$this->assertOutputPrePostShutdown( "foobar\n", true );
}
function
testMultipleMaintenanceObjectsInteractionOutputWNullChannelNL() {
- $m2 = new MaintenanceFixup( $this );
+ $m2 = $this->createMaintenance();
- $this->m->output( "foo\n", null );
+ $this->maintenance->output( "foo\n", null );
$m2->output( "bar\n", null );
$this->assertEquals( "foo\nbar\n", $this->getActualOutput(),
"Output before shutdown simulation (m2)" );
- $m2->simulateShutdown();
+ $m2->cleanupChanneled();
$this->assertOutputPrePostShutdown( "foo\nbar\n", false );
}
function testMultipleMaintenanceObjectsInteractionOutputWChannelNL() {
- $m2 = new MaintenanceFixup( $this );
+ $m2 = $this->createMaintenance();
- $this->m->output( "foo\n", "bazChannel" );
+ $this->maintenance->output( "foo\n", "bazChannel" );
$m2->output( "bar\n", "bazChannel" );
$this->assertEquals( "foobar", $this->getActualOutput(),
"Output before shutdown simulation (m2)" );
- $m2->simulateShutdown();
+ $m2->cleanupChanneled();
$this->assertOutputPrePostShutdown( "foobar\n", true );
}
function testMultipleMaintenanceObjectsInteractionOutputChanneled() {
- $m2 = new MaintenanceFixup( $this );
+ $m2 = $this->createMaintenance();
- $this->m->outputChanneled( "foo" );
+ $this->maintenance->outputChanneled( "foo" );
$m2->outputChanneled( "bar" );
$this->assertEquals( "foo\nbar\n", $this->getActualOutput(),
"Output before shutdown simulation (m2)" );
- $m2->simulateShutdown();
+ $m2->cleanupChanneled();
$this->assertOutputPrePostShutdown( "foo\nbar\n", false );
}
function
testMultipleMaintenanceObjectsInteractionOutputChanneledWNullChannel() {
- $m2 = new MaintenanceFixup( $this );
+ $m2 = $this->createMaintenance();
- $this->m->outputChanneled( "foo", null );
+ $this->maintenance->outputChanneled( "foo", null );
$m2->outputChanneled( "bar", null );
$this->assertEquals( "foo\nbar\n", $this->getActualOutput(),
"Output before shutdown simulation (m2)" );
- $m2->simulateShutdown();
+ $m2->cleanupChanneled();
$this->assertOutputPrePostShutdown( "foo\nbar\n", false );
}
function
testMultipleMaintenanceObjectsInteractionOutputChanneledWChannel() {
- $m2 = new MaintenanceFixup( $this );
+ $m2 = $this->createMaintenance();
- $this->m->outputChanneled( "foo", "bazChannel" );
+ $this->maintenance->outputChanneled( "foo", "bazChannel" );
$m2->outputChanneled( "bar", "bazChannel" );
$this->assertEquals( "foobar", $this->getActualOutput(),
"Output before shutdown simulation (m2)" );
- $m2->simulateShutdown();
+ $m2->cleanupChanneled();
$this->assertOutputPrePostShutdown( "foobar\n", true );
}
function
testMultipleMaintenanceObjectsInteractionCleanupChanneledWChannel() {
- $m2 = new MaintenanceFixup( $this );
+ $m2 = $this->createMaintenance();
- $this->m->outputChanneled( "foo", "bazChannel" );
+ $this->maintenance->outputChanneled( "foo", "bazChannel" );
$m2->outputChanneled( "bar", "bazChannel" );
$this->assertEquals( "foobar", $this->getActualOutput(),
"Output before first cleanup" );
- $this->m->cleanupChanneled();
+ $this->maintenance->cleanupChanneled();
$this->assertEquals( "foobar\n", $this->getActualOutput(),
"Output after first cleanup" );
$m2->cleanupChanneled();
$this->assertEquals( "foobar\n\n", $this->getActualOutput(),
"Output after second cleanup" );
- $m2->simulateShutdown();
+ $m2->cleanupChanneled();
$this->assertOutputPrePostShutdown( "foobar\n\n", false );
}
@@ -691,10 +670,10 @@
* @covers Maintenance::getConfig
*/
public function testGetConfig() {
- $this->assertInstanceOf( 'Config', $this->m->getConfig() );
+ $this->assertInstanceOf( 'Config',
$this->maintenance->getConfig() );
$this->assertSame(
MediaWikiServices::getInstance()->getMainConfig(),
- $this->m->getConfig()
+ $this->maintenance->getConfig()
);
}
@@ -703,12 +682,13 @@
*/
public function testSetConfig() {
$conf = $this->createMock( 'Config' );
- $this->m->setConfig( $conf );
- $this->assertSame( $conf, $this->m->getConfig() );
+ $this->maintenance->setConfig( $conf );
+ $this->assertSame( $conf, $this->maintenance->getConfig() );
}
function testParseArgs() {
- $m2 = new MaintenanceFixup( $this );
+ $m2 = $this->createMaintenance();
+
// Create an option with an argument allowed to be specified
multiple times
$m2->addOption( 'multi', 'This option does stuff', false, true,
false, true );
$m2->loadWithArgv( [ '--multi', 'this1', '--multi', 'this2' ] );
@@ -717,9 +697,9 @@
$this->assertEquals( [ [ 'multi', 'this1' ], [ 'multi', 'this2'
] ],
$m2->orderedOptions );
- $m2->simulateShutdown();
+ $m2->cleanupChanneled();
- $m2 = new MaintenanceFixup( $this );
+ $m2 = $this->createMaintenance();
$m2->addOption( 'multi', 'This option does stuff', false,
false, false, true );
$m2->loadWithArgv( [ '--multi', '--multi' ] );
@@ -727,9 +707,10 @@
$this->assertEquals( [ 1, 1 ], $m2->getOption( 'multi' ) );
$this->assertEquals( [ [ 'multi', 1 ], [ 'multi', 1 ] ],
$m2->orderedOptions );
- $m2->simulateShutdown();
+ $m2->cleanupChanneled();
- $m2 = new MaintenanceFixup( $this );
+ $m2 = $this->createMaintenance();
+
// Create an option with an argument allowed to be specified
multiple times
$m2->addOption( 'multi', 'This option doesn\'t actually support
multiple occurrences' );
$m2->loadWithArgv( [ '--multi=yo' ] );
@@ -737,6 +718,6 @@
$this->assertEquals( 'yo', $m2->getOption( 'multi' ) );
$this->assertEquals( [ [ 'multi', 'yo' ] ], $m2->orderedOptions
);
- $m2->simulateShutdown();
+ $m2->cleanupChanneled();
}
}
--
To view, visit https://gerrit.wikimedia.org/r/404606
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: merged
Gerrit-Change-Id: I0cb2320f765e847a59c721918401da07a3a2b24a
Gerrit-PatchSet: 9
Gerrit-Project: mediawiki/core
Gerrit-Branch: master
Gerrit-Owner: Awight <[email protected]>
Gerrit-Reviewer: Addshore <[email protected]>
Gerrit-Reviewer: Anomie <[email protected]>
Gerrit-Reviewer: Awight <[email protected]>
Gerrit-Reviewer: Ladsgroup <[email protected]>
Gerrit-Reviewer: Legoktm <[email protected]>
Gerrit-Reviewer: Thiemo Kreuz (WMDE) <[email protected]>
Gerrit-Reviewer: Umherirrender <[email protected]>
Gerrit-Reviewer: Unicornisaurous <[email protected]>
Gerrit-Reviewer: jenkins-bot <>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits