] );',
] ],
[ [
- 'msg' => 'Omit raw modules from registry',
+ 'msg' => 'Optimise the dependency tree (basic case)',
'modules' => [
- 'test.raw' => new ResourceLoaderTestModule( [ 'isRaw' => true ] ),
- 'test.blank' => new ResourceLoaderTestModule(),
+ 'a' => new ResourceLoaderTestModule( [ 'dependencies' => [ 'b', 'c', 'd' ] ] ),
+ 'b' => new ResourceLoaderTestModule( [ 'dependencies' => [ 'c' ] ] ),
+ 'c' => new ResourceLoaderTestModule( [ 'dependencies' => [] ] ),
+ 'd' => new ResourceLoaderTestModule( [ 'dependencies' => [] ] ),
],
'out' => '
mw.loader.addSource( {
} );
mw.loader.register( [
[
- "test.blank",
+ "a",
+ "{blankVer}",
+ [
+ 1,
+ 3
+ ]
+ ],
+ [
+ "b",
+ "{blankVer}",
+ [
+ 2
+ ]
+ ],
+ [
+ "c",
+ "{blankVer}"
+ ],
+ [
+ "d",
+ "{blankVer}"
+ ]
+] );',
+ ] ],
+ [ [
+ 'msg' => 'Optimise the dependency tree (tolerate unknown deps)',
+ 'modules' => [
+ 'a' => new ResourceLoaderTestModule( [ 'dependencies' => [ 'b', 'c', 'x' ] ] ),
+ 'b' => new ResourceLoaderTestModule( [ 'dependencies' => [ 'c', 'x' ] ] ),
+ 'c' => new ResourceLoaderTestModule( [ 'dependencies' => [] ] ),
+ ],
+ 'out' => '
+mw.loader.addSource( {
+ "local": "/w/load.php"
+} );
+mw.loader.register( [
+ [
+ "a",
+ "{blankVer}",
+ [
+ 1,
+ "x"
+ ]
+ ],
+ [
+ "b",
+ "{blankVer}",
+ [
+ 2,
+ "x"
+ ]
+ ],
+ [
+ "c",
+ "{blankVer}"
+ ]
+] );',
+ ] ],
+ [ [
+ // Regression test for T223402.
+ 'msg' => 'Optimise the dependency tree (indirect circular dependency)',
+ 'modules' => [
+ 'top' => new ResourceLoaderTestModule( [ 'dependencies' => [ 'middle1', 'util' ] ] ),
+ 'middle1' => new ResourceLoaderTestModule( [ 'dependencies' => [ 'middle2', 'util' ] ] ),
+ 'middle2' => new ResourceLoaderTestModule( [ 'dependencies' => [ 'bottom' ] ] ),
+ 'bottom' => new ResourceLoaderTestModule( [ 'dependencies' => [ 'top' ] ] ),
+ 'util' => new ResourceLoaderTestModule( [ 'dependencies' => [] ] ),
+ ],
+ 'out' => '
+mw.loader.addSource( {
+ "local": "/w/load.php"
+} );
+mw.loader.register( [
+ [
+ "top",
+ "{blankVer}",
+ [
+ 1,
+ 4
+ ]
+ ],
+ [
+ "middle1",
+ "{blankVer}",
+ [
+ 2,
+ 4
+ ]
+ ],
+ [
+ "middle2",
+ "{blankVer}",
+ [
+ 3
+ ]
+ ],
+ [
+ "bottom",
+ "{blankVer}",
+ [
+ 0
+ ]
+ ],
+ [
+ "util",
+ "{blankVer}"
+ ]
+] );',
+ ] ],
+ [ [
+ // Regression test for T223402.
+ 'msg' => 'Optimise the dependency tree (direct circular dependency)',
+ 'modules' => [
+ 'top' => new ResourceLoaderTestModule( [ 'dependencies' => [ 'util', 'top' ] ] ),
+ 'util' => new ResourceLoaderTestModule( [ 'dependencies' => [] ] ),
+ ],
+ 'out' => '
+mw.loader.addSource( {
+ "local": "/w/load.php"
+} );
+mw.loader.register( [
+ [
+ "top",
+ "{blankVer}",
+ [
+ 1,
+ 0
+ ]
+ ],
+ [
+ "util",
"{blankVer}"
]
] );',
/**
* @dataProvider provideGetModuleRegistrations
- * @covers ResourceLoaderStartUpModule::getModuleRegistrations
- * @covers ResourceLoaderStartUpModule::compileUnresolvedDependencies
+ * @covers ResourceLoaderStartUpModule
* @covers ResourceLoader::makeLoaderRegisterScript
*/
public function testGetModuleRegistrations( $case ) {