Seb35 has uploaded a new change for review. ( 
https://gerrit.wikimedia.org/r/329223 )

Change subject: Change internal data structure for extensions
......................................................................

Change internal data structure for extensions

Architecture:
* Previously there were two associative arrays for extensions
  and skins, with $name => $loadingMechanism. Now there is only
  one (list) array with values array( $name, $type,
  $loadingMechanism, $initialOrder ), with $type == 'extension'
  or 'skin'. The order of this list is used to create
  the LocalSettings.php. This change is in preparation of
  Composer-managed extensions, to allow activation of some
  extensions before other (typically PageForms 4.0+ and
  SemanticFormsSelect).
* The extensions+skins list can be sorted. Currently it is sorted
  with the following order: require_once(skins), require_once(exts),
  wfLoadSkin, wfLoadExtension. The sorting is stable, so that
  it is possible to impose some order inside each category.

Code:
* The previous associative array is transformed in a list of tuples
  because standard PHP functions do not allow to sort by key *and*
  value (it’s key *xor* value). The new information $initialOrder
  is added to allow a stable sort (standard PHP sorting is not
  stable).

Change-Id: Idb60c537da3c99a9cdec7a80f31acaf597bcd1fa
---
M src/MediaWikiFarm.php
M src/main.php
M tests/phpunit/ConfigurationTest.php
M tests/phpunit/InstallationIndependantTest.php
M tests/phpunit/LoadingTest.php
5 files changed, 121 insertions(+), 115 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/MediaWikiFarm 
refs/changes/23/329223/1

diff --git a/src/MediaWikiFarm.php b/src/MediaWikiFarm.php
index 5f5c309..7c544b5 100644
--- a/src/MediaWikiFarm.php
+++ b/src/MediaWikiFarm.php
@@ -73,7 +73,6 @@
        protected $configuration = array(
                'settings' => array(),
                'arrays' => array(),
-               'skins' => array(),
                'extensions' => array(),
                'execFiles' => array(),
        );
@@ -174,8 +173,7 @@
         * This associative array contains four sections:
         *   - 'settings': associative array of MediaWiki configuration (e.g. 
'wgServer' => '//example.org');
         *   - 'arrays': associative array of MediaWiki configuration of type 
array (e.g. 'wgGroupPermissions' => array( 'edit' => false ));
-        *   - 'skins': associative array of skins configuration (e.g. 'Vector' 
=> 'wfLoadSkin' );
-        *   - 'extensions': associative array of extensions configuration 
(e.g. 'ParserFunctions' => 'wfLoadExtension' );
+        *   - 'extensions': list of extensions and skins (e.g. 0 => array( 
'ParserFunctions', 'extension', 'wfLoadExtension' ));
         *   - 'execFiles': list of PHP files to execute at the end.
         *
         * @mediawikifarm-const
@@ -360,30 +358,31 @@
                        $GLOBALS[$setting] = self::arrayMerge( 
$GLOBALS[$setting], $value );
                }
 
-               # Load skins with the wfLoadSkin mechanism
-               foreach( $this->configuration['skins'] as $skin => $value ) {
+               # Load extensions and skins with the wfLoadExtension/wfLoadSkin 
mechanism
+               $loadMediaWikiFarm = false;
+               foreach( $this->configuration['extensions'] as $extension ) {
 
-                       if( $value == 'wfLoadSkin' ) {
+                       if( $extension[2] == 'wfLoadExtension' ) {
 
-                               wfLoadSkin( $skin );
+                               if( $extension[0] != 'MediaWikiFarm' || 
!$this->codeDir ) {
+                                       wfLoadExtension( $extension[0] );
+                               } else {
+                                       wfLoadExtension( 'MediaWikiFarm', 
$this->farmDir . '/extension.json' );
+                                       $loadedMediaWikiFarm = true;
+                               }
                        }
-               }
+                       elseif( $extension[2] == 'wfLoadSkin' ) {
 
-               # Load extensions with the wfLoadExtension mechanism
-               foreach( $this->configuration['extensions'] as $extension => 
$value ) {
+                               wfLoadSkin( $extension[0] );
+                       }
+                       elseif( $extension[0] == 'MediaWikiFarm' && 
$extension[1] == 'extension' && $extension[2] == 'require_once' ) {
 
-                       if( $value == 'wfLoadExtension' && ( $extension != 
'MediaWikiFarm' || !$this->codeDir ) ) {
-
-                               wfLoadExtension( $extension );
+                               $loadMediaWikiFarm = true;
                        }
                }
 
                # Register this extension MediaWikiFarm to appear in 
Special:Version
-               if( $this->configuration['extensions']['MediaWikiFarm'] == 
'wfLoadExtension' && $this->codeDir ) {
-
-                       wfLoadExtension( 'MediaWikiFarm', $this->farmDir . 
'/extension.json' );
-               }
-               elseif( $this->configuration['extensions']['MediaWikiFarm'] == 
'require_once' ) {
+               if( $loadMediaWikiFarm ) {
                        $GLOBALS['wgExtensionCredits']['other'][] = array(
                                'path' => $this->farmDir . '/MediaWikiFarm.php',
                                'name' => 'MediaWikiFarm',
@@ -875,7 +874,6 @@
         * The returned array has the following format:
         * array( 'settings' => array( 'wgSitename' => 'Foo', ... ),
         *        'arrays' => array( 'wgGroupPermission' => array(), ... ),
-        *        'skins' => 'wfLoadSkin'|'require_once',
         *        'extensions' => 'wfLoadExtension'|'require_once',
         *      )
         *
@@ -1161,7 +1159,7 @@
                                if( is_null( $loadingMechanism ) ) {
                                        $settings[$setting] = false;
                                } else {
-                                       $this->configuration[$type.'s'][$name] 
= $loadingMechanism;
+                                       $this->configuration['extensions'][] = 
array( $name, $type, $loadingMechanism, count( 
$this->configuration['extensions'] ) );
                                        $settings[preg_replace( 
'/[^a-zA-Z0-9_\x7f\xff]/', '', $setting )] = true;
                                }
                        }
@@ -1174,7 +1172,7 @@
                                        if( $value !== true ) {
                                                $loadingMechanism = $value;
                                        }
-                                       
$this->configuration['extensions'][$name] = $loadingMechanism;
+                                       $this->configuration['extensions'][] = 
array( $name, 'extension', $loadingMechanism, count( 
$this->configuration['extensions'] ) );
                                        
$settings['wgUseExtension'.preg_replace( '/[^a-zA-Z0-9_\x7f\xff]/', '', $name 
)] = true;
                                        unset( $settings[$setting] );
                                } else {
@@ -1183,7 +1181,7 @@
                                                if( $value !== true ) {
                                                        $loadingMechanism = 
$value;
                                                }
-                                               
$this->configuration['skins'][$name] = $loadingMechanism;
+                                               
$this->configuration['extensions'][] = array( $name, 'skin', $loadingMechanism, 
count( $this->configuration['extensions'] ) );
                                                
$settings['wgUseSkin'.preg_replace( '/[^a-zA-Z0-9_\x7f\xff]/', '', $name )] = 
true;
                                                unset( $settings[$setting] );
                                        }
@@ -1196,10 +1194,12 @@
                }
 
                $settings['wgUseExtensionMediaWikiFarm'] = true;
-               $this->configuration['extensions']['MediaWikiFarm'] = 
'require_once';
                if( $this->parameters['ExtensionRegistry'] ) {
-                       $this->configuration['extensions']['MediaWikiFarm'] = 
'wfLoadExtension';
+                       $this->configuration['extensions'][] = array( 
'MediaWikiFarm', 'extension', 'wfLoadExtension', count( 
$this->configuration['extensions'] ) );
+               } else {
+                       $this->configuration['extensions'][] = array( 
'MediaWikiFarm', 'extension', 'require_once', count( 
$this->configuration['extensions'] ) );
                }
+               usort( $this->configuration['extensions'], array( 
'MediaWikiFarm', 'sortExtensions' ) );
        }
 
        /**
@@ -1236,6 +1236,32 @@
        }
 
        /**
+        * Sort extensions.
+        *
+        * @param array $a First element.
+        * @param array $b Second element.
+        * @return int Relative order of the two elements.
+        */
+       function sortExtensions( $a, $b ) {
+
+               static $loading = array(
+                       'require_once' => 10,
+                       'composer' => 20,
+                       'wfLoadSkin' => 20,
+                       'wfLoadExtension' => 20,
+               );
+               static $type = array(
+                       'skin' => 1,
+                       'extension' => 2,
+               );
+
+               $weight = $loading[$a[2]] + $type[$a[1]] - $loading[$b[2]] - 
$type[$b[1]];
+               $stability = $a[3] - $b[3];
+
+               return $weight ? $weight : $stability;
+       }
+
+       /**
         * Create a LocalSettings.php.
         *
         * A previous mechanism tested in this extension was to load each 
category of
@@ -1257,28 +1283,37 @@
                        $localSettings .= "\n" . $preconfig;
                }
 
-               # Skins loaded with require_once
-               $require_once = false;
-               foreach( $configuration['skins'] as $skin => $loading ) {
-                       if( $loading == 'require_once' ) {
-                               if( !$require_once ) {
-                                       $require_once = true;
-                                       $localSettings .= "\n# Skins loaded 
with require_once\n";
-                               }
-                               $localSettings .= "require_once 
\"\$IP/skins/$skin/$skin.php\";\n";
+               # Sort extensions and skins by loading mechanism
+               $extensions = array(
+                       'extension' => array(
+                               'require_once' => '',
+                               'wfLoadExtension' => '',
+                       ),
+                       'skin' => array(
+                               'require_once' => '',
+                               'wfLoadSkin' => '',
+                       ),
+               );
+               foreach( $configuration['extensions'] as $extension ) {
+                       if( $extension[2] == 'require_once' ) {
+                               $extensions[$extension[1]]['require_once'] .= 
"require_once \"\$IP/{$extension[1]}s/{$extension[0]}/{$extension[0]}.php\";\n";
+                       } elseif( $extension == array( 'MediaWikiFarm', 
'extension', 'wfLoadExtension' ) && $this->codeDir ) {
+                               $extensions['extension']['wfLoadExtension'] .= 
"wfLoadExtension( 'MediaWikiFarm', " . var_export( $this->farmDir . 
'/extension.json', true ) . " );\n";
+                       } elseif( $extension[2] == 'wfLoad' . ucfirst( 
$extension[1] ) ) {
+                               $extensions[$extension[1]]['wfLoad' . ucfirst( 
$extension[1] )] .= 'wfLoad' . ucfirst( $extension[1] ) . '( ' . var_export( 
$extension[0], true ) . " );\n";
                        }
                }
 
+               # Skins loaded with require_once
+               if( $extensions['skin']['require_once'] ) {
+                       $localSettings .= "\n# Skins loaded with 
require_once\n";
+                       $localSettings .= $extensions['skin']['require_once'];
+               }
+
                # Extensions loaded with require_once
-               $require_once = false;
-               foreach( $configuration['extensions'] as $extension => $loading 
) {
-                       if( $loading == 'require_once' ) {
-                               if( !$require_once ) {
-                                       $require_once = true;
-                                       $localSettings .= "\n# Extensions 
loaded with require_once\n";
-                               }
-                               $localSettings .= "require_once 
\"\$IP/extensions/$extension/$extension.php\";\n";
-                       }
+               if( $extensions['extension']['require_once'] ) {
+                       $localSettings .= "\n# Extensions loaded with 
require_once\n";
+                       $localSettings .= 
$extensions['extension']['require_once'];
                }
 
                # General settings
@@ -1297,23 +1332,15 @@
                }
 
                # Skins loaded with wfLoadSkin
-               $localSettings .= "\n# Skins\n";
-               foreach( $configuration['skins'] as $skin => $loading ) {
-                       if( $loading == 'wfLoadSkin' ) {
-                               $localSettings .= "wfLoadSkin( '$skin' );\n";
-                       }
+               if( $extensions['skin']['wfLoadSkin'] ) {
+                       $localSettings .= "\n# Skins\n";
+                       $localSettings .= $extensions['skin']['wfLoadSkin'];
                }
 
                # Extensions loaded with wfLoadExtension
-               $localSettings .= "\n# Extensions\n";
-               foreach( $configuration['extensions'] as $extension => $loading 
) {
-                       if( $loading == 'wfLoadExtension' ) {
-                               if( $extension != 'MediaWikiFarm' || 
!$this->codeDir ) {
-                                       $localSettings .= "wfLoadExtension( 
'$extension' );\n";
-                               } elseif( $extension == 'MediaWikiFarm' ) {
-                                       $localSettings .= "wfLoadExtension( 
'MediaWikiFarm', " . var_export( $this->farmDir . '/extension.json', true ) . " 
);\n";
-                               }
-                       }
+               if( $extensions['extension']['wfLoadExtension'] ) {
+                       $localSettings .= "\n# Extensions\n";
+                       $localSettings .= 
$extensions['extension']['wfLoadExtension'];
                }
 
                # Included files
diff --git a/src/main.php b/src/main.php
index e1a0eea..0666f85 100644
--- a/src/main.php
+++ b/src/main.php
@@ -26,19 +26,11 @@
 # Compile MediaWiki configuration
 $wgMediaWikiFarm->getMediaWikiConfig( true );
 
-# Load skins with the require_once mechanism
-foreach( $wgMediaWikiFarm->getConfiguration( 'skins' ) as $skin => $value ) {
+# Load extensions and skins with the require_once mechanism
+foreach( $wgMediaWikiFarm->getConfiguration( 'extensions' ) as $extension ) {
 
-       if( $value == 'require_once' ) {
-               require_once "$IP/skins/$skin/$skin.php";
-       }
-}
-
-# Load extensions with the require_once mechanism
-foreach( $wgMediaWikiFarm->getConfiguration( 'extensions' ) as $extension => 
$value ) {
-
-       if( $value == 'require_once' ) {
-               require_once "$IP/extensions/$extension/$extension.php";
+       if( $extension[2] == 'require_once' ) {
+               require_once 
"$IP/{$extension[1]}s/{$extension[0]}/{$extension[0]}.php";
        }
 }
 
diff --git a/tests/phpunit/ConfigurationTest.php 
b/tests/phpunit/ConfigurationTest.php
index 8133726..3b5ec65 100644
--- a/tests/phpunit/ConfigurationTest.php
+++ b/tests/phpunit/ConfigurationTest.php
@@ -78,7 +78,6 @@
                                        0 => 'pdf',
                                ),
                        ),
-                       'skins' => array(),
                        'extensions' => array(),
                        'execFiles' => array(
                                0 => dirname( __FILE__ ) . 
'/data/config/LocalSettings.php',
@@ -95,7 +94,6 @@
 
                $this->assertEquals( $result['settings'], 
$farm->getConfiguration( 'settings' ) );
                $this->assertEquals( $result['arrays'], 
$farm->getConfiguration( 'arrays' ) );
-               $this->assertEquals( $result['skins'], $farm->getConfiguration( 
'skins' ) );
                $this->assertEquals( $result['extensions'], 
$farm->getConfiguration( 'extensions' ) );
                $this->assertEquals( $result['execFiles'], 
$farm->getConfiguration( 'execFiles' ) );
                $this->assertEquals( $result, $farm->getConfiguration() );
@@ -113,6 +111,7 @@
         * @uses MediaWikiFarm::isLocalSettingsFresh
         * @uses MediaWikiFarm::checkExistence
         * @uses MediaWikiFarm::populateSettings
+        * @uses MediaWikiFarm::sortExtensions
         * @uses MediaWikiFarm::getConfiguration
         * @uses MediaWikiFarm::checkHostVariables
         * @uses MediaWikiFarm::setVersion
@@ -134,12 +133,9 @@
                $farm->checkExistence();
                $farm->getMediaWikiConfig();
                $extensions = $farm->getConfiguration( 'extensions' );
-               $this->assertArrayHasKey( 'TestExtensionBiLoading', $extensions 
);
-               $this->assertArrayHasKey( 'TestExtensionRequireOnce', 
$extensions );
-               $this->assertEquals( 'require_once', 
$extensions['TestExtensionBiLoading'] );
-               $this->assertEquals( 'require_once', 
$extensions['TestExtensionRequireOnce'] );
-               // $this->assertArrayHasKey( 'MediaWikiFarm', 
$this->getConfiguration( 'extensions' ) );
-               // $this->assertEquals( 'require_once', 
$this->getConfiguration( 'extensions' )['MediaWikiFarm'] );
+               $this->assertContains( array( 'TestExtensionBiLoading', 
'extension', 'require_once', 0 ), $extensions );
+               $this->assertContains( array( 'TestExtensionRequireOnce', 
'extension', 'require_once', 1 ), $extensions );
+               $this->assertContains( array( 'MediaWikiFarm', 'extension', 
'require_once', 6 ), $extensions );
 
                # Now with ExtensionRegistry
                $farm = new MediaWikiFarm( 
'a.testfarm-multiversion-test-extensions.example.org',
@@ -150,12 +146,9 @@
                $farm->checkExistence();
                $farm->getMediaWikiConfig();
                $extensions = $farm->getConfiguration( 'extensions' );
-               $this->assertArrayHasKey( 'TestExtensionBiLoading', $extensions 
);
-               $this->assertArrayHasKey( 'TestExtensionWfLoadExtension', 
$extensions );
-               $this->assertArrayHasKey( 'MediaWikiFarm', $extensions );
-               $this->assertEquals( 'wfLoadExtension', 
$extensions['TestExtensionBiLoading'] );
-               $this->assertEquals( 'wfLoadExtension', 
$extensions['TestExtensionWfLoadExtension'] );
-               $this->assertEquals( 'wfLoadExtension', 
$extensions['MediaWikiFarm'] );
+               $this->assertContains( array( 'TestExtensionBiLoading', 
'extension', 'wfLoadExtension', 1 ), $extensions );
+               $this->assertContains( array( 'TestExtensionWfLoadExtension', 
'extension', 'wfLoadExtension', 0 ), $extensions );
+               $this->assertContains( array( 'MediaWikiFarm', 'extension', 
'wfLoadExtension', 8 ), $extensions );
 
                # Now with imposed loading mechanism (1)
                $farm = new MediaWikiFarm( 
'c.testfarm-multiversion-test-extensions.example.org',
@@ -168,8 +161,7 @@
                $settings = $farm->getConfiguration( 'settings' );
                $extensions = $farm->getConfiguration( 'extensions' );
                $this->assertTrue( 
$settings['wgUseExtensionTestExtensionBiLoading'] );
-               $this->assertArrayHasKey( 'TestExtensionBiLoading', $extensions 
);
-               $this->assertEquals( 'require_once', 
$extensions['TestExtensionBiLoading'] );
+               $this->assertContains( array( 'TestExtensionBiLoading', 
'extension', 'require_once', 0 ), $extensions );
 
                # Now with imposed loading mechanism (2)
                $farm = new MediaWikiFarm( 
'd.testfarm-multiversion-test-extensions.example.org',
@@ -184,10 +176,8 @@
                $skins = $farm->getConfiguration( 'skins' );
                $this->assertTrue( 
$settings['wgUseExtensionTestExtensionBiLoading'] );
                $this->assertTrue( $settings['wgUseSkinTestSkinBiLoading'] );
-               $this->assertArrayHasKey( 'TestExtensionBiLoading', $extensions 
);
-               $this->assertArrayHasKey( 'TestSkinBiLoading', $skins );
-               $this->assertEquals( 'require_once', 
$extensions['TestExtensionBiLoading'] );
-               $this->assertEquals( 'require_once', 
$skins['TestSkinBiLoading'] );
+               $this->assertContains( array( 'TestExtensionBiLoading', 
'extension', 'require_once', 0 ), $extensions );
+               $this->assertContains( array( 'TestSkinBiLoading', 'skin', 
'require_once', 1 ), $extensions );
        }
 
        /**
@@ -205,6 +195,7 @@
         * @uses MediaWikiFarm::selectFarm
         * @uses MediaWikiFarm::checkExistence
         * @uses MediaWikiFarm::populateSettings
+        * @uses MediaWikiFarm::sortExtensions
         * @uses MediaWikiFarm::getConfiguration
         * @uses MediaWikiFarm::checkHostVariables
         * @uses MediaWikiFarm::setVersion
@@ -270,6 +261,7 @@
         * @uses MediaWikiFarm::selectFarm
         * @uses MediaWikiFarm::checkExistence
         * @uses MediaWikiFarm::populateSettings
+        * @uses MediaWikiFarm::sortExtensions
         * @uses MediaWikiFarm::getConfiguration
         * @uses MediaWikiFarm::checkHostVariables
         * @uses MediaWikiFarm::setVersion
diff --git a/tests/phpunit/InstallationIndependantTest.php 
b/tests/phpunit/InstallationIndependantTest.php
index 80b130b..f5def6a 100644
--- a/tests/phpunit/InstallationIndependantTest.php
+++ b/tests/phpunit/InstallationIndependantTest.php
@@ -417,15 +417,13 @@
                                        ),
                                ),
                        ),
-                       'skins' => array(
-                               'Vector' => 'wfLoadSkin',
-                               'MonoBook' => 'require_once',
-                       ),
                        'extensions' => array(
-                               'MediaWikiFarm' => 'wfLoadExtension',
-                               'ParserFunctions' => 'wfLoadExtension',
-                               'Echo' => 'require_once',
-                               'SemanticMediaWiki' => 'composer',
+                               array( 'ParserFunctions', 'extension', 
'wfLoadExtension' ),
+                               array( 'Echo', 'extension', 'require_once' ),
+                               array( 'SemanticMediaWiki', 'extension', 
'composer' ),
+                               array( 'Vector', 'skin', 'wfLoadSkin' ),
+                               array( 'MonoBook', 'skin', 'require_once' ),
+                               array( 'MediaWikiFarm', 'extension', 
'wfLoadExtension' ),
                        ),
                        'execFiles' => array(
                                'freeLS.php',
@@ -472,8 +470,8 @@
 wfLoadSkin( 'Vector' );
 
 # Extensions
-wfLoadExtension( 'MediaWikiFarm' );
 wfLoadExtension( 'ParserFunctions' );
+wfLoadExtension( 'MediaWikiFarm' );
 
 # Included files
 include 'freeLS.php';
diff --git a/tests/phpunit/LoadingTest.php b/tests/phpunit/LoadingTest.php
index f35099c..e1b69d7 100644
--- a/tests/phpunit/LoadingTest.php
+++ b/tests/phpunit/LoadingTest.php
@@ -60,6 +60,7 @@
         * @uses MediaWikiFarm::replaceVariables
         * @uses MediaWikiFarm::getMediaWikiConfig
         * @uses MediaWikiFarm::populateSettings
+        * @uses MediaWikiFarm::sortExtensions
         * @uses MediaWikiFarm::isLocalSettingsFresh
         * @uses MediaWikiFarm::readFile
         * @uses MediaWikiFarm::arrayMerge
@@ -97,17 +98,15 @@
                                ),
                        ),
                        'extensions' => array(
-                               'TestExtensionWfLoadExtension' => 
'wfLoadExtension',
-                               'TestExtensionBiLoading' => 'wfLoadExtension',
-                               'TestExtensionRequireOnce' => 'require_once',
-                               'TestExtensionComposer' => 'composer',
-                               'MediaWikiFarm' => 'wfLoadExtension',
-                       ),
-                       'skins' => array(
-                               'TestSkinWfLoadSkin' => 'wfLoadSkin',
-                               'TestSkinBiLoading' => 'wfLoadSkin',
-                               'TestSkinRequireOnce' => 'require_once',
-                               'TestSkinComposer' => 'composer',
+                               array( 'TestSkinRequireOnce', 'skin', 
'require_once', 6 ),
+                               array( 'TestExtensionRequireOnce', 'extension', 
'require_once', 2 ),
+                               array( 'TestSkinWfLoadSkin', 'skin', 
'wfLoadSkin', 4 ),
+                               array( 'TestSkinBiLoading', 'skin', 
'wfLoadSkin', 5 ),
+                               array( 'TestSkinComposer', 'skin', 'composer', 
7 ),
+                               array( 'TestExtensionWfLoadExtension', 
'extension', 'wfLoadExtension', 0 ),
+                               array( 'TestExtensionBiLoading', 'extension', 
'wfLoadExtension', 1 ),
+                               array( 'TestExtensionComposer', 'extension', 
'composer', 3 ),
+                               array( 'MediaWikiFarm', 'extension', 
'wfLoadExtension', 8 ),
                        ),
                );
                $this->backupGlobalVariables( array_keys( $result['settings'] ) 
);
@@ -121,7 +120,6 @@
                $this->assertEquals( $result['settings'], 
$wgMediaWikiFarm->getConfiguration( 'settings' ) );
                $this->assertEquals( $result['arrays'], 
$wgMediaWikiFarm->getConfiguration( 'arrays' ) );
                $this->assertEquals( $result['extensions'], 
$wgMediaWikiFarm->getConfiguration( 'extensions' ) );
-               $this->assertEquals( $result['skins'], 
$wgMediaWikiFarm->getConfiguration( 'skins' ) );
 
                $trueGlobals = array();
                foreach( $GLOBALS as $key => $value ) {
@@ -203,6 +201,7 @@
         * @uses MediaWikiFarm::replaceVariables
         * @uses MediaWikiFarm::getMediaWikiConfig
         * @uses MediaWikiFarm::populateSettings
+        * @uses MediaWikiFarm::sortExtensions
         * @uses MediaWikiFarm::isLocalSettingsFresh
         * @uses MediaWikiFarm::readFile
         * @uses MediaWikiFarm::arrayMerge
@@ -239,16 +238,15 @@
                                'wgUseTestSkinEmpty' => true,
                        ),
                        'extensions' => array(),
-                       'skins' => array(),
                );
                if( class_exists( 'ExtensionRegistry' ) ) {
                        
$result['settings']['wgUseExtensionTestExtensionWfLoadExtension'] = true;
                        $result['settings']['wgUseSkinTestSkinWfLoadSkin'] = 
true;
-                       $result['extensions']['TestExtensionWfLoadExtension'] = 
'wfLoadExtension';
-                       $result['extensions']['MediaWikiFarm'] = 
'wfLoadExtension';
-                       $result['skins']['TestSkinWfLoadSkin'] = 'wfLoadSkin';
+                       $result['extensions'][] = array( 'TestSkinWfLoadSkin', 
'skin', 'wfLoadSkin', 1 );
+                       $result['extensions'][] = array( 
'TestExtensionWfLoadExtension', 'extension', 'wfLoadExtension', 0 );
+                       $result['extensions'][] = array( 'MediaWikiFarm', 
'extension', 'wfLoadExtension', 2 );
                } else {
-                       $result['extensions']['MediaWikiFarm'] = 'require_once';
+                       $result['extensions'][] = array( 'MediaWikiFarm', 
'extension', 'require_once', 0 );
                }
 
                $exists = MediaWikiFarm::load( 'index.php', 
'b.testfarm-multiversion-test-extensions.example.org' );
@@ -258,7 +256,6 @@
                $wgMediaWikiFarm->getMediaWikiConfig();
                $this->assertEquals( $result['settings'], 
$wgMediaWikiFarm->getConfiguration( 'settings' ) );
                $this->assertEquals( $result['extensions'], 
$wgMediaWikiFarm->getConfiguration( 'extensions' ) );
-               $this->assertEquals( $result['skins'], 
$wgMediaWikiFarm->getConfiguration( 'skins' ) );
        }
 
        /**

-- 
To view, visit https://gerrit.wikimedia.org/r/329223
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Idb60c537da3c99a9cdec7a80f31acaf597bcd1fa
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/MediaWikiFarm
Gerrit-Branch: master
Gerrit-Owner: Seb35 <seb35wikipe...@gmail.com>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to