MediaWiki REL1_30
MWExceptionTest.php
Go to the documentation of this file.
1<?php
10
14 public function testMwexceptionThrowing() {
15 throw new MWException();
16 }
17
22 public function testUseOutputPage( $expected, $langObj, $wgFullyInitialised, $wgOut ) {
23 $this->setMwGlobals( [
24 'wgLang' => $langObj,
25 'wgFullyInitialised' => $wgFullyInitialised,
26 'wgOut' => $wgOut,
27 ] );
28
29 $e = new MWException();
30 $this->assertEquals( $expected, $e->useOutputPage() );
31 }
32
33 public function provideTextUseOutputPage() {
34 return [
35 // expected, langObj, wgFullyInitialised, wgOut
36 [ false, null, null, null ],
37 [ false, $this->getMockLanguage(), null, null ],
38 [ false, $this->getMockLanguage(), true, null ],
39 [ false, null, true, null ],
40 [ false, null, null, true ],
41 [ true, $this->getMockLanguage(), true, true ],
42 ];
43 }
44
45 private function getMockLanguage() {
46 return $this->getMockBuilder( 'Language' )
47 ->disableOriginalConstructor()
48 ->getMock();
49 }
50
55 public function testUseMessageCache( $expected, $langObj ) {
56 $this->setMwGlobals( [
57 'wgLang' => $langObj,
58 ] );
59 $e = new MWException();
60 $this->assertEquals( $expected, $e->useMessageCache() );
61 }
62
63 public function provideUseMessageCache() {
64 return [
65 [ false, null ],
66 [ true, $this->getMockLanguage() ],
67 ];
68 }
69
73 public function testIsLogable() {
74 $e = new MWException();
75 $this->assertTrue( $e->isLoggable() );
76 }
77
82 public function testisCommandLine( $expected, $wgCommandLineMode ) {
83 $this->setMwGlobals( [
84 'wgCommandLineMode' => $wgCommandLineMode,
85 ] );
86 $e = new MWException();
87 $this->assertEquals( $expected, $e->isCommandLine() );
88 }
89
90 public static function provideIsCommandLine() {
91 return [
92 [ false, null ],
93 [ true, true ],
94 ];
95 }
96
103 public function testJsonSerializeExceptions( $exception_class ) {
104 $json = MWExceptionHandler::jsonSerializeException(
105 new $exception_class()
106 );
107 $this->assertNotEquals( false, $json,
108 "The $exception_class exception should be JSON serializable, got false." );
109 }
110
111 public static function provideExceptionClasses() {
112 return [
113 [ 'Exception' ],
114 [ 'MWException' ],
115 ];
116 }
117
128 public function testJsonserializeexceptionKeys( $expectedKeyType, $exClass, $key ) {
129 # Make sure we log a backtrace:
130 $this->setMwGlobals( [ 'wgLogExceptionBacktrace' => true ] );
131
132 $json = json_decode(
133 MWExceptionHandler::jsonSerializeException( new $exClass() )
134 );
135 $this->assertObjectHasAttribute( $key, $json,
136 "JSON serialized exception is missing key '$key'"
137 );
138 $this->assertInternalType( $expectedKeyType, $json->$key,
139 "JSON serialized key '$key' has type " . gettype( $json->$key )
140 . " (expected: $expectedKeyType)."
141 );
142 }
143
147 public static function provideJsonSerializedKeys() {
148 $testCases = [];
149 foreach ( [ 'Exception', 'MWException' ] as $exClass ) {
150 $exTests = [
151 [ 'string', $exClass, 'id' ],
152 [ 'string', $exClass, 'file' ],
153 [ 'integer', $exClass, 'line' ],
154 [ 'string', $exClass, 'message' ],
155 [ 'null', $exClass, 'url' ],
156 # Backtrace only enabled with wgLogExceptionBacktrace = true
157 [ 'array', $exClass, 'backtrace' ],
158 ];
159 $testCases = array_merge( $testCases, $exTests );
160 }
161 return $testCases;
162 }
163
171 $this->setMwGlobals( [ 'wgLogExceptionBacktrace' => true ] );
172 $json = json_decode(
173 MWExceptionHandler::jsonSerializeException( new Exception() )
174 );
175 $this->assertObjectHasAttribute( 'backtrace', $json );
176 }
177
185 $this->setMwGlobals( [ 'wgLogExceptionBacktrace' => false ] );
186 $json = json_decode(
187 MWExceptionHandler::jsonSerializeException( new Exception() )
188 );
189 $this->assertObjectNotHasAttribute( 'backtrace', $json );
190 }
191
192}
$wgOut
Definition Setup.php:827
global $wgCommandLineMode
Definition Setup.php:526
foreach( $wgExtensionFunctions as $func) if(!defined('MW_NO_SESSION') &&! $wgCommandLineMode) if(! $wgCommandLineMode) $wgFullyInitialised
Definition Setup.php:892
testisCommandLine( $expected, $wgCommandLineMode)
provideIsCommandLine MWException::isCommandLine
testMwexceptionThrowing()
MWException.
testUseMessageCache( $expected, $langObj)
provideUseMessageCache MWException::useMessageCache
static provideIsCommandLine()
testJsonserializeexceptionBacktracingEnabled()
Given wgLogExceptionBacktrace is true then serialized exception SHOULD have a backtrace.
testIsLogable()
MWException::isLoggable.
static provideJsonSerializedKeys()
Returns test cases: exception class, key name, gettype()
testJsonserializeexceptionBacktracingDisabled()
Given wgLogExceptionBacktrace is false then serialized exception SHOULD NOT have a backtrace.
testJsonserializeexceptionKeys( $expectedKeyType, $exClass, $key)
Lame JSON schema validation.
static provideExceptionClasses()
testUseOutputPage( $expected, $langObj, $wgFullyInitialised, $wgOut)
provideTextUseOutputPage MWException::useOutputPage
testJsonSerializeExceptions( $exception_class)
Verify the exception classes are JSON serializabe.
MediaWiki exception.
setMwGlobals( $pairs, $value=null)
Sets a global, maintaining a stashed version of the previous global to be restored in tearDown.
null means default in associative array with keys and values unescaped Should be merged with default with a value of false meaning to suppress the attribute in associative array with keys and values unescaped noclasses just before the function returns a value If you return true
Definition hooks.txt:1976
returning false will NOT prevent logging $e
Definition hooks.txt:2146