+ /**
+ * @covers Hooks::run
+ */
+ public function testNullReturn() {
+ Hooks::register( 'MediaWikiHooksTest001', function ( &$foo ) {
+ return;
+ } );
+ Hooks::register( 'MediaWikiHooksTest001', function ( &$foo ) {
+ $foo = 'test';
+
+ return true;
+ } );
+ $foo = 'original';
+ Hooks::run( 'MediaWikiHooksTest001', [ &$foo ] );
+ $this->assertSame( 'test', $foo, 'Hooks continue after a null return.' );
+ }
+
+ /**
+ * @covers Hooks::callHook
+ */
+ public function testCallHook_FalseHook() {
+ Hooks::register( 'MediaWikiHooksTest001', false );
+ Hooks::register( 'MediaWikiHooksTest001', function ( &$foo ) {
+ $foo = 'test';
+
+ return true;
+ } );
+ $foo = 'original';
+ Hooks::run( 'MediaWikiHooksTest001', [ &$foo ] );
+ $this->assertSame( 'test', $foo, 'Hooks that are falsey are skipped.' );
+ }
+
+ /**
+ * @covers Hooks::callHook
+ * @expectedException MWException
+ */
+ public function testCallHook_UnknownDatatype() {
+ Hooks::register( 'MediaWikiHooksTest001', 12345 );
+ Hooks::run( 'MediaWikiHooksTest001' );
+ }
+
+ /**
+ * @covers Hooks::callHook
+ * @expectedException PHPUnit_Framework_Error_Deprecated
+ */
+ public function testCallHook_Deprecated() {
+ Hooks::register( 'MediaWikiHooksTest001', 'NothingClass::someStatic' );
+ Hooks::run( 'MediaWikiHooksTest001', [], '1.31' );
+ }
+