'use-normal-tables' => false,
'reuse-db' => false,
'wiki=' => false,
- 'debug-tests' => false,
);
public function __construct() {
}
}
- 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;
$command->run( $_SERVER['argv'], $exit );
--use-normal-tables Use normal DB tables.
--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;
}
}
<?php
-class MediaWikiPHPUnitTestListener implements PHPUnit_Framework_TestListener {
+class MediaWikiPHPUnitTestListener extends PHPUnit_TextUI_ResultPrinter implements PHPUnit_Framework_TestListener {
+
/**
* @var string
*/
- protected $logChannel;
-
- public function __construct( $logChannel ) {
- $this->logChannel = $logChannel;
- }
+ protected $logChannel = 'PHPUnitCommand';
protected function getTestName( PHPUnit_Framework_Test $test ) {
$name = get_class( $test );
* @param float $time
*/
public function addError( PHPUnit_Framework_Test $test, Exception $e, $time ) {
+ parent::addError( $test, $e, $time );
wfDebugLog(
$this->logChannel,
'ERROR in ' . $this->getTestName( $test ) . ': ' . $this->getErrorName( $e )
public function addFailure( PHPUnit_Framework_Test $test,
PHPUnit_Framework_AssertionFailedError $e, $time
) {
+ parent::addFailure( $test, $e, $time );
wfDebugLog(
$this->logChannel,
'FAILURE in ' . $this->getTestName( $test ) . ': ' . $this->getErrorName( $e )
* @param float $time
*/
public function addIncompleteTest( PHPUnit_Framework_Test $test, Exception $e, $time ) {
+ parent::addIncompleteTest( $test, $e, $time );
wfDebugLog(
$this->logChannel,
'Incomplete test ' . $this->getTestName( $test ) . ': ' . $this->getErrorName( $e )
* @param float $time
*/
public function addSkippedTest( PHPUnit_Framework_Test $test, Exception $e, $time ) {
+ parent::addSkippedTest( $test, $e, $time );
wfDebugLog(
$this->logChannel,
'Skipped test ' . $this->getTestName( $test ) . ': ' . $this->getErrorName( $e )
* @param PHPUnit_Framework_TestSuite $suite
*/
public function startTestSuite( PHPUnit_Framework_TestSuite $suite ) {
+ parent::startTestSuite( $suite );
wfDebugLog( $this->logChannel, 'START suite ' . $suite->getName() );
}
* @param PHPUnit_Framework_TestSuite $suite
*/
public function endTestSuite( PHPUnit_Framework_TestSuite $suite ) {
+ parent::endTestSuite( $suite );
wfDebugLog( $this->logChannel, 'END suite ' . $suite->getName() );
}
* @param PHPUnit_Framework_Test $test
*/
public function startTest( PHPUnit_Framework_Test $test ) {
+ parent::startTest( $test );
wfDebugLog( $this->logChannel, 'Start test ' . $this->getTestName( $test ) );
}
* @param float $time
*/
public function endTest( PHPUnit_Framework_Test $test, $time ) {
+ parent::endTest( $test, $time );
wfDebugLog( $this->logChannel, 'End test ' . $this->getTestName( $test ) );
}
}
false, # not required
true # need arg
);
+ $this->addOption(
+ 'debug-tests',
+ 'Log testing activity to the PHPUnitCommand log channel.',
+ false, # not required
+ false # no arg needed
+ );
}
public function finalSetup() {
);
array_splice( $_SERVER['argv'], 1, 0, '--include-path' );
}
+
+ $key = array_search( '--debug-tests', $_SERVER['argv'] );
+ if( $key !== false && array_search( '--printer', $_SERVER['argv'] ) === false ) {
+ unset( $_SERVER['argv'][$key] );
+ array_splice( $_SERVER['argv'], 1, 0, 'MediaWikiPHPUnitTestListener' );
+ array_splice( $_SERVER['argv'], 1, 0, '--printer' );
+ }
+
}
public function getDbType() {