X-Git-Url: https://git.heureux-cyclage.org/?a=blobdiff_plain;f=tests%2Fphpunit%2Fincludes%2Fdeferred%2FDeferredUpdatesTest.php;h=3b423563cace84fa3e5b8ab2ad13f5f190b700bb;hb=3daad1264bb80babc359f95843bd9b3d8ddc01e6;hp=4227693a2e8f54dacc077a442b83efa6f1b8cb04;hpb=a206443c0e0f8efbdbc9b2e0a6b201a3a3527dd9;p=lhc%2Fweb%2Fwiklou.git diff --git a/tests/phpunit/includes/deferred/DeferredUpdatesTest.php b/tests/phpunit/includes/deferred/DeferredUpdatesTest.php index 4227693a2e..3b423563ca 100644 --- a/tests/phpunit/includes/deferred/DeferredUpdatesTest.php +++ b/tests/phpunit/includes/deferred/DeferredUpdatesTest.php @@ -1,6 +1,39 @@ setMwGlobals( 'wgCommandLineMode', false ); + + $pre = DeferredUpdates::PRESEND; + $post = DeferredUpdates::POSTSEND; + $all = DeferredUpdates::ALL; + + $update = $this->getMock( DeferrableUpdate::class ); + $update->expects( $this->never() ) + ->method( 'doUpdate' ); + + DeferredUpdates::addUpdate( $update, $pre ); + $this->assertCount( 1, DeferredUpdates::getPendingUpdates( $pre ) ); + $this->assertCount( 0, DeferredUpdates::getPendingUpdates( $post ) ); + $this->assertCount( 1, DeferredUpdates::getPendingUpdates( $all ) ); + $this->assertCount( 1, DeferredUpdates::getPendingUpdates() ); + DeferredUpdates::clearPendingUpdates(); + $this->assertCount( 0, DeferredUpdates::getPendingUpdates() ); + + DeferredUpdates::addUpdate( $update, $post ); + $this->assertCount( 0, DeferredUpdates::getPendingUpdates( $pre ) ); + $this->assertCount( 1, DeferredUpdates::getPendingUpdates( $post ) ); + $this->assertCount( 1, DeferredUpdates::getPendingUpdates( $all ) ); + $this->assertCount( 1, DeferredUpdates::getPendingUpdates() ); + DeferredUpdates::clearPendingUpdates(); + $this->assertCount( 0, DeferredUpdates::getPendingUpdates() ); + } + public function testDoUpdatesWeb() { $this->setMwGlobals( 'wgCommandLineMode', false ); @@ -159,4 +192,30 @@ class DeferredUpdatesTest extends MediaWikiTestCase { DeferredUpdates::doUpdates(); } + + public function testPresendAddOnPostsendRun() { + $this->setMwGlobals( 'wgCommandLineMode', true ); + + $x = false; + $y = false; + wfGetLBFactory()->commitMasterChanges( __METHOD__ ); // clear anything + + DeferredUpdates::addCallableUpdate( + function () use ( &$x, &$y ) { + $x = true; + DeferredUpdates::addCallableUpdate( + function () use ( &$y ) { + $y = true; + }, + DeferredUpdates::PRESEND + ); + }, + DeferredUpdates::POSTSEND + ); + + DeferredUpdates::doUpdates(); + + $this->assertTrue( $x, "Outer POSTSEND update ran" ); + $this->assertTrue( $y, "Nested PRESEND update ran" ); + } }