2014-08-19 22:23:05 +00:00
|
|
|
<?php
|
|
|
|
|
|
|
|
|
|
class DeferredUpdatesTest extends MediaWikiTestCase {
|
2015-05-18 21:20:35 +00:00
|
|
|
public function testDoUpdatesWeb() {
|
|
|
|
|
$this->setMwGlobals( 'wgCommandLineMode', false );
|
2014-08-19 22:23:05 +00:00
|
|
|
|
2014-08-25 17:16:36 +00:00
|
|
|
$updates = array(
|
2014-08-19 22:23:05 +00:00
|
|
|
'1' => 'deferred update 1',
|
|
|
|
|
'2' => 'deferred update 2',
|
|
|
|
|
'3' => 'deferred update 3',
|
|
|
|
|
'2-1' => 'deferred update 1 within deferred update 2',
|
|
|
|
|
);
|
|
|
|
|
DeferredUpdates::addCallableUpdate(
|
|
|
|
|
function () use ( $updates ) {
|
|
|
|
|
echo $updates['1'];
|
|
|
|
|
}
|
|
|
|
|
);
|
|
|
|
|
DeferredUpdates::addCallableUpdate(
|
|
|
|
|
function () use ( $updates ) {
|
|
|
|
|
echo $updates['2'];
|
|
|
|
|
DeferredUpdates::addCallableUpdate(
|
2014-08-25 17:16:36 +00:00
|
|
|
function () use ( $updates ) {
|
2014-08-19 22:23:05 +00:00
|
|
|
echo $updates['2-1'];
|
|
|
|
|
}
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
);
|
|
|
|
|
DeferredUpdates::addCallableUpdate(
|
|
|
|
|
function () use ( $updates ) {
|
|
|
|
|
echo $updates[3];
|
|
|
|
|
}
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
$this->expectOutputString( implode( '', $updates ) );
|
|
|
|
|
|
|
|
|
|
DeferredUpdates::doUpdates();
|
2015-11-30 22:02:53 +00:00
|
|
|
|
|
|
|
|
$x = null;
|
|
|
|
|
$y = null;
|
|
|
|
|
DeferredUpdates::addCallableUpdate(
|
|
|
|
|
function () use ( &$x ) {
|
|
|
|
|
$x = 'Sherity';
|
|
|
|
|
},
|
|
|
|
|
DeferredUpdates::PRESEND
|
|
|
|
|
);
|
|
|
|
|
DeferredUpdates::addCallableUpdate(
|
|
|
|
|
function () use ( &$y ) {
|
|
|
|
|
$y = 'Marychu';
|
|
|
|
|
},
|
|
|
|
|
DeferredUpdates::POSTSEND
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
$this->assertNull( $x, "Update not run yet" );
|
|
|
|
|
$this->assertNull( $y, "Update not run yet" );
|
|
|
|
|
|
|
|
|
|
DeferredUpdates::doUpdates( 'run', DeferredUpdates::PRESEND );
|
|
|
|
|
$this->assertEquals( "Sherity", $x, "PRESEND update ran" );
|
|
|
|
|
$this->assertNull( $y, "POSTSEND update not run yet" );
|
|
|
|
|
|
|
|
|
|
DeferredUpdates::doUpdates( 'run', DeferredUpdates::POSTSEND );
|
|
|
|
|
$this->assertEquals( "Marychu", $y, "POSTSEND update ran" );
|
2014-08-19 22:23:05 +00:00
|
|
|
}
|
|
|
|
|
|
2015-05-18 21:20:35 +00:00
|
|
|
public function testDoUpdatesCLI() {
|
|
|
|
|
$this->setMwGlobals( 'wgCommandLineMode', true );
|
|
|
|
|
|
|
|
|
|
$updates = array(
|
|
|
|
|
'1' => 'deferred update 1',
|
|
|
|
|
'2' => 'deferred update 2',
|
|
|
|
|
'2-1' => 'deferred update 1 within deferred update 2',
|
|
|
|
|
'3' => 'deferred update 3',
|
|
|
|
|
);
|
|
|
|
|
DeferredUpdates::addCallableUpdate(
|
|
|
|
|
function () use ( $updates ) {
|
|
|
|
|
echo $updates['1'];
|
|
|
|
|
}
|
|
|
|
|
);
|
|
|
|
|
DeferredUpdates::addCallableUpdate(
|
|
|
|
|
function () use ( $updates ) {
|
|
|
|
|
echo $updates['2'];
|
|
|
|
|
DeferredUpdates::addCallableUpdate(
|
|
|
|
|
function () use ( $updates ) {
|
|
|
|
|
echo $updates['2-1'];
|
|
|
|
|
}
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
);
|
|
|
|
|
DeferredUpdates::addCallableUpdate(
|
|
|
|
|
function () use ( $updates ) {
|
|
|
|
|
echo $updates[3];
|
|
|
|
|
}
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
$this->expectOutputString( implode( '', $updates ) );
|
|
|
|
|
|
|
|
|
|
DeferredUpdates::doUpdates();
|
|
|
|
|
}
|
2014-08-19 22:23:05 +00:00
|
|
|
}
|