From a978dc614ede696d65c1d3be74c26962ade685ed Mon Sep 17 00:00:00 2001 From: Nakul Date: Mon, 24 Feb 2014 05:54:10 +0530 Subject: [PATCH 1/7] fixing logging --- lib/_patch/qunit-plugin.js | 44 +++++++++++++++++++------------------- lib/server.js | 13 +++++------ 2 files changed, 29 insertions(+), 28 deletions(-) diff --git a/lib/_patch/qunit-plugin.js b/lib/_patch/qunit-plugin.js index 0d84053..e6e2eba 100644 --- a/lib/_patch/qunit-plugin.js +++ b/lib/_patch/qunit-plugin.js @@ -1,30 +1,30 @@ -// Here begins strider-qunit extension plugin +// For logging assertions on the console, here's what grunt-contrib-qunit uses: +// https://github.com/gruntjs/grunt-contrib-qunit/blob/784597023e7235337ca9c0651aa45124a2d72341/tasks/qunit.js#L45 (function(){ - var striderErrors = [] - , i = 0; + var failedAssertions = []; + var options, currentModule, currentTest, status; - QUnit.log = function(res){ - i++; - if (!res || !res.result){ - // Failure: - striderErrors.push(JSON.stringify(res)); + QUnit.testStart(function( details ) { + currentTest = details.module + " - " + details.name; + }); + + QUnit.log(function( details ) { + if ( details.result ) { + return; } - if (i%50 == 0){ - var data = { - tests_run: i - , tracebacks: striderErrors - , url : window.location.pathname - } - striderErrors = []; - BrowserStack.post('/_progress', data, function(){}); + + var error = { + actual: details.actual, expected: details.expected, message: details.message, source: details.source, + testName: (details.module + ": " + details.name) } - } - - QUnit.done = function(results){ - results.tracebacks = striderErrors; + + BrowserStack.post('/_progress', {tracebacks: [error]}, function(){}); + }); + + QUnit.done(function( results ) { results.url = window.location.pathname; BrowserStack.post("/_report", results, function(){}); - } + }); + })(); -// End Strider diff --git a/lib/server.js b/lib/server.js index db8f5a3..b7332dd 100644 --- a/lib/server.js +++ b/lib/server.js @@ -104,14 +104,15 @@ exports.Server = function Server(bsClient, workers) { var uuid = request.headers['x-worker-uuid']; var worker = workers[uuid]; - // console.log("Tests run:", query.tests_run); - // if (query.tracebacks) { - // query.tracebacks.forEach(function (traceback) { - // console.log("Error:", traceback); - // }); - // } + //console.log("Tests run:", query.tests_run); + if (query.tracebacks) { + query.tracebacks.forEach(function (traceback) { + console.log("Error:", traceback); + }); + } response.end(); }, + "_report": function reportHandler(uri, body, request, response) { query = null; try {query = parseBody(body); }catch(e){} From c918d4e56078830c71d097b2ef7af73bd219314d Mon Sep 17 00:00:00 2001 From: Nakul Date: Mon, 24 Feb 2014 06:46:06 +0530 Subject: [PATCH 2/7] minor fix to report stuck tests --- lib/_patch/qunit-plugin.js | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/lib/_patch/qunit-plugin.js b/lib/_patch/qunit-plugin.js index e6e2eba..81ff476 100644 --- a/lib/_patch/qunit-plugin.js +++ b/lib/_patch/qunit-plugin.js @@ -3,10 +3,27 @@ (function(){ var failedAssertions = []; - var options, currentModule, currentTest, status; + var options, currentModule, currentTest, setTimeoutVariable; + var pendingTest = {}; + + var testTimeout = function() { + var error = { + testName: currentTest, message: "Stuck on this test for 60 sec." + } + + BrowserStack.post('/_progress', {tracebacks: [error]}, function(){}); + } + + QUnit.testDone(function( details ) { + var ct = details.module + " - " + details.name; + clearTimeout(pendingTest[ct]); + }); QUnit.testStart(function( details ) { currentTest = details.module + " - " + details.name; + pendingTest[currentTest] = setTimeout(function(){ + testTimeout(currentTest); + }, 60000); }); QUnit.log(function( details ) { From 62b3ef33c1407e8661a4446d8514c0aa7c01f3f3 Mon Sep 17 00:00:00 2001 From: Nakul Date: Mon, 24 Feb 2014 06:47:06 +0530 Subject: [PATCH 3/7] null tracebacks --- lib/server.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/server.js b/lib/server.js index b7332dd..0bbbcc2 100644 --- a/lib/server.js +++ b/lib/server.js @@ -122,7 +122,7 @@ exports.Server = function Server(bsClient, workers) { if (query == null) { console.log("[%s] Null response from remote Browser", request.headers['x-browser-string']); } else { - if (query.tracebacks.length > 0) { + if (query.tracebacks && query.tracebacks.length > 0) { console.log("Tracebacks:"); query.tracebacks.forEach(function (traceback) { console.log(traceback); From 1e9d0ca95ce7066cdf1ee3333ccbabad939ed786 Mon Sep 17 00:00:00 2001 From: Nakul Date: Sat, 1 Mar 2014 15:01:03 +0530 Subject: [PATCH 4/7] fix issues of \n and given directory path load index.html --- lib/_patch/qunit-plugin.js | 2 +- lib/server.js | 8 ++++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/lib/_patch/qunit-plugin.js b/lib/_patch/qunit-plugin.js index 81ff476..99fd73b 100644 --- a/lib/_patch/qunit-plugin.js +++ b/lib/_patch/qunit-plugin.js @@ -32,7 +32,7 @@ } var error = { - actual: details.actual, expected: details.expected, message: details.message, source: details.source, + actual: details.actual, expected: encodeURIComponent(details.expected), message: encodeURIComponent(details.message), source: encodeURIComponent(details.source), testName: (details.module + ": " + details.name) } diff --git a/lib/server.js b/lib/server.js index 45cfa05..60456ed 100644 --- a/lib/server.js +++ b/lib/server.js @@ -36,6 +36,10 @@ exports.Server = function Server(bsClient, workers) { response.end(); return; } + + if (fs.lstatSync(filename).isDirectory()) { + filename = filename + "index.html"; + } fs.readFile(filename, "binary", function(err, file) { @@ -47,7 +51,7 @@ exports.Server = function Server(bsClient, workers) { } var mimeType = mimeTypes[path.extname(filename).split(".")[1]]; - response.writeHead(200, mimeType); + response.writeHead(200, {"Content-Type": mimeType}); scripts = [ 'json2.js', @@ -95,7 +99,7 @@ exports.Server = function Server(bsClient, workers) { } function parseBody(body) { - return JSON.parse(qs.parse(body).data); + return JSON.parse(qs.parse(body).data.replace(/\n/g, "\\n")); } handlers = { From 10472d9e5ca06ce5ceb875605a9d1be660796fe0 Mon Sep 17 00:00:00 2001 From: Rahul Nawani Date: Mon, 3 Mar 2014 18:08:11 +0530 Subject: [PATCH 5/7] add worker string before progress logs --- lib/server.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/server.js b/lib/server.js index 60456ed..686a81c 100644 --- a/lib/server.js +++ b/lib/server.js @@ -111,7 +111,7 @@ exports.Server = function Server(bsClient, workers) { //console.log("Tests run:", query.tests_run); if (query.tracebacks) { query.tracebacks.forEach(function (traceback) { - console.log("Error:", traceback); + console.log("[%s] Error: %s", worker.string, traceback); }); } response.end(); From b67bbdc6519391a2bc6100243defe46a9a5993e0 Mon Sep 17 00:00:00 2001 From: Rahul Nawani Date: Mon, 3 Mar 2014 18:21:31 +0530 Subject: [PATCH 6/7] print traceback as string --- lib/server.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/server.js b/lib/server.js index 686a81c..9d24a85 100644 --- a/lib/server.js +++ b/lib/server.js @@ -111,7 +111,7 @@ exports.Server = function Server(bsClient, workers) { //console.log("Tests run:", query.tests_run); if (query.tracebacks) { query.tracebacks.forEach(function (traceback) { - console.log("[%s] Error: %s", worker.string, traceback); + console.log("[%s] Error:", worker.string, traceback); }); } response.end(); From 8ebac90fec68b19f46f84cb3b9ad8e3f129decd0 Mon Sep 17 00:00:00 2001 From: Dhimil Gosalia Date: Mon, 3 Mar 2014 21:14:07 +0530 Subject: [PATCH 7/7] Minor changes for accept filename with and without / --- lib/server.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/server.js b/lib/server.js index 9d24a85..9aacb0a 100644 --- a/lib/server.js +++ b/lib/server.js @@ -38,7 +38,7 @@ exports.Server = function Server(bsClient, workers) { } if (fs.lstatSync(filename).isDirectory()) { - filename = filename + "index.html"; + filename = filename + (filename.lastIndexOf('/') == filename.length - 1 ? "" : "/") + "index.html"; } fs.readFile(filename, "binary", function(err, file) {