public function testGetVersionHash() {
$context = $this->getResourceLoaderContext();
- $baseParams = array(
- 'scripts' => array( 'foo.js', 'bar.js' ),
- 'dependencies' => array( 'jquery', 'mediawiki' ),
- 'messages' => array( 'hello', 'world' ),
- );
+ $baseParams = [
+ 'scripts' => [ 'foo.js', 'bar.js' ],
+ 'dependencies' => [ 'jquery', 'mediawiki' ],
+ 'messages' => [ 'hello', 'world' ],
+ ];
$module = new ResourceLoaderFileModule( $baseParams );
$version = json_encode( $module->getVersionHash( $context ) );
);
// Re-order dependencies
- $module = new ResourceLoaderFileModule( array(
- 'dependencies' => array( 'mediawiki', 'jquery' ),
- ) + $baseParams );
+ $module = new ResourceLoaderFileModule( [
+ 'dependencies' => [ 'mediawiki', 'jquery' ],
+ ] + $baseParams );
$this->assertEquals(
$version,
json_encode( $module->getVersionHash( $context ) ),
);
// Re-order messages
- $module = new ResourceLoaderFileModule( array(
- 'messages' => array( 'world', 'hello' ),
- ) + $baseParams );
+ $module = new ResourceLoaderFileModule( [
+ 'messages' => [ 'world', 'hello' ],
+ ] + $baseParams );
$this->assertEquals(
$version,
json_encode( $module->getVersionHash( $context ) ),
);
// Re-order scripts
- $module = new ResourceLoaderFileModule( array(
- 'scripts' => array( 'bar.js', 'foo.js' ),
- ) + $baseParams );
+ $module = new ResourceLoaderFileModule( [
+ 'scripts' => [ 'bar.js', 'foo.js' ],
+ ] + $baseParams );
$this->assertNotEquals(
$version,
json_encode( $module->getVersionHash( $context ) ),
$context = $this->getResourceLoaderContext();
- $module = new ResourceLoaderTestModule( array(
+ $module = new ResourceLoaderTestModule( [
'script' => "var a = 'this is';\n {\ninvalid"
- ) );
+ ] );
$this->assertEquals(
- $module->getScript( $context ),
'mw.log.error(' .
'"JavaScript parse error: Parse error: Unexpected token; ' .
'token } expected in file \'input\' on line 3"' .
');',
+ $module->getScript( $context ),
'Replace invalid syntax with error logging'
);
- $module = new ResourceLoaderTestModule( array(
+ $module = new ResourceLoaderTestModule( [
'script' => "\n'valid';"
- ) );
+ ] );
$this->assertEquals(
- $module->getScript( $context ),
"\n'valid';",
+ $module->getScript( $context ),
'Leave valid scripts as-is'
);
}
+ public static function provideBuildContentScripts() {
+ return [
+ [
+ "mw.foo()",
+ "mw.foo();\n",
+ ],
+ [
+ "mw.foo();",
+ "mw.foo();",
+ ],
+ [
+ "mw.foo();\n",
+ "mw.foo();\n",
+ ],
+ [
+ "mw.foo()\n",
+ "mw.foo()\n;\n",
+ ],
+ [
+ "mw.foo()\n// mw.bar();",
+ "mw.foo()\n// mw.bar();",
+ ],
+ [
+ "mw.foo()// mw.bar();",
+ "mw.foo()// mw.bar();",
+ ],
+ ];
+ }
+
+ /**
+ * @dataProvider provideBuildContentScripts
+ * @covers ResourceLoaderModule::buildContent
+ */
+ public function testBuildContentScripts( $raw, $build, $message = null ) {
+ $context = $this->getResourceLoaderContext();
+ $module = new ResourceLoaderTestModule( [
+ 'script' => $raw
+ ] );
+ $this->assertEquals( $raw, $module->getScript( $context ), 'Raw script' );
+ $this->assertEquals(
+ [ 'scripts' => $build ],
+ $module->getModuleContent( $context ),
+ $message
+ );
+ }
+
/**
* @covers ResourceLoaderModule::getRelativePaths
* @covers ResourceLoaderModule::expandRelativePaths
$expandRelativePaths = new ReflectionMethod( 'ResourceLoaderModule', 'expandRelativePaths' );
$expandRelativePaths->setAccessible( true );
- $this->setMwGlobals( array(
+ $this->setMwGlobals( [
'IP' => '/srv/example/mediawiki/core',
- ) );
- $raw = array(
+ ] );
+ $raw = [
'/srv/example/mediawiki/core/resources/foo.js',
'/srv/example/mediawiki/core/extensions/Example/modules/bar.js',
'/srv/example/mediawiki/skins/Example/baz.css',
'/srv/example/mediawiki/skins/Example/images/quux.png',
- );
- $canonical = array(
+ ];
+ $canonical = [
'resources/foo.js',
'extensions/Example/modules/bar.js',
'../skins/Example/baz.css',
'../skins/Example/images/quux.png',
- );
+ ];
$this->assertEquals(
- $getRelativePaths->invoke( null, $raw ),
$canonical,
+ $getRelativePaths->invoke( null, $raw ),
'Insert placeholders'
);
$this->assertEquals(
- $expandRelativePaths->invoke( null, $canonical ),
$raw,
+ $expandRelativePaths->invoke( null, $canonical ),
'Substitute placeholders'
);
}