From: Chad Horohoe Date: Thu, 6 Jul 2017 19:42:11 +0000 (-0700) Subject: Fix/hack ErrorPageError to work from non-UI contexts X-Git-Tag: 1.31.0-rc.0~2779^2 X-Git-Url: http://git.cyclocoop.org/?a=commitdiff_plain;h=25c3c061b51cbfe377ebb2decbe09f7db7bc7397;p=lhc%2Fweb%2Fwiklou.git Fix/hack ErrorPageError to work from non-UI contexts Right now, ErrorPageError *assumes* you're never running on the cli or the API. It's kinda a crappy superclass to use for errors unless you're 1000% sure you'll never hit that code path. Yay assumptions! Ideally, all of this report() crap is cleaned up and unified across the like 1192902117 places we have it spread out, but for now just detect the scenario and delegate back to MWException, which does the right thing Bug: T168337 Change-Id: Ia2f490528e128527a7a5ef1f4f5eea36ec9ee810 --- diff --git a/includes/exception/ErrorPageError.php b/includes/exception/ErrorPageError.php index 2bed87af36..4b1812673f 100644 --- a/includes/exception/ErrorPageError.php +++ b/includes/exception/ErrorPageError.php @@ -61,9 +61,12 @@ class ErrorPageError extends MWException implements ILocalizedException { } public function report() { - global $wgOut; - - $wgOut->showErrorPage( $this->title, $this->msg, $this->params ); - $wgOut->output(); + if ( self::isCommandLine() || defined( 'MW_API' ) ) { + parent::report(); + } else { + global $wgOut; + $wgOut->showErrorPage( $this->title, $this->msg, $this->params ); + $wgOut->output(); + } } } diff --git a/tests/phpunit/includes/exception/ErrorPageErrorTest.php b/tests/phpunit/includes/exception/ErrorPageErrorTest.php index 71398e3f64..e72865f6be 100644 --- a/tests/phpunit/includes/exception/ErrorPageErrorTest.php +++ b/tests/phpunit/includes/exception/ErrorPageErrorTest.php @@ -43,6 +43,7 @@ class ErrorPageErrorTest extends MediaWikiTestCase { $mock->expects( $this->once() ) ->method( 'output' ); $this->setMwGlobals( 'wgOut', $mock ); + $this->setMwGlobals( 'wgCommandLineMode', false ); $e = new ErrorPageError( $title, $mockMessage, $params ); $e->report();