getFilename(), "${dirSeparator}unit${dirSeparator}" ) === false ) { $this->fail( 'This unit test needs to be in "tests/phpunit/unit"!' ); } $this->unitGlobals = $GLOBALS; unset( $GLOBALS ); $GLOBALS = []; // Add back the minimal set of globals needed for unit tests to run for core + // extensions/skins. foreach ( $this->unitGlobals['wgPhpUnitBootstrapGlobals'] ?? [] as $key => $value ) { $GLOBALS[ $key ] = $this->unitGlobals[ $key ]; } } protected function tearDown() { $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 ]; } }