'SkinModule (FileModule subclass)' => [ true,
[ 'class' => ResourceLoaderSkinModule::class, 'scripts' => 'example.js' ]
],
- 'JqueryMsgModule (FileModule subclass)' => [ true, [
- 'class' => ResourceLoaderJqueryMsgModule::class,
- 'scripts' => 'example.js',
- ] ],
'WikiModule' => [ false, [
'class' => ResourceLoaderWikiModule::class,
'scripts' => [ 'MediaWiki:Example.js' ],
'expected' => 'mw.loader.implement( "user", "mw.example( 1 );" );',
] ],
+ [ [
+ 'title' => 'Implement multi-file script',
+
+ 'name' => 'test.multifile',
+ 'scripts' => [
+ 'files' => [
+ 'one.js' => [
+ 'type' => 'script',
+ 'content' => 'mw.example( 1 );',
+ ],
+ 'two.json' => [
+ 'type' => 'data',
+ 'content' => [ 'n' => 2 ],
+ ],
+ 'three.js' => [
+ 'type' => 'script',
+ 'content' => 'mw.example( 3 );'
+ ],
+ ],
+ 'main' => 'three.js',
+ ],
+
+ 'expected' => <<<END
+mw.loader.implement( "test.multifile", {
+ "main": "three.js",
+ "files": {
+ "one.js": function ( require, module ) {
+mw.example( 1 );
+},
+ "two.json": {
+ "n": 2
+},
+ "three.js": function ( require, module ) {
+mw.example( 3 );
+}
+}
+} );
+END
+ ] ],
];
}
public function testMakeLoaderImplementScript( $case ) {
$case += [
'wrap' => true,
- 'styles' => [], 'templates' => [], 'messages' => new XmlJsCode( '{}' )
+ 'styles' => [], 'templates' => [], 'messages' => new XmlJsCode( '{}' ), 'packageFiles' => [],
];
ResourceLoader::clearCache();
$this->setMwGlobals( 'wgResourceLoaderDebug', true );
: $case['scripts'],
$case['styles'],
$case['messages'],
- $case['templates']
+ $case['templates'],
+ $case['packageFiles']
)
);
}
123, // scripts
null, // styles
null, // messages
- null // templates
+ null, // templates
+ null // package files
);
}
);
$this->assertEquals(
- 'mw.loader.register( "test.name", "1234567" );',
- ResourceLoader::makeLoaderRegisterScript(
- 'test.name',
- '1234567'
- ),
- 'Variadic parameters'
+ 'mw.loader.register( [
+ [
+ "test.foo",
+ "100"
+ ],
+ [
+ "test.bar",
+ "200",
+ [
+ "test.unknown"
+ ]
+ ],
+ [
+ "test.baz",
+ "300",
+ [
+ 3,
+ 0
+ ]
+ ],
+ [
+ "test.quux",
+ "400",
+ [],
+ null,
+ null,
+ "return true;"
+ ]
+] );',
+ ResourceLoader::makeLoaderRegisterScript( [
+ [ 'test.foo', '100' , [], null, null ],
+ [ 'test.bar', '200', [ 'test.unknown' ], null ],
+ [ 'test.baz', '300', [ 'test.quux', 'test.foo' ], null ],
+ [ 'test.quux', '400', [], null, null, 'return true;' ],
+ ] ),
+ 'Compact dependency indexes'
);
}
*/
public function testMakeLoaderSourcesScript() {
$this->assertEquals(
- 'mw.loader.addSource( "local", "/w/load.php" );',
+ 'mw.loader.addSource( {
+ "local": "/w/load.php"
+} );',
ResourceLoader::makeLoaderSourcesScript( 'local', '/w/load.php' )
);
$this->assertEquals(
$response
);
}
+
/**
* Verify that when building the startup module response,
* an exception from one module class will not break the entire
$this->assertRegExp( '/Ferry not found/', $errors[0] );
$this->assertCount( 1, $errors );
$this->assertRegExp(
- '/isCompatible.*function startUp/s',
+ '/isCompatible.*window\.RLQ/s',
$response,
'startup response undisrupted (T152266)'
);