phpunit: Include all raw modules in detection of illegal dependencies
authorTimo Tijhof <krinklemail@gmail.com>
Tue, 3 Oct 2017 17:10:02 +0000 (18:10 +0100)
committerTimo Tijhof <krinklemail@gmail.com>
Tue, 3 Oct 2017 17:13:20 +0000 (18:13 +0100)
* Use getStartupModules() instead of hardcoding these two module names.
* Also collect any other module that is registered with raw=>true.

Change-Id: I5f75cc8f99b90f58d76b7e87f068f50f9f608ed0

tests/phpunit/structure/ResourcesTest.php

index 2fba76b..d31779d 100644 (file)
@@ -44,15 +44,24 @@ class ResourcesTest extends MediaWikiTestCase {
        }
 
        /**
-        * Verify that nothing explicitly depends on the 'jquery' and 'mediawiki' modules.
-        * They are always loaded, depending on them is unsupported and leads to unexpected behaviour.
+        * Verify that nothing explicitly depends on base modules, or other raw modules.
+        *
+        * Depending on them is unsupported as they are not registered client-side by the startup module.
+        *
         * TODO Modules can dynamically choose dependencies based on context. This method does not
         * test such dependencies. The same goes for testMissingDependencies() and
         * testUnsatisfiableDependencies().
         */
        public function testIllegalDependencies() {
                $data = self::getAllModules();
-               $illegalDeps = [ 'jquery', 'mediawiki' ];
+
+               $illegalDeps = ResourceLoaderStartupModule::getStartupModules();
+               foreach ( $data['modules'] as $moduleName => $module ) {
+                       if ( $module->isRaw() ) {
+                               $illegalDeps[] = $moduleName;
+                       }
+               }
+               $illegalDeps = array_unique( $illegalDeps );
 
                /** @var ResourceLoaderModule $module */
                foreach ( $data['modules'] as $moduleName => $module ) {