use MediaWiki\MediaWikiServices;
use Psr\Log\LoggerInterface;
-use Psr\Log\NullLogger;
abstract class ResourceLoaderTestCase extends MediaWikiTestCase {
// Version hash for a blank file module.
'only' => 'scripts',
'safemode' => null,
];
- $resourceLoader = $rl ?: new ResourceLoader();
+ $resourceLoader = $rl ?: new ResourceLoader( MediaWikiServices::getInstance()->getMainConfig() );
$request = new FauxRequest( [
'debug' => $options['debug'],
'lang' => $options['lang'],
// For ResourceLoader::inDebugMode since it doesn't have context
'ResourceLoaderDebug' => true,
- // Avoid influence from wgInvalidateCacheOnLocalSettingsChange
- 'CacheEpoch' => '20140101000000',
-
- // For wfScript()
+ // For ResourceLoaderStartUpModule and ResourceLoader::__construct()
'ScriptPath' => '/w',
'Script' => '/w/index.php',
'LoadScript' => '/w/load.php',
+
+ // For ResourceLoader::register() - TODO: Inject somehow T32956
+ 'ResourceModuleSkinStyles' => [],
+
+ // For ResourceLoader::respond() - TODO: Inject somehow T32956
+ 'UseFileCache' => false,
];
}
+ public static function getMinimalConfig() {
+ return new HashConfig( self::getSettings() );
+ }
+
protected function setUp() {
parent::setUp();
public function isRaw() {
return $this->isRaw;
}
+
public function isKnownEmpty( ResourceLoaderContext $context ) {
return $this->isKnownEmpty;
}
}
}
+/**
+ * A more constrained and testable variant of ResourceLoaderFileModule.
+ *
+ * - Implements getLessVars() support.
+ * - Disables database persistance of discovered file dependencies.
+ */
class ResourceLoaderFileTestModule extends ResourceLoaderFileModule {
protected $lessVars = [];
- public function __construct( $options = [], $test = [] ) {
- parent::__construct( $options );
-
- foreach ( $test as $key => $value ) {
- $this->$key = $value;
+ public function __construct( $options = [] ) {
+ if ( isset( $options['lessVars'] ) ) {
+ $this->lessVars = $options['lessVars'];
+ unset( $options['lessVars'] );
}
+
+ parent::__construct( $options );
}
public function getLessVars( ResourceLoaderContext $context ) {
return $this->lessVars;
}
+
+ /** @return array */
+ protected function getFileDependencies( ResourceLoaderContext $context ) {
+ // No-op
+ return [];
+ }
+
+ protected function saveFileDependencies( ResourceLoaderContext $context, $refs ) {
+ // No-op
+ }
}
-class ResourceLoaderFileModuleTestModule extends ResourceLoaderFileModule {
+class ResourceLoaderFileModuleTestingSubclass extends ResourceLoaderFileModule {
}
class EmptyResourceLoader extends ResourceLoader {
- // TODO: This won't be needed once ResourceLoader is empty by default
- // and default registrations are done from ServiceWiring instead.
public function __construct( Config $config = null, LoggerInterface $logger = null ) {
- $this->setLogger( $logger ?: new NullLogger() );
- $this->config = $config ?: MediaWikiServices::getInstance()->getMainConfig();
- // Source "local" is required by StartupModule
- $this->addSource( 'local', $this->config->get( 'LoadScript' ) );
- $this->setMessageBlobStore( new MessageBlobStore( $this, $this->getLogger() ) );
+ parent::__construct( $config ?: ResourceLoaderTestCase::getMinimalConfig(), $logger );
}
public function getErrors() {