From 787fa15c2244f71b828ce548b5f32992d290ece2 Mon Sep 17 00:00:00 2001 From: Platonides Date: Mon, 27 Dec 2010 18:53:29 +0000 Subject: [PATCH] Get rid of a different configuration file syntax for PHP 5.2 Directly parse them in php. --- tests/selenium/SeleniumConfig.php | 64 +++++++++++++------ .../selenium_settings.ini.php52.sample | 23 ------- .../selenium_settings_grid.ini.sample | 4 +- 3 files changed, 47 insertions(+), 44 deletions(-) delete mode 100644 tests/selenium/selenium_settings.ini.php52.sample diff --git a/tests/selenium/SeleniumConfig.php b/tests/selenium/SeleniumConfig.php index ca69b1f0e0..b64141f265 100644 --- a/tests/selenium/SeleniumConfig.php +++ b/tests/selenium/SeleniumConfig.php @@ -61,28 +61,54 @@ 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'] ); + /** + * PHP 5.2 parse_ini_file() doesn't have support for array keys. + * This function parses simple ini files with such syntax using just + * 5.2 functions. + */ + private static function parse_5_2_ini_file( $ConfigFile ) { + $file = fopen( $ConfigFile, "rt" ); + if ( !$file ) { + return false; } - - if ( isset( $configArray['testSuite'] ) ) { - $configArray['SeleniumTests']['testSuite'] = $configArray['testSuite']; - unset ( $configArray['testSuite'] ); + $header = ''; + + $configArray = array(); + + while ( ( $line = fgets( $file ) ) !== false ) { + $line = strtok( $line, "\r\n" ); + + if ( !$line || $line[0] == ';' ) continue; + + if ( $line[0] == '[' && substr( $line, -1 ) == ']' ) { + $header = substr( $line, 1, -1 ); + $configArray[$header] = array(); + } else { + $configArray[$header] = array_merge_recursive( $configArray[$header], self::parse_ini_line( $line ) ); + } } - + var_dump($configArray); return $configArray; - } + private static function parse_ini_line( $iniLine ) { + static $specialValues = array( 'false' => false, 'true' => true, 'null' => null ); + list( $key, $value ) = explode( '=', $iniLine, 2 ); + $key = trim( $key ); + $value = trim( $value ); + + if ( isset( $specialValues[$value] ) ) { + $value = $specialValues[$value]; + } else { + $value = trim( $value, '"' ); + } + + /* Support one-level arrays */ + if ( preg_match( '/^([A-Za-z]+)\[([A-Za-z]+)\]/', $key, $m ) ) { + $key = $m[1]; + $value = array( $m[2] => $value ); + } + + return array( $key => $value ); + } } diff --git a/tests/selenium/selenium_settings.ini.php52.sample b/tests/selenium/selenium_settings.ini.php52.sample deleted file mode 100644 index 7011380d7e..0000000000 --- a/tests/selenium/selenium_settings.ini.php52.sample +++ /dev/null @@ -1,23 +0,0 @@ -[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" -startserver = -stopserver = -jUnitLogFile = -runAgainstGrid = false - -[testSuite] - -SimpleSeleniumTestSuite = "tests/selenium/suites/SimpleSeleniumTestSuite.php" -WikiEditorTestSuite = "extensions/WikiEditor/selenium/WikiEditorTestSuite.php" diff --git a/tests/selenium/selenium_settings_grid.ini.sample b/tests/selenium/selenium_settings_grid.ini.sample index 1f80483c76..1abef1afbe 100644 --- a/tests/selenium/selenium_settings_grid.ini.sample +++ b/tests/selenium/selenium_settings_grid.ini.sample @@ -9,6 +9,6 @@ testBrowser = "Safari on OS X Snow Leopard" jUnitLogFile = runAgainstGrid = true -[testSuite] +[SeleniumTests] -SimpleSeleniumTestSuite = "tests/selenium/suites/SimpleSeleniumTestSuite.php" \ No newline at end of file +testSuite[SimpleSeleniumTestSuite] = "tests/selenium/suites/SimpleSeleniumTestSuite.php" -- 2.20.1