From f9894d559b1e1c00db35e3c1f2c7aad0d3548823 Mon Sep 17 00:00:00 2001 From: Markus Glaser Date: Wed, 13 Oct 2010 23:52:42 +0000 Subject: [PATCH] * handle PHP 5.2 ini files * sample ini file for PHP 5.2 * credits to dan nessett --- maintenance/tests/selenium/SeleniumConfig.php | 36 ++++++++++++++++++- .../selenium_settings.ini.php52.sample | 19 ++++++++++ 2 files changed, 54 insertions(+), 1 deletion(-) create mode 100644 maintenance/tests/selenium/selenium_settings.ini.php52.sample diff --git a/maintenance/tests/selenium/SeleniumConfig.php b/maintenance/tests/selenium/SeleniumConfig.php index 881dfd4ef4..8847cdeeb8 100644 --- a/maintenance/tests/selenium/SeleniumConfig.php +++ b/maintenance/tests/selenium/SeleniumConfig.php @@ -10,6 +10,7 @@ class SeleniumConfig { * See sample config file in selenium_settings.ini.sample * */ + public static function getSeleniumSettings ( &$seleniumSettings, &$seleniumBrowsers, &$seleniumTestSuites, @@ -23,7 +24,16 @@ class SeleniumConfig { throw new MWException( "Unable to read local Selenium Settings from " . $seleniumConfigFile . "\n" ); } - $configArray = parse_ini_file($seleniumConfigFile, true); + if ( !defined( 'PHP_VERSION_ID' ) || + ( PHP_MAJOR_VERSION == 5 && PHP_MINOR_VERSION < 3 ) ) { + $configArray = self::parse_5_2_ini_file( $seleniumConfigFile ); + } else { + $configArray = parse_ini_file( $seleniumConfigFile, true ); + } + if ( $configArray === false ) { + throw new MWException( "Error parsing " . $seleniumConfigFile . "\n" ); + } + if ( array_key_exists( 'SeleniumSettings', $configArray) ) { wfSuppressWarnings(); //we may need to change how this is set. But for now leave it in the ini file @@ -45,4 +55,28 @@ class SeleniumConfig { return true; } + private static function parse_5_2_ini_file ( $ConfigFile ) { + + $configArray = parse_ini_file( $ConfigFile, true ); + if ( $configArray === false ) return false; + + // PHP 5.2 ini files have [browsers] and [testSuite] sections + // to get around lack of support for array keys. It then + // inserts the section arrays into the appropriate places in + // the SeleniumSettings and SeleniumTests arrays. + + if ( isset( $configArray[browsers] ) ) { + $configArray[SeleniumSettings][browsers] = $configArray[browsers]; + unset ( $configArray[browsers] ); + } + + if ( isset( $configArray[testSuite] ) ) { + $configArray[SeleniumTests][testSuite] = $configArray[testSuite]; + unset ( $configArray[testSuite] ); + } + + return $configArray; + + } + } diff --git a/maintenance/tests/selenium/selenium_settings.ini.php52.sample b/maintenance/tests/selenium/selenium_settings.ini.php52.sample new file mode 100644 index 0000000000..aa09240a15 --- /dev/null +++ b/maintenance/tests/selenium/selenium_settings.ini.php52.sample @@ -0,0 +1,19 @@ +[browsers] + +firefox = "*firefox" +iexploreproxy = "*iexploreproxy" +chrome = "*chrome" + +[SeleniumSettings] + +host = "localhost" +port = "4444" +wikiUrl = "http://localhost/mediawiki/latest_trunk/trunk/phase3" +username = "Wikiadmin" +userPassword = "Wikiadminpw" +testBrowser = "firefox" + +[testSuite] + +SimpleSeleniumTestSuite = "maintenance/tests/selenium/SimpleSeleniumTestSuite.php" +PagedTiffHandlerSeleniumTestSuite = "extensions/PagedTiffHandler/selenium/PagedTiffHandlerTestSuite.php" -- 2.20.1