diff --git a/lib/server.js b/lib/server.js index 9aacb0a..5ac5ddb 100644 --- a/lib/server.js +++ b/lib/server.js @@ -99,16 +99,22 @@ 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.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();