summaryrefslogtreecommitdiff
path: root/www/wiki/tests/phpunit/MediaWikiPHPUnitTestListener.php
blob: 0a162a283de887f9a759533db83b9945b74ba393 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
<?php

class MediaWikiPHPUnitTestListener
	extends PHPUnit_TextUI_ResultPrinter implements PHPUnit_Framework_TestListener {

	/**
	 * @var string
	 */
	protected $logChannel = 'PHPUnitCommand';

	protected function getTestName( PHPUnit_Framework_Test $test ) {
		$name = get_class( $test );

		if ( $test instanceof PHPUnit\Framework\TestCase ) {
			$name .= '::' . $test->getName( true );
		}

		return $name;
	}

	protected function getErrorName( Exception $exception ) {
		$name = get_class( $exception );
		$name = "[$name] " . $exception->getMessage();

		return $name;
	}

	/**
	 * An error occurred.
	 *
	 * @param PHPUnit_Framework_Test $test
	 * @param Exception $e
	 * @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 )
		);
	}

	/**
	 * A failure occurred.
	 *
	 * @param PHPUnit_Framework_Test $test
	 * @param PHPUnit_Framework_AssertionFailedError $e
	 * @param float $time
	 */
	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 )
		);
	}

	/**
	 * Incomplete test.
	 *
	 * @param PHPUnit_Framework_Test $test
	 * @param Exception $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 )
		);
	}

	/**
	 * Skipped test.
	 *
	 * @param PHPUnit_Framework_Test $test
	 * @param Exception $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 )
		);
	}

	/**
	 * A test suite started.
	 *
	 * @param PHPUnit_Framework_TestSuite $suite
	 */
	public function startTestSuite( PHPUnit_Framework_TestSuite $suite ) {
		parent::startTestSuite( $suite );
		wfDebugLog( $this->logChannel, 'START suite ' . $suite->getName() );
	}

	/**
	 * A test suite ended.
	 *
	 * @param PHPUnit_Framework_TestSuite $suite
	 */
	public function endTestSuite( PHPUnit_Framework_TestSuite $suite ) {
		parent::endTestSuite( $suite );
		wfDebugLog( $this->logChannel, 'END suite ' . $suite->getName() );
	}

	/**
	 * A test started.
	 *
	 * @param PHPUnit_Framework_Test $test
	 */
	public function startTest( PHPUnit_Framework_Test $test ) {
		parent::startTest( $test );
		wfDebugLog( $this->logChannel, 'Start test ' . $this->getTestName( $test ) );
	}

	/**
	 * A test ended.
	 *
	 * @param PHPUnit_Framework_Test $test
	 * @param float $time
	 */
	public function endTest( PHPUnit_Framework_Test $test, $time ) {
		parent::endTest( $test, $time );
		wfDebugLog( $this->logChannel, 'End test ' . $this->getTestName( $test ) );
	}
}