Also, for the unit test, disable the two methods we use there
that can get called. The unintended side-effects of these two
methods was the only reason it used `@group Database`.
Removing that makes the test a bit faster as well.
Enforce this via MediaWikiServices for this suite to avoid an
untracked dependency slipping back in in the future.
Bug: T225730
Change-Id: I6c54466e9517d9899bc39f8f9bb946369c0a526d
/**
* ResourceLoader module based on local JavaScript/CSS files.
/**
* ResourceLoader module based on local JavaScript/CSS files.
+ *
+ * The following public methods can query the database:
+ *
+ * - getDefinitionSummary / … / ResourceLoaderModule::getFileDependencies.
+ * - getVersionHash / getDefinitionSummary / … / ResourceLoaderModule::getFileDependencies.
+ * - getStyles / ResourceLoaderModule::saveFileDependencies.
*/
class ResourceLoaderFileModule extends ResourceLoaderModule {
*/
class ResourceLoaderFileModule extends ResourceLoaderModule {
+/**
+ * A more constrained and testable variant of ResourceLoaderFileModule.
+ *
+ * - Implements getLessVars() support.
+ * - Disables database persistance of discovered file dependencies.
+ */
class ResourceLoaderFileTestModule extends ResourceLoaderFileModule {
protected $lessVars = [];
class ResourceLoaderFileTestModule extends ResourceLoaderFileModule {
protected $lessVars = [];
public function getLessVars( ResourceLoaderContext $context ) {
return $this->lessVars;
}
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 ResourceLoaderFileModuleTestingSubclass extends ResourceLoaderFileModule {
}
class ResourceLoaderFileModuleTestingSubclass extends ResourceLoaderFileModule {
* @group ResourceLoader
*/
class ResourceLoaderFileModuleTest extends ResourceLoaderTestCase {
* @group ResourceLoader
*/
class ResourceLoaderFileModuleTest extends ResourceLoaderTestCase {
}
);
$this->setService( 'SkinFactory', $skinFactory );
}
);
$this->setService( 'SkinFactory', $skinFactory );
+
+ // This test is not expected to query any database
+ MediaWiki\MediaWikiServices::disableStorageBackend();
}
private static function getModules() {
$base = [
}
private static function getModules() {
$base = [
- 'localBasePath' => realpath( __DIR__ ),
+ 'localBasePath' => __DIR__,
*/
public function testMixedCssAnnotations() {
$basePath = __DIR__ . '/../../data/css';
*/
public function testMixedCssAnnotations() {
$basePath = __DIR__ . '/../../data/css';
- $testModule = new ResourceLoaderFileModule( [
+ $testModule = new ResourceLoaderFileTestModule( [
'localBasePath' => $basePath,
'styles' => [ 'test.css' ],
] );
$testModule->setName( 'testing' );
'localBasePath' => $basePath,
'styles' => [ 'test.css' ],
] );
$testModule->setName( 'testing' );
- $expectedModule = new ResourceLoaderFileModule( [
+ $expectedModule = new ResourceLoaderFileTestModule( [
'localBasePath' => $basePath,
'styles' => [ 'expected.css' ],
] );
'localBasePath' => $basePath,
'styles' => [ 'expected.css' ],
] );
*/
public function testBomConcatenation() {
$basePath = __DIR__ . '/../../data/css';
*/
public function testBomConcatenation() {
$basePath = __DIR__ . '/../../data/css';
- $testModule = new ResourceLoaderFileModule( [
+ $testModule = new ResourceLoaderFileTestModule( [
'localBasePath' => $basePath,
'styles' => [ 'bom.css' ],
] );
'localBasePath' => $basePath,
'styles' => [ 'bom.css' ],
] );