From 25c3c061b51cbfe377ebb2decbe09f7db7bc7397 Mon Sep 17 00:00:00 2001 From: Chad Horohoe Date: Thu, 6 Jul 2017 12:42:11 -0700 Subject: [PATCH] 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 --- includes/exception/ErrorPageError.php | 11 +++++++---- .../phpunit/includes/exception/ErrorPageErrorTest.php | 1 + 2 files changed, 8 insertions(+), 4 deletions(-) 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(); -- 2.20.1