From: Bartosz DziewoƄski Date: Thu, 13 Feb 2014 23:55:39 +0000 (+0100) Subject: mediawiki.jqueryMsg: Don't throw parse errors in the user's face X-Git-Tag: 1.31.0-rc.0~16274^2 X-Git-Url: https://git.cyclocoop.org/%7B%24www_url%7Dadmin/compta/comptes/ajouter.php?a=commitdiff_plain;h=2018098d267d74565d0cecd1212543e6e38fd4d1;p=lhc%2Fweb%2Fwiklou.git mediawiki.jqueryMsg: Don't throw parse errors in the user's face Log them to the console instead, displaying unparsed text. Added tests for this behavior. Change-Id: I8290387e1e85ad68f0198c6c8e4cd5e4c74832d3 --- diff --git a/resources/src/mediawiki/mediawiki.jqueryMsg.js b/resources/src/mediawiki/mediawiki.jqueryMsg.js index 0a0b4f6671..505a35bd67 100644 --- a/resources/src/mediawiki/mediawiki.jqueryMsg.js +++ b/resources/src/mediawiki/mediawiki.jqueryMsg.js @@ -122,7 +122,9 @@ try { return parser.parse( key, argsArray ); } catch ( e ) { - return $( '' ).text( key + ': ' + e.message ); + var fallback = parser.settings.messages.get( key ); + mw.log.warn( 'mediawiki.jqueryMsg: ' + key + ': ' + e.message ); + return $( '' ).text( fallback ); } }; } diff --git a/tests/qunit/suites/resources/mediawiki/mediawiki.jqueryMsg.test.js b/tests/qunit/suites/resources/mediawiki/mediawiki.jqueryMsg.test.js index a2ad50d65f..995c1ed39f 100644 --- a/tests/qunit/suites/resources/mediawiki/mediawiki.jqueryMsg.test.js +++ b/tests/qunit/suites/resources/mediawiki/mediawiki.jqueryMsg.test.js @@ -297,11 +297,13 @@ // Pipe trick is not supported currently, but should not parse as text either. mw.messages.set( 'pipe-trick', '[[Tampa, Florida|]]' ); + this.suppressWarnings(); assert.equal( formatParse( 'pipe-trick' ), - 'pipe-trick: Parse error at position 0 in input: [[Tampa, Florida|]]', - 'Pipe trick should return error string.' + '[[Tampa, Florida|]]', + 'Pipe trick should not be parsed.' ); + this.restoreWarnings(); expectedMultipleBars = 'Main|Page'; mw.messages.set( 'multiple-bars', '[[Main Page|Main|Page]]' ); @@ -734,4 +736,25 @@ QUnit.test( 'HTML', 26, function ( assert ) { ); } ); + QUnit.test( 'Behavior in case of invalid wikitext', 3, function ( assert ) { + mw.messages.set( 'invalid-wikitext', '{{FAIL}}' ); + + this.suppressWarnings(); + var logSpy = this.sandbox.spy( mw.log, 'warn' ); + + assert.equal( + formatParse( 'invalid-wikitext' ), + '<b>{{FAIL}}</b>', + 'Invalid wikitext: \'parse\' format' + ); + + assert.equal( + formatText( 'invalid-wikitext' ), + '{{FAIL}}', + 'Invalid wikitext: \'text\' format' + ); + + assert.equal( logSpy.callCount, 2, 'mw.log.warn calls' ); + } ); + }( mediaWiki, jQuery ) );