]> scripts.mit.edu Git - autoinstalls/mediawiki.git/blob - maintenance/tests/selenium/SeleniumConfig.php
MediaWiki 1.17.4
[autoinstalls/mediawiki.git] / maintenance / tests / selenium / SeleniumConfig.php
1 <?php
2 if ( !defined( 'SELENIUMTEST' ) ) {
3         die( 1 );
4 }
5
6 class SeleniumConfig {
7
8         /*
9          * Retreives the Selenium configuration values from an ini file.
10          * See sample config file in selenium_settings.ini.sample
11          *
12          */
13
14         public static function getSeleniumSettings ( &$seleniumSettings,
15                         &$seleniumBrowsers,
16                         &$seleniumTestSuites,
17                         $seleniumConfigFile = null ) {
18                 if ( strlen( $seleniumConfigFile ) == 0 ) {
19                         global $wgSeleniumConfigFile;
20                         if ( isset( $wgSeleniumConfigFile ) ) $seleniumConfigFile =  $wgSeleniumConfigFile ;
21                 }
22
23                 if ( strlen( $seleniumConfigFile ) == 0 || !file_exists( $seleniumConfigFile ) ) {
24                         throw new MWException( "Unable to read local Selenium Settings from " . $seleniumConfigFile . "\n" );
25                 }
26
27                 if ( !defined( 'PHP_VERSION_ID' ) ||
28                         ( PHP_MAJOR_VERSION == 5 && PHP_MINOR_VERSION < 3 ) ) {
29                         $configArray = self::parse_5_2_ini_file( $seleniumConfigFile );
30                 } else {
31                         $configArray = parse_ini_file( $seleniumConfigFile, true );
32                 }
33                 if ( $configArray === false ) {
34                         throw new MWException( "Error parsing " . $seleniumConfigFile . "\n" );
35                 }
36
37                 if ( array_key_exists( 'SeleniumSettings', $configArray)  ) {
38                         wfSuppressWarnings();
39                         //we may need to change how this is set. But for now leave it in the ini file
40                         $seleniumBrowsers = $configArray['SeleniumSettings']['browsers'];
41
42                         $seleniumSettings['host'] = $configArray['SeleniumSettings']['host'];
43                         $seleniumSettings['port'] = $configArray['SeleniumSettings']['port'];
44                         $seleniumSettings['wikiUrl'] = $configArray['SeleniumSettings']['wikiUrl'];
45                         $seleniumSettings['username'] = $configArray['SeleniumSettings']['username'];
46                         $seleniumSettings['userPassword'] = $configArray['SeleniumSettings']['userPassword'];
47                         $seleniumSettings['testBrowser'] = $configArray['SeleniumSettings']['testBrowser'];
48                         $seleniumSettings['startserver'] = $configArray['SeleniumSettings']['startserver'];
49                         $seleniumSettings['stopserver'] = $configArray['SeleniumSettings']['stopserver'];
50                         $seleniumSettings['seleniumserverexecpath'] = $configArray['SeleniumSettings']['seleniumserverexecpath'];
51                         $seleniumSettings['jUnitLogFile'] = $configArray['SeleniumSettings']['jUnitLogFile'];
52                         $seleniumSettings['runAgainstGrid'] = $configArray['SeleniumSettings']['runAgainstGrid'];
53
54                         wfRestoreWarnings();
55                 }
56                 if ( array_key_exists( 'SeleniumTests', $configArray)  ) {
57                         wfSuppressWarnings();
58                         $seleniumTestSuites = $configArray['SeleniumTests']['testSuite'];
59                         wfRestoreWarnings();
60                 }
61                 return true;
62         }
63
64         private static function parse_5_2_ini_file ( $ConfigFile ) {
65
66                 $configArray = parse_ini_file( $ConfigFile, true );
67                 if ( $configArray === false ) return false;
68
69                 // PHP 5.2 ini files have [browsers] and [testSuite] sections
70                 // to get around lack of support for array keys. It then
71                 // inserts the section arrays into the appropriate places in
72                 // the SeleniumSettings and SeleniumTests arrays.
73
74                 if ( isset( $configArray['browsers'] ) ) {
75                         $configArray['SeleniumSettings']['browsers'] = $configArray['browsers'];
76                         unset ( $configArray['browsers'] );
77                 }
78
79                 if ( isset( $configArray['testSuite'] ) ) {
80                         $configArray['SeleniumTests']['testSuite'] = $configArray['testSuite'];
81                         unset ( $configArray['testSuite'] );
82                 }
83
84                 return $configArray;
85
86         }
87
88 }