resourceloader: Add unit test for validateScriptFile()
authorTimo Tijhof <krinklemail@gmail.com>
Tue, 2 Jun 2015 22:48:47 +0000 (23:48 +0100)
committerTimo Tijhof <krinklemail@gmail.com>
Tue, 2 Jun 2015 22:50:57 +0000 (23:50 +0100)
Follows-up cd0dff5c00.

Change-Id: Ie208e58053048e932ef3f61f849148b1d88bc0be

tests/phpunit/ResourceLoaderTestCase.php
tests/phpunit/includes/resourceloader/ResourceLoaderModuleTest.php

index 4d4e83f..6346bb9 100644 (file)
@@ -76,7 +76,7 @@ class ResourceLoaderTestModule extends ResourceLoaderModule {
        }
 
        public function getScript( ResourceLoaderContext $context ) {
-               return $this->script;
+               return $this->validateScriptFile( 'input', $this->script );
        }
 
        public function getStyles( ResourceLoaderContext $context ) {
index 6d1ed4e..136ca6e 100644 (file)
@@ -70,4 +70,29 @@ class ResourceLoaderModuleTest extends ResourceLoaderTestCase {
                        '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'
+               );
+       }
 }