Unit tests: Remove duplicated code in ExtensionRegistry
[lhc/web/wiklou.git] / includes / registration / ExtensionRegistry.php
index 768b488..b30d1d8 100644 (file)
@@ -300,15 +300,12 @@ class ExtensionRegistry {
                        }
 
                        $dir = dirname( $path );
-                       if ( isset( $info['AutoloadClasses'] ) ) {
-                               $autoload = $this->processAutoLoader( $dir, $info['AutoloadClasses'] );
-                               $GLOBALS['wgAutoloadClasses'] += $autoload;
-                               $autoloadClasses += $autoload;
-                       }
-                       if ( isset( $info['AutoloadNamespaces'] ) ) {
-                               $autoloadNamespaces += $this->processAutoLoader( $dir, $info['AutoloadNamespaces'] );
-                               AutoLoader::$psr4Namespaces += $autoloadNamespaces;
-                       }
+                       self::exportAutoloadClassesAndNamespaces(
+                               $dir,
+                               $info,
+                               $autoloadClasses,
+                               $autoloadNamespaces
+                       );
 
                        // get all requirements/dependencies for this extension
                        $requires = $processor->getRequirements( $info, $this->checkDev );
@@ -347,6 +344,28 @@ class ExtensionRegistry {
                return $data;
        }
 
+       /**
+        * Export autoload classes and namespaces for a given directory and parsed JSON info file.
+        *
+        * @param string $dir
+        * @param array $info
+        * @param array &$autoloadClasses
+        * @param array &$autoloadNamespaces
+        */
+       public static function exportAutoloadClassesAndNamespaces(
+               $dir, $info, &$autoloadClasses = [], &$autoloadNamespaces = []
+       ) {
+               if ( isset( $info['AutoloadClasses'] ) ) {
+                       $autoload = self::processAutoLoader( $dir, $info['AutoloadClasses'] );
+                       $GLOBALS['wgAutoloadClasses'] += $autoload;
+                       $autoloadClasses += $autoload;
+               }
+               if ( isset( $info['AutoloadNamespaces'] ) ) {
+                       $autoloadNamespaces += self::processAutoLoader( $dir, $info['AutoloadNamespaces'] );
+                       AutoLoader::$psr4Namespaces += $autoloadNamespaces;
+               }
+       }
+
        protected function exportExtractedData( array $info ) {
                foreach ( $info['globals'] as $key => $val ) {
                        // If a merge strategy is set, read it and remove it from the value
@@ -511,7 +530,7 @@ class ExtensionRegistry {
         * @param array $files
         * @return array
         */
-       protected function processAutoLoader( $dir, array $files ) {
+       protected static function processAutoLoader( $dir, array $files ) {
                // Make paths absolute, relative to the JSON file
                foreach ( $files as &$file ) {
                        $file = "$dir/$file";