From 5be892e6bc67760188375ac4e120f6ad5a68d327 Mon Sep 17 00:00:00 2001 From: Markus Glaser Date: Thu, 14 Oct 2010 00:42:38 +0000 Subject: [PATCH] added support for junit log file output, which is neede by phpUnderControl --- maintenance/tests/RunSeleniumTests.php | 15 +++++++++++++-- maintenance/tests/selenium/Selenium.php | 9 +++++++++ maintenance/tests/selenium/SeleniumConfig.php | 1 + .../selenium/selenium_settings.ini.php52.sample | 1 + .../tests/selenium/selenium_settings.ini.sample | 1 + 5 files changed, 25 insertions(+), 2 deletions(-) diff --git a/maintenance/tests/RunSeleniumTests.php b/maintenance/tests/RunSeleniumTests.php index 44727511d6..0197c1df61 100644 --- a/maintenance/tests/RunSeleniumTests.php +++ b/maintenance/tests/RunSeleniumTests.php @@ -29,9 +29,9 @@ define( 'SELENIUMTEST', true ); require_once( dirname( dirname( __FILE__ ) )."/Maintenance.php" ); require_once( 'PHPUnit/Framework.php' ); require_once( 'PHPUnit/Extensions/SeleniumTestCase.php' ); +require_once( 'PHPUnit/Util/Log/JUnit.php' ); require_once( dirname( __FILE__ ) . "/selenium/SeleniumServerManager.php" ); - class SeleniumTester extends Maintenance { protected $selenium; protected $serverManager; @@ -51,6 +51,7 @@ class SeleniumTester extends Maintenance { $this->addOption( 'verbose', 'Be noisier.' ); $this->addOption( 'startserver', 'Start Selenium Server (on localhost) before the run.' ); $this->addOption( 'stopserver', 'Stop Selenium Server (on localhost) after the run.' ); + $this->addOption( 'jUnitLogFile', 'Log results in a specified JUnit log file.', false, true ); $this->deleteOption( 'dbpass' ); $this->deleteOption( 'dbuser' ); $this->deleteOption( 'globals' ); @@ -111,9 +112,13 @@ class SeleniumTester extends Maintenance { protected function runTests( $seleniumTestSuites = array() ) { $result = new PHPUnit_Framework_TestResult; $result->addListener( new SeleniumTestListener( $this->selenium->getLogger() ) ); + if ( $this->selenium->getJUnitLogFile() ) { + $jUnitListener = new PHPUnit_Util_Log_JUnit( $this->selenium->getJUnitLogFile(), true ); + $result->addListener( $jUnitListener ); + } foreach ( $seleniumTestSuites as $testSuiteName => $testSuiteFile ) { - require( $testSuiteFile ); + require( $testSuiteFile ); $suite = new $testSuiteName(); $suite->addTests(); @@ -124,6 +129,10 @@ class SeleniumTester extends Maintenance { throw new MWException( $e->getMessage() ); } } + + if ( $this->selenium->getJUnitLogFile() ) { + $jUnitListener->flush(); + } } public function execute() { @@ -169,6 +178,7 @@ class SeleniumTester extends Maintenance { if ( !isset( $seleniumSettings['username'] ) ) $seleniumSettings['username'] = ''; if ( !isset( $seleniumSettings['userPassword'] ) ) $seleniumSettings['userPassword'] = ''; if ( !isset( $seleniumSettings['testBrowser'] ) ) $seleniumSettings['testBrowser'] = 'firefox'; + if ( !isset( $seleniumSettings['jUnitLogFile'] ) ) $seleniumSettings['jUnitLogFile'] = false; // Setup Selenium class $this->selenium = new Selenium( ); @@ -180,6 +190,7 @@ class SeleniumTester extends Maintenance { $this->selenium->setUser( $this->getOption( 'username', $seleniumSettings['username'] ) ); $this->selenium->setPass( $this->getOption( 'userPassword', $seleniumSettings['userPassword'] ) ); $this->selenium->setVerbose( $this->hasOption( 'verbose' ) ); + $this->selenium->setJUnitLogFile( $this->getOption( 'jUnitLogFile', $seleniumSettings['jUnitLogFile'] ) ); if( $this->hasOption( 'list-browsers' ) ) { $this->listBrowsers(); diff --git a/maintenance/tests/selenium/Selenium.php b/maintenance/tests/selenium/Selenium.php index e41e673975..25f1037716 100644 --- a/maintenance/tests/selenium/Selenium.php +++ b/maintenance/tests/selenium/Selenium.php @@ -21,6 +21,7 @@ class Selenium { protected $pass; protected $timeout = 30000; protected $verbose; + protected $junitlogfile; //processed by phpUnderControl /** * @todo this shouldn't have to be static @@ -136,6 +137,14 @@ class Selenium { $this->browsers = $availableBrowsers; } + public function setJUnitLogfile( $junitlogfile ) { + $this->junitlogfile = $junitlogfile; + } + + public function getJUnitLogfile( ) { + return $this->junitlogfile; + } + public function setBrowser( $b ) { if ( !isset( $this->browsers[$b] ) ) { throw new MWException( "Invalid Browser: $b.\n" ); diff --git a/maintenance/tests/selenium/SeleniumConfig.php b/maintenance/tests/selenium/SeleniumConfig.php index 757bc091ff..75f96eb38f 100644 --- a/maintenance/tests/selenium/SeleniumConfig.php +++ b/maintenance/tests/selenium/SeleniumConfig.php @@ -48,6 +48,7 @@ class SeleniumConfig { $seleniumSettings['startserver'] = $configArray['SeleniumSettings']['startserver']; $seleniumSettings['stopserver'] = $configArray['SeleniumSettings']['stopserver']; $seleniumSettings['seleniumserverexecpath'] = $configArray['SeleniumSettings']['seleniumserverexecpath']; + $seleniumSettings['jUnitLogFile'] = $configArray['SeleniumSettings']['jUnitLogFile']; wfRestoreWarnings(); } diff --git a/maintenance/tests/selenium/selenium_settings.ini.php52.sample b/maintenance/tests/selenium/selenium_settings.ini.php52.sample index 7b617ea642..666ba9d83a 100644 --- a/maintenance/tests/selenium/selenium_settings.ini.php52.sample +++ b/maintenance/tests/selenium/selenium_settings.ini.php52.sample @@ -14,6 +14,7 @@ userPassword = "Wikiadminpw" testBrowser = "firefox" startserver = stopserver = +jUnitLogFile = [testSuite] diff --git a/maintenance/tests/selenium/selenium_settings.ini.sample b/maintenance/tests/selenium/selenium_settings.ini.sample index 3d743d8f69..c439b825e1 100644 --- a/maintenance/tests/selenium/selenium_settings.ini.sample +++ b/maintenance/tests/selenium/selenium_settings.ini.sample @@ -11,6 +11,7 @@ userPassword = "wikipass" testBrowser = "firefox" startserver = stopserver = +jUnitLogFile = [SeleniumTests] -- 2.20.1