From 018ed03e1f488ac3c160e74177a7613a95792445 Mon Sep 17 00:00:00 2001 From: Dhimil Gosalia Date: Tue, 4 Mar 2014 01:47:18 +0530 Subject: [PATCH 1/2] replace spaces --- lib/server.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/server.js b/lib/server.js index 9aacb0a..e43a83d 100644 --- a/lib/server.js +++ b/lib/server.js @@ -99,7 +99,8 @@ exports.Server = function Server(bsClient, workers) { } function parseBody(body) { - return JSON.parse(qs.parse(body).data.replace(/\n/g, "\\n")); + // TODO: Have better implementation + return JSON.parse(qs.parse(body).data.replace(/\n/g, "\\n").replace(/\\s/g, "\s")); } handlers = { From a04e31bea237193c1294b0fe6ff07fcfaeb4d527 Mon Sep 17 00:00:00 2001 From: Rahul Nawani Date: Tue, 4 Mar 2014 13:50:32 +0530 Subject: [PATCH 2/2] catch exception in qunit log parsing --- lib/server.js | 13 +++++++++---- lib/utils.js | 6 ++++++ 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/lib/server.js b/lib/server.js index e43a83d..5ac5ddb 100644 --- a/lib/server.js +++ b/lib/server.js @@ -100,16 +100,21 @@ exports.Server = function Server(bsClient, workers) { function parseBody(body) { // TODO: Have better implementation - return JSON.parse(qs.parse(body).data.replace(/\n/g, "\\n").replace(/\\s/g, "\s")); + return JSON.parse(qs.parse(body).data.escapeSpecialChars()); } handlers = { "_progress": function progressHandler(uri, body, request, response) { - query = parseBody(body); - var uuid = request.headers['x-worker-uuid']; var worker = workers[uuid]; - //console.log("Tests run:", query.tests_run); + query = ""; + try { + query = parseBody(body); + } catch(e) { + console.log("[%s] Exception in parsing QUnit log", worker.string) + console.log("[%s] Log: " + qs.parse(body).data, worker.string) + } + if (query.tracebacks) { query.tracebacks.forEach(function (traceback) { console.log("[%s] Error:", worker.string, traceback); diff --git a/lib/utils.js b/lib/utils.js index 9c19b7d..c3e5a0a 100644 --- a/lib/utils.js +++ b/lib/utils.js @@ -3,6 +3,12 @@ var http = require('http'); var url = require('url'); var querystring = require('querystring'); +String.prototype.escapeSpecialChars = function() { + return this.replace(/\n/g, "\\n") + .replace(/\\s/g, "\s") + .replace(/\\\'/, "\'"); +}; + var titleCase = function toTitleCase(str) { return str.replace(/\w\S*/g, function (txt) { return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();