selfAccess = TestingAccessWrapper::newFromObject( $this ); } public function recache( $code ) { $hookContainer = MediaWikiServices::getInstance()->getHookContainer(); // Test run performance is killed if we have to regenerate l10n for every test $cacheKey = sha1( json_encode( [ $code, $this->selfAccess->options->get( MainConfigNames::ExtensionMessagesFiles ), $this->selfAccess->options->get( MainConfigNames::MessagesDirs ), $hookContainer->getHandlerDescriptions( 'LocalisationCacheRecacheFallback' ), $hookContainer->getHandlerDescriptions( 'LocalisationCacheRecache' ), ] ) ); $cache = self::$testingCache->get( $cacheKey ); if ( $cache ) { foreach ( self::PROPERTY_NAMES as $prop ) { $this->$prop[$code] = $cache[$prop]; } $loadedItems = $this->selfAccess->loadedItems; foreach ( $cache['data'] as $key => $_ ) { $loadedItems[$code][$key] = true; } $this->selfAccess->loadedItems = $loadedItems; return; } parent::recache( $code ); $cache = []; foreach ( self::PROPERTY_NAMES as $prop ) { $cache[$prop] = $this->$prop[$code]; } self::$testingCache->set( $cacheKey, $cache ); } }