summaryrefslogtreecommitdiff
path: root/tests/phpunit/includes/resourceloader
diff options
context:
space:
mode:
Diffstat (limited to 'tests/phpunit/includes/resourceloader')
-rw-r--r--tests/phpunit/includes/resourceloader/DerivativeResourceLoaderContextTest.php78
-rw-r--r--tests/phpunit/includes/resourceloader/ResourceLoaderFileModuleTest.php22
-rw-r--r--tests/phpunit/includes/resourceloader/ResourceLoaderImageTest.php3
-rw-r--r--tests/phpunit/includes/resourceloader/ResourceLoaderModuleTest.php58
-rw-r--r--tests/phpunit/includes/resourceloader/ResourceLoaderStartUpModuleTest.php74
-rw-r--r--tests/phpunit/includes/resourceloader/ResourceLoaderTest.php11
-rw-r--r--tests/phpunit/includes/resourceloader/ResourceLoaderWikiModuleTest.php49
7 files changed, 178 insertions, 117 deletions
diff --git a/tests/phpunit/includes/resourceloader/DerivativeResourceLoaderContextTest.php b/tests/phpunit/includes/resourceloader/DerivativeResourceLoaderContextTest.php
new file mode 100644
index 00000000..0d11f621
--- /dev/null
+++ b/tests/phpunit/includes/resourceloader/DerivativeResourceLoaderContextTest.php
@@ -0,0 +1,78 @@
+<?php
+
+/**
+ * @group ResourceLoader
+ */
+class DerivativeResourceLoaderContextTest extends PHPUnit_Framework_TestCase {
+
+ protected static function getResourceLoaderContext() {
+ $resourceLoader = new ResourceLoader();
+ $request = new FauxRequest( array(
+ 'lang' => 'zh',
+ 'modules' => 'test.context',
+ 'only' => 'scripts',
+ 'skin' => 'fallback',
+ 'target' => 'test',
+ ) );
+ return new ResourceLoaderContext( $resourceLoader, $request );
+ }
+
+ public function testGet() {
+ $context = self::getResourceLoaderContext();
+ $derived = new DerivativeResourceLoaderContext( $context );
+
+ $this->assertEquals( $derived->getLanguage(), 'zh' );
+ $this->assertEquals( $derived->getModules(), array( 'test.context' ) );
+ $this->assertEquals( $derived->getOnly(), 'scripts' );
+ $this->assertEquals( $derived->getSkin(), 'fallback' );
+ $this->assertEquals( $derived->getHash(), 'zh|ltr|fallback||||||scripts|' );
+ }
+
+ public function testSetLanguage() {
+ $context = self::getResourceLoaderContext();
+ $derived = new DerivativeResourceLoaderContext( $context );
+
+ $derived->setLanguage( 'nl' );
+ $this->assertEquals( $derived->getLanguage(), 'nl' );
+
+ $derived->setLanguage( 'he' );
+ $this->assertEquals( $derived->getDirection(), 'rtl' );
+ }
+
+ public function testSetModules() {
+ $context = self::getResourceLoaderContext();
+ $derived = new DerivativeResourceLoaderContext( $context );
+
+ $derived->setModules( array( 'test.override' ) );
+ $this->assertEquals( $derived->getModules(), array( 'test.override' ) );
+ }
+
+ public function testSetOnly() {
+ $context = self::getResourceLoaderContext();
+ $derived = new DerivativeResourceLoaderContext( $context );
+
+ $derived->setOnly( 'styles' );
+ $this->assertEquals( $derived->getOnly(), 'styles' );
+
+ $derived->setOnly( null );
+ $this->assertEquals( $derived->getOnly(), null );
+ }
+
+ public function testSetSkin() {
+ $context = self::getResourceLoaderContext();
+ $derived = new DerivativeResourceLoaderContext( $context );
+
+ $derived->setSkin( 'override' );
+ $this->assertEquals( $derived->getSkin(), 'override' );
+ }
+
+ public function testGetHash() {
+ $context = self::getResourceLoaderContext();
+ $derived = new DerivativeResourceLoaderContext( $context );
+
+ $derived->setLanguage( 'nl' );
+ // Assert that subclass is able to clear parent class "hash" member
+ $this->assertEquals( $derived->getHash(), 'nl|ltr|fallback||||||scripts|' );
+ }
+
+}
diff --git a/tests/phpunit/includes/resourceloader/ResourceLoaderFileModuleTest.php b/tests/phpunit/includes/resourceloader/ResourceLoaderFileModuleTest.php
index 122995a5..9d97b282 100644
--- a/tests/phpunit/includes/resourceloader/ResourceLoaderFileModuleTest.php
+++ b/tests/phpunit/includes/resourceloader/ResourceLoaderFileModuleTest.php
@@ -1,6 +1,7 @@
<?php
/**
+ * @group Database
* @group ResourceLoader
*/
class ResourceLoaderFileModuleTest extends ResourceLoaderTestCase {
@@ -157,7 +158,7 @@ class ResourceLoaderFileModuleTest extends ResourceLoaderTestCase {
* @covers ResourceLoaderFileModule::getStyles
* @covers ResourceLoaderFileModule::getStyleFiles
*/
- public function testMixedCssAnnotations( ) {
+ public function testMixedCssAnnotations() {
$basePath = __DIR__ . '/../../data/css';
$testModule = new ResourceLoaderFileModule( array(
'localBasePath' => $basePath,
@@ -225,23 +226,4 @@ class ResourceLoaderFileModuleTest extends ResourceLoaderTestCase {
$this->assertEquals( $rl->getTemplates(), $expected );
}
-
- public static function providerGetModifiedTime() {
- $modules = self::getModules();
-
- return array(
- // Check the default value when no templates present in module is 1
- array( $modules['noTemplateModule'], 1 ),
- );
- }
-
- /**
- * @dataProvider providerGetModifiedTime
- * @covers ResourceLoaderFileModule::getModifiedTime
- */
- public function testGetModifiedTime( $module, $expected ) {
- $rl = new ResourceLoaderFileModule( $module );
- $ts = $rl->getModifiedTime( $this->getResourceLoaderContext() );
- $this->assertEquals( $ts, $expected );
- }
}
diff --git a/tests/phpunit/includes/resourceloader/ResourceLoaderImageTest.php b/tests/phpunit/includes/resourceloader/ResourceLoaderImageTest.php
index 758cfe19..cc121ba3 100644
--- a/tests/phpunit/includes/resourceloader/ResourceLoaderImageTest.php
+++ b/tests/phpunit/includes/resourceloader/ResourceLoaderImageTest.php
@@ -109,9 +109,6 @@ class ResourceLoaderImageTest extends ResourceLoaderTestCase {
class ResourceLoaderImageTestable extends ResourceLoaderImage {
// Make some protected methods public
- public function getPath( ResourceLoaderContext $context ) {
- return parent::getPath( $context );
- }
public function massageSvgPathdata( $svg ) {
return parent::massageSvgPathdata( $svg );
}
diff --git a/tests/phpunit/includes/resourceloader/ResourceLoaderModuleTest.php b/tests/phpunit/includes/resourceloader/ResourceLoaderModuleTest.php
index 6d1ed4e0..41653fb0 100644
--- a/tests/phpunit/includes/resourceloader/ResourceLoaderModuleTest.php
+++ b/tests/phpunit/includes/resourceloader/ResourceLoaderModuleTest.php
@@ -3,10 +3,9 @@
class ResourceLoaderModuleTest extends ResourceLoaderTestCase {
/**
- * @covers ResourceLoaderModule::getDefinitionSummary
- * @covers ResourceLoaderFileModule::getDefinitionSummary
+ * @covers ResourceLoaderModule::getVersionHash
*/
- public function testDefinitionSummary() {
+ public function testGetVersionHash() {
$context = $this->getResourceLoaderContext();
$baseParams = array(
@@ -16,15 +15,13 @@ class ResourceLoaderModuleTest extends ResourceLoaderTestCase {
);
$module = new ResourceLoaderFileModule( $baseParams );
-
- $jsonSummary = json_encode( $module->getDefinitionSummary( $context ) );
+ $version = json_encode( $module->getVersionHash( $context ) );
// Exactly the same
$module = new ResourceLoaderFileModule( $baseParams );
-
$this->assertEquals(
- $jsonSummary,
- json_encode( $module->getDefinitionSummary( $context ) ),
+ $version,
+ json_encode( $module->getVersionHash( $context ) ),
'Instance is insignificant'
);
@@ -32,10 +29,9 @@ class ResourceLoaderModuleTest extends ResourceLoaderTestCase {
$module = new ResourceLoaderFileModule( array(
'dependencies' => array( 'mediawiki', 'jquery' ),
) + $baseParams );
-
$this->assertEquals(
- $jsonSummary,
- json_encode( $module->getDefinitionSummary( $context ) ),
+ $version,
+ json_encode( $module->getVersionHash( $context ) ),
'Order of dependencies is insignificant'
);
@@ -43,10 +39,9 @@ class ResourceLoaderModuleTest extends ResourceLoaderTestCase {
$module = new ResourceLoaderFileModule( array(
'messages' => array( 'world', 'hello' ),
) + $baseParams );
-
$this->assertEquals(
- $jsonSummary,
- json_encode( $module->getDefinitionSummary( $context ) ),
+ $version,
+ json_encode( $module->getVersionHash( $context ) ),
'Order of messages is insignificant'
);
@@ -54,20 +49,43 @@ class ResourceLoaderModuleTest extends ResourceLoaderTestCase {
$module = new ResourceLoaderFileModule( array(
'scripts' => array( 'bar.js', 'foo.js' ),
) + $baseParams );
-
$this->assertNotEquals(
- $jsonSummary,
- json_encode( $module->getDefinitionSummary( $context ) ),
+ $version,
+ json_encode( $module->getVersionHash( $context ) ),
'Order of scripts is significant'
);
// Subclass
$module = new ResourceLoaderFileModuleTestModule( $baseParams );
-
$this->assertNotEquals(
- $jsonSummary,
- json_encode( $module->getDefinitionSummary( $context ) ),
+ $version,
+ json_encode( $module->getVersionHash( $context ) ),
'Class is significant'
);
}
+
+ /**
+ * @covers ResourceLoaderModule::validateScriptFile
+ */
+ public function testValidateScriptFile() {
+ $context = $this->getResourceLoaderContext();
+
+ $module = new ResourceLoaderTestModule( array(
+ '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");',
+ 'Replace invalid syntax with error logging'
+ );
+
+ $module = new ResourceLoaderTestModule( array(
+ 'script' => "\n'valid';"
+ ) );
+ $this->assertEquals(
+ $module->getScript( $context ),
+ "\n'valid';",
+ 'Leave valid scripts as-is'
+ );
+ }
}
diff --git a/tests/phpunit/includes/resourceloader/ResourceLoaderStartUpModuleTest.php b/tests/phpunit/includes/resourceloader/ResourceLoaderStartUpModuleTest.php
index 7f3506cc..cb916142 100644
--- a/tests/phpunit/includes/resourceloader/ResourceLoaderStartUpModuleTest.php
+++ b/tests/phpunit/includes/resourceloader/ResourceLoaderStartUpModuleTest.php
@@ -10,7 +10,8 @@ class ResourceLoaderStartUpModuleTest extends ResourceLoaderTestCase {
'out' => '
mw.loader.addSource( {
"local": "/w/load.php"
-} );mw.loader.register( [] );'
+} );
+mw.loader.register( [] );'
) ),
array( array(
'msg' => 'Basic registry',
@@ -20,10 +21,11 @@ mw.loader.addSource( {
'out' => '
mw.loader.addSource( {
"local": "/w/load.php"
-} );mw.loader.register( [
+} );
+mw.loader.register( [
[
"test.blank",
- 1388534400
+ "wvTifjse"
]
] );',
) ),
@@ -37,20 +39,21 @@ mw.loader.addSource( {
'out' => '
mw.loader.addSource( {
"local": "/w/load.php"
-} );mw.loader.register( [
+} );
+mw.loader.register( [
[
"test.blank",
- 1388534400
+ "wvTifjse"
],
[
"test.group.foo",
- 1388534400,
+ "wvTifjse",
[],
"x-foo"
],
[
"test.group.bar",
- 1388534400,
+ "wvTifjse",
[],
"x-bar"
]
@@ -65,10 +68,11 @@ mw.loader.addSource( {
'out' => '
mw.loader.addSource( {
"local": "/w/load.php"
-} );mw.loader.register( [
+} );
+mw.loader.register( [
[
"test.blank",
- 1388534400
+ "wvTifjse"
]
] );'
) ),
@@ -87,10 +91,11 @@ mw.loader.addSource( {
mw.loader.addSource( {
"local": "/w/load.php",
"example": "http://example.org/w/load.php"
-} );mw.loader.register( [
+} );
+mw.loader.register( [
[
"test.blank",
- 1388534400,
+ "wvTifjse",
[],
null,
"example"
@@ -123,14 +128,15 @@ mw.loader.addSource( {
'out' => '
mw.loader.addSource( {
"local": "/w/load.php"
-} );mw.loader.register( [
+} );
+mw.loader.register( [
[
"test.x.core",
- 1388534400
+ "wvTifjse"
],
[
"test.x.polyfill",
- 1388534400,
+ "wvTifjse",
[],
null,
null,
@@ -138,7 +144,7 @@ mw.loader.addSource( {
],
[
"test.y.polyfill",
- 1388534400,
+ "wvTifjse",
[],
null,
null,
@@ -146,7 +152,7 @@ mw.loader.addSource( {
],
[
"test.z.foo",
- 1388534400,
+ "wvTifjse",
[
0,
1,
@@ -219,39 +225,40 @@ mw.loader.addSource( {
mw.loader.addSource( {
"local": "/w/load.php",
"example": "http://example.org/w/load.php"
-} );mw.loader.register( [
+} );
+mw.loader.register( [
[
"test.blank",
- 1388534400
+ "wvTifjse"
],
[
"test.x.core",
- 1388534400
+ "wvTifjse"
],
[
"test.x.util",
- 1388534400,
+ "wvTifjse",
[
1
]
],
[
"test.x.foo",
- 1388534400,
+ "wvTifjse",
[
1
]
],
[
"test.x.bar",
- 1388534400,
+ "wvTifjse",
[
2
]
],
[
"test.x.quux",
- 1388534400,
+ "wvTifjse",
[
3,
4,
@@ -260,25 +267,25 @@ mw.loader.addSource( {
],
[
"test.group.foo.1",
- 1388534400,
+ "wvTifjse",
[],
"x-foo"
],
[
"test.group.foo.2",
- 1388534400,
+ "wvTifjse",
[],
"x-foo"
],
[
"test.group.bar.1",
- 1388534400,
+ "wvTifjse",
[],
"x-bar"
],
[
"test.group.bar.2",
- 1388534400,
+ "wvTifjse",
[],
"x-bar",
"example"
@@ -342,10 +349,10 @@ mw.loader.addSource( {
$rl->register( $modules );
$module = new ResourceLoaderStartUpModule();
$this->assertEquals(
-'mw.loader.addSource({"local":"/w/load.php"});'
+'mw.loader.addSource({"local":"/w/load.php"});' . "\n"
. 'mw.loader.register(['
-. '["test.blank",1388534400],'
-. '["test.min",1388534400,[0],null,null,'
+. '["test.blank","wvTifjse"],'
+. '["test.min","wvTifjse",[0],null,null,'
. '"return!!(window.JSON\u0026\u0026JSON.parse\u0026\u0026JSON.stringify);"'
. ']]);',
$module->getModuleRegistrations( $context ),
@@ -364,14 +371,15 @@ mw.loader.addSource( {
$this->assertEquals(
'mw.loader.addSource( {
"local": "/w/load.php"
-} );mw.loader.register( [
+} );
+mw.loader.register( [
[
"test.blank",
- 1388534400
+ "wvTifjse"
],
[
"test.min",
- 1388534400,
+ "wvTifjse",
[
0
],
diff --git a/tests/phpunit/includes/resourceloader/ResourceLoaderTest.php b/tests/phpunit/includes/resourceloader/ResourceLoaderTest.php
index ca7307ec..b6838859 100644
--- a/tests/phpunit/includes/resourceloader/ResourceLoaderTest.php
+++ b/tests/phpunit/includes/resourceloader/ResourceLoaderTest.php
@@ -6,17 +6,8 @@ class ResourceLoaderTest extends ResourceLoaderTestCase {
parent::setUp();
$this->setMwGlobals( array(
- 'wgResourceLoaderLESSFunctions' => array(
- 'test-sum' => function ( $frame, $less ) {
- $sum = 0;
- foreach ( $frame[2] as $arg ) {
- $sum += (int)$arg[1];
- }
- return $sum;
- },
- ),
'wgResourceLoaderLESSImportPaths' => array(
- dirname( dirname( __DIR__ ) ) . '/data/less/common',
+ dirname( dirname( __DIR__ ) ) . '/data/less/common',
),
'wgResourceLoaderLESSVars' => array(
'foo' => '2px',
diff --git a/tests/phpunit/includes/resourceloader/ResourceLoaderWikiModuleTest.php b/tests/phpunit/includes/resourceloader/ResourceLoaderWikiModuleTest.php
index 93a3ebba..8cefec75 100644
--- a/tests/phpunit/includes/resourceloader/ResourceLoaderWikiModuleTest.php
+++ b/tests/phpunit/includes/resourceloader/ResourceLoaderWikiModuleTest.php
@@ -31,16 +31,15 @@ class ResourceLoaderWikiModuleTest extends ResourceLoaderTestCase {
$module = new ResourceLoaderWikiModule( $params );
$module->setConfig( $config );
- // Use getDefinitionSummary because getPages is protected
- $summary = $module->getDefinitionSummary( ResourceLoaderContext::newDummyContext() );
- $this->assertEquals(
- $expected,
- $summary['pages']
- );
+ // Because getPages is protected..
+ $getPages = new ReflectionMethod( $module, 'getPages' );
+ $getPages->setAccessible( true );
+ $out = $getPages->invoke( $module, ResourceLoaderContext::newDummyContext() );
+ $this->assertEquals( $expected, $out );
}
public static function provideGetPages() {
- $settings = array(
+ $settings = self::getSettings() + array(
'UseSiteJs' => true,
'UseSiteCss' => true,
);
@@ -110,39 +109,27 @@ class ResourceLoaderWikiModuleTest extends ResourceLoaderTestCase {
array( array(), 'test1', true ),
// 'site' module with a non-empty page
array(
- array(
- 'MediaWiki:Common.js' => array(
- 'timestamp' => 123456789,
- 'length' => 1234
- )
- ), 'site', false,
+ array( 'MediaWiki:Common.js' => array( 'rev_sha1' => 'dmh6qn', 'rev_len' => 1234 ) ),
+ 'site',
+ false,
),
// 'site' module with an empty page
array(
- array(
- 'MediaWiki:Monobook.js' => array(
- 'timestamp' => 987654321,
- 'length' => 0,
- ),
- ), 'site', false,
+ array( 'MediaWiki:Foo.js' => array( 'rev_sha1' => 'phoi', 'rev_len' => 0 ) ),
+ 'site',
+ false,
),
// 'user' module with a non-empty page
array(
- array(
- 'User:FooBar/common.js' => array(
- 'timestamp' => 246813579,
- 'length' => 25,
- ),
- ), 'user', false,
+ array( 'User:Example/common.js' => array( 'rev_sha1' => 'j7ssba', 'rev_len' => 25 ) ),
+ 'user',
+ false,
),
// 'user' module with an empty page
array(
- array(
- 'User:FooBar/monobook.js' => array(
- 'timestamp' => 1357924680,
- 'length' => 0,
- ),
- ), 'user', true,
+ array( 'User:Example/foo.js' => array( 'rev_sha1' => 'phoi', 'rev_len' => 0 ) ),
+ 'user',
+ true,
),
);
}