X-Git-Url: http://git.cyclocoop.org/?a=blobdiff_plain;f=tests%2Fphpunit%2FMediaWikiUnitTestCase.php;h=ccf3357f63aca05e4bf1361808132716c733b646;hb=5e2199c5b0c383337c78e0bc0160397b0f05b3b5;hp=43a333cb885e4872855e1023d911835712355e0e;hpb=5f3ca358fed2e59ee33f1134dbee247495c0f09a;p=lhc%2Fweb%2Fwiklou.git diff --git a/tests/phpunit/MediaWikiUnitTestCase.php b/tests/phpunit/MediaWikiUnitTestCase.php index 43a333cb88..ccf3357f63 100644 --- a/tests/phpunit/MediaWikiUnitTestCase.php +++ b/tests/phpunit/MediaWikiUnitTestCase.php @@ -26,18 +26,22 @@ use PHPUnit\Framework\TestCase; * * Extend this class if you are testing classes which use dependency injection and do not access * global functions, variables, services or a storage backend. + * + * @since 1.34 */ abstract class MediaWikiUnitTestCase extends TestCase { use PHPUnit4And6Compat; use MediaWikiCoversValidator; + use MediaWikiTestCaseTrait; private $unitGlobals = []; protected function setUp() { parent::setUp(); $reflection = new ReflectionClass( $this ); - if ( strpos( $reflection->getFilename(), '/unit/' ) === false ) { - $this->fail( 'This unit test needs to be in "tests/phpunit/unit" !' ); + $dirSeparator = DIRECTORY_SEPARATOR; + if ( strpos( $reflection->getFilename(), "${dirSeparator}unit${dirSeparator}" ) === false ) { + $this->fail( 'This unit test needs to be in "tests/phpunit/unit"!' ); } $this->unitGlobals = $GLOBALS; unset( $GLOBALS ); @@ -53,4 +57,19 @@ abstract class MediaWikiUnitTestCase extends TestCase { $GLOBALS = $this->unitGlobals; parent::tearDown(); } + + /** + * Create a temporary hook handler which will be reset by tearDown. + * This replaces other handlers for the same hook. + * @param string $hookName Hook name + * @param mixed $handler Value suitable for a hook handler + * @since 1.34 + */ + protected function setTemporaryHook( $hookName, $handler ) { + // This will be reset by tearDown() when it restores globals. We don't want to use + // Hooks::register()/clear() because they won't replace other handlers for the same hook, + // which doesn't match behavior of MediaWikiIntegrationTestCase. + global $wgHooks; + $wgHooks[$hookName] = [ $handler ]; + } }