jenkins-bot has submitted this change and it was merged.

Change subject: Improve error reporting
......................................................................


Improve error reporting

Display error message in the UI,
if the check command passes,
but the mml/svg/complete endpoints returns an valid json error.

Bug: T143225
Change-Id: I50776926e42f75a2c1e30fc9afe08baae3fcdbd1
---
M MathRestbaseInterface.php
M tests/MathRestBaseInterfaceTest.php
2 files changed, 53 insertions(+), 1 deletion(-)

Approvals:
  Mobrovac: Looks good to me, approved
  jenkins-bot: Verified



diff --git a/MathRestbaseInterface.php b/MathRestbaseInterface.php
index f223b0a..a2d8470 100644
--- a/MathRestbaseInterface.php
+++ b/MathRestbaseInterface.php
@@ -428,6 +428,24 @@
                        'math_type' => $type,
                        'tex' => $this->tex
                ] );
-               throw new MWException( "Cannot get $type. Server problem." );
+               self::throwContentError( $type, $response['body'] );
+       }
+
+       /**
+        * @param $type
+        * @param $body
+        * @throws MWException
+        */
+       public static function throwContentError( $type, $body ) {
+               $detail = 'Server problem.';
+               $json = json_decode( $body );
+               if ( isset( $json->detail ) ) {
+                       if ( is_array( $json->detail ) ){
+                               $detail = $json->detail[0];
+                       } elseif ( is_string( $json->detail ) ) {
+                               $detail = $json->detail;
+                       }
+               }
+               throw new MWException( "Cannot get $type. $detail" );
        }
 }
diff --git a/tests/MathRestBaseInterfaceTest.php 
b/tests/MathRestBaseInterfaceTest.php
index af21836..9ab6f39 100644
--- a/tests/MathRestBaseInterfaceTest.php
+++ b/tests/MathRestBaseInterfaceTest.php
@@ -85,4 +85,38 @@
                $rbi->getFullSvgUrl();
        }
 
+       /**
+        * Incorporate the "details" in the error message, if the check 
requests passes, but the
+        * mml/svg/complete endpoints returns an error
+        * @expectedException MWException
+        * @expectedExceptionMessage Cannot get mml. TeX parse error: Missing 
close brace
+        */
+       public function testLateError() {
+               // @codingStandardsIgnoreStart
+               $input = 
'{"type":"https://mediawiki.org/wiki/HyperSwitch/errors/bad_request","title":"Bad
 Request","method":"POST","detail":["TeX parse error: Missing close 
brace"],"uri":"/complete"}';
+               // @codingStandardsIgnoreEnd
+               MathRestbaseInterface::throwContentError( 'mml', $input );
+       }
+
+       /**
+        * Incorporate the "details" in the error message, if the check 
requests passes, but the
+        * mml/svg/complete endpoints returns an error
+        * @expectedException MWException
+        * @expectedExceptionMessage Cannot get mml. TeX parse error: Missing 
close brace
+        */
+       public function testLateErrorString() {
+               // @codingStandardsIgnoreStart
+               $input = 
'{"type":"https://mediawiki.org/wiki/HyperSwitch/errors/bad_request","title":"Bad
 Request","method":"POST","detail": "TeX parse error: Missing close 
brace","uri":"/complete"}';
+               // @codingStandardsIgnoreEnd
+               MathRestbaseInterface::throwContentError( 'mml', $input );
+       }
+
+       /**
+        * @expectedException MWException
+        * @expectedExceptionMessage Cannot get mml. Server problem.
+        */
+       public function testLateErrorNoDetail() {
+               $input = '';
+               MathRestbaseInterface::throwContentError( 'mml', $input );
+       }
 }

-- 
To view, visit https://gerrit.wikimedia.org/r/305310
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: I50776926e42f75a2c1e30fc9afe08baae3fcdbd1
Gerrit-PatchSet: 3
Gerrit-Project: mediawiki/extensions/Math
Gerrit-Branch: master
Gerrit-Owner: Physikerwelt <[email protected]>
Gerrit-Reviewer: Alexandros Kosiaris <[email protected]>
Gerrit-Reviewer: Mobrovac <[email protected]>
Gerrit-Reviewer: Physikerwelt <[email protected]>
Gerrit-Reviewer: TheDJ <[email protected]>
Gerrit-Reviewer: jenkins-bot <>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to