diff options
Diffstat (limited to 'tests/phpunit/MediaWikiPHPUnitCommand.php')
| -rw-r--r-- | tests/phpunit/MediaWikiPHPUnitCommand.php | 65 | 
1 files changed, 54 insertions, 11 deletions
| diff --git a/tests/phpunit/MediaWikiPHPUnitCommand.php b/tests/phpunit/MediaWikiPHPUnitCommand.php index fca32515..042956a9 100644 --- a/tests/phpunit/MediaWikiPHPUnitCommand.php +++ b/tests/phpunit/MediaWikiPHPUnitCommand.php @@ -2,26 +2,45 @@  class MediaWikiPHPUnitCommand extends PHPUnit_TextUI_Command { -	static $additionalOptions = array( +	public static $additionalOptions = array(  		'regex=' => false,  		'file=' => false,  		'use-filebackend=' => false, +		'use-bagostuff=' => false, +		'use-jobqueue=' => false,  		'keep-uploads' => false,  		'use-normal-tables' => false,  		'reuse-db' => false, +		'wiki=' => false, +		'debug-tests' => false,  	);  	public function __construct() { -		foreach( self::$additionalOptions as $option => $default ) { +		foreach ( self::$additionalOptions as $option => $default ) {  			$this->longOptions[$option] = $option . 'Handler';  		} +	} + +	protected function handleArguments( array $argv ) { +		parent::handleArguments( $argv ); + +		if ( !isset( $this->arguments['listeners'] ) ) { +			$this->arguments['listeners'] = array(); +		} +		foreach ( $this->options[0] as $option ) { +			switch ( $option[0] ) { +				case '--debug-tests': +					$this->arguments['listeners'][] = new MediaWikiPHPUnitTestListener( 'PHPUnitCommand' ); +					break; +			} +		}  	}  	public static function main( $exit = true ) {  		$command = new self; -		if( wfIsWindows() ) { +		if ( wfIsWindows() ) {  			# Windows does not come anymore with ANSI.SYS loaded by default  			# PHPUnit uses the suite.xml parameters to enable/disable colors  			# which can be then forced to be enabled with --colors. @@ -38,18 +57,40 @@ class MediaWikiPHPUnitCommand extends PHPUnit_TextUI_Command {  		# See bug 32022  		set_include_path(  			__DIR__ -			.PATH_SEPARATOR -			. get_include_path() +				. PATH_SEPARATOR +				. get_include_path()  		); -		$command->run($_SERVER['argv'], $exit); +		$command->run( $_SERVER['argv'], $exit );  	}  	public function __call( $func, $args ) { -		if( substr( $func, -7 ) == 'Handler' ) { -			if( is_null( $args[0] ) ) $args[0] = true; //Booleans -			self::$additionalOptions[substr( $func, 0, -7 ) ] = $args[0]; +		if ( substr( $func, -7 ) == 'Handler' ) { +			if ( is_null( $args[0] ) ) { +				$args[0] = true; +			} //Booleans +			self::$additionalOptions[substr( $func, 0, -7 )] = $args[0]; +		} +	} + +	public function run( array $argv, $exit = true ) { +		wfProfileIn( __METHOD__ ); + +		$ret = parent::run( $argv, false ); + +		wfProfileOut( __METHOD__ ); + +		// Return to real wiki db, so profiling data is preserved +		MediaWikiTestCase::teardownTestDB(); + +		// Log profiling data, e.g. in the database or UDP +		wfLogProfilingData(); + +		if ( $exit ) { +			exit( $ret ); +		} else { +			return $ret;  		}  	} @@ -61,7 +102,7 @@ class MediaWikiPHPUnitCommand extends PHPUnit_TextUI_Command {  ParserTest-specific options:    --regex="<regex>"        Only run parser tests that match the given regex -  --file="<filename>"      Prints the version and exits. +  --file="<filename>"      File describing parser tests    --keep-uploads           Re-use the same upload directory for each test, don't delete it @@ -70,7 +111,9 @@ Database options:    --reuse-db               Init DB only if tables are missing and keep after finish. +Debugging options: +  --debug-tests            Log testing activity to the PHPUnitCommand log channel. +  EOT;  	} -  } | 
