From 2018098d267d74565d0cecd1212543e6e38fd4d1 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Bartosz=20Dziewo=C5=84ski?= Date: Fri, 14 Feb 2014 00:55:39 +0100 Subject: [PATCH] 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 --- .../src/mediawiki/mediawiki.jqueryMsg.js | 4 ++- .../mediawiki/mediawiki.jqueryMsg.test.js | 27 +++++++++++++++++-- 2 files changed, 28 insertions(+), 3 deletions(-) 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 ) ); -- 2.20.1