Fixing run script to know about its directory

This commit is contained in:
Naomi Seyfer
2013-03-20 17:24:50 -07:00
parent bee0aaf173
commit 93b81a8ebd
3 changed files with 85 additions and 82 deletions

View File

@@ -1,7 +1,5 @@
DONE = false;
(function () {
var getName = function (result) {
return (result.server ? "S: " : "C: ") +
result.groupPath.join(" - ") + " - " + result.test;
@@ -16,22 +14,15 @@ var expected = 0;
var resultSet = {};
var toReport = [];
var url = null;
if (Meteor.settings &&
Meteor.settings.public &&
!_.isEmpty(Meteor.settings.public.runId) &&
!_.isEmpty(Meteor.settings.public.reportTo)) {
url = Meteor.settings.public.reportTo +
"/report/" +
Meteor.settings.public.runId;
}
var hrefPath = document.location.href.split("/");
var platform = hrefPath.length && hrefPath[hrefPath.length - 1];
if (_.isEmpty(platform))
platform = "local";
var doReport = Meteor &&
Meteor.settings.public &&
Meteor.settings.public.runId;
var report = function (name, last) {
if (url && url !== "") {
if (doReport) {
var data = {
run_id: Meteor.settings.public.runId,
testPath: resultSet[name].testPath,
@@ -57,83 +48,81 @@ var sendReports = function (callback) {
if (!callback)
callback = function () {};
toReport = [];
if (url)
Meteor.call("report", url, reports, callback);
if (doReport)
Meteor.call("report", reports, callback);
else
callback();
};
Meteor.startup(function () {
setTimeout(sendReports, 500);
setInterval(sendReports, 2000);
setTimeout(sendReports, 500);
setInterval(sendReports, 2000);
Meteor._runTestsEverywhere(
function (results) {
var name = getName(results);
if (!_.has(resultSet, name)) {
var testPath = EJSON.clone(results.groupPath);
testPath.push(results.test);
resultSet[name] = {
name: name,
status: "PENDING",
events: [],
server: !!results.server,
testPath: testPath
};
report(name, false);
}
_.each(results.events, function (event) {
resultSet[name].events.push(event);
switch (event.type) {
case "ok":
break;
case "expected_fail":
if (resultSet[name].status !== "FAIL")
resultSet[name].status = "EXPECTED";
break;
case "finish":
switch (resultSet[name].status) {
case "OK":
Meteor._runTestsEverywhere(
function (results) {
var name = getName(results);
if (!_.has(resultSet, name)) {
var testPath = EJSON.clone(results.groupPath);
testPath.push(results.test);
resultSet[name] = {
name: name,
status: "PENDING",
events: [],
server: !!results.server,
testPath: testPath
};
report(name, false);
}
_.each(results.events, function (event) {
resultSet[name].events.push(event);
switch (event.type) {
case "ok":
break;
case "PENDING":
resultSet[name].status = "OK";
report(name, true);
console.log(name, ":", "OK");
passed++;
case "expected_fail":
if (resultSet[name].status !== "FAIL")
resultSet[name].status = "EXPECTED";
break;
case "EXPECTED":
report(name, true);
console.log(name, ":", "EXPECTED FAILURE");
expected++;
break;
case "FAIL":
failed++;
report(name, true);
console.log(name, ":", "!!!!!!!!! FAIL !!!!!!!!!!!");
console.log(JSON.stringify(resultSet[name].info));
case "finish":
switch (resultSet[name].status) {
case "OK":
break;
case "PENDING":
resultSet[name].status = "OK";
report(name, true);
console.log(name, ":", "OK");
passed++;
break;
case "EXPECTED":
report(name, true);
console.log(name, ":", "EXPECTED FAILURE");
expected++;
break;
case "FAIL":
failed++;
report(name, true);
console.log(name, ":", "!!!!!!!!! FAIL !!!!!!!!!!!");
console.log(JSON.stringify(resultSet[name].info));
break;
default:
console.log(name, ": unknown state for the test to be in");
}
finished++;
break;
default:
console.log(name, ": unknown state for the test to be in");
resultSet[name].status = "FAIL";
resultSet[name].info = results;
break;
}
finished++;
break;
default:
resultSet[name].status = "FAIL";
resultSet[name].info = results;
break;
}
});
},
});
},
function () {
console.log("passed/expected/failed/total", passed, "/", expected, "/", failed, "/", _.size(resultSet));
sendReports(function () {
console.log("Waiting 3s for any last reports to get sent out");
setTimeout(function () {
DONE = true;
}, 3000);
});
},
["tinytest"]);
function () {
console.log("passed/expected/failed/total", passed, "/", expected, "/", failed, "/", _.size(resultSet));
sendReports(function () {
console.log("Waiting 3s for any last reports to get sent out");
setTimeout(function () {
DONE = true;
}, 3000);
});
},
["tinytest"]);
});
})();

View File

@@ -1,5 +1,15 @@
var url = null;
if (Meteor.settings &&
Meteor.settings.public &&
!_.isEmpty(Meteor.settings.public.runId) &&
!_.isEmpty(Meteor.settings.public.reportTo)) {
url = Meteor.settings.public.reportTo +
"/report/" +
Meteor.settings.public.runId;
}
Meteor.methods({
report: function (url, reports) {
report: function (reports) {
Meteor.http.post(url, {
data: reports
});

View File

@@ -1,5 +1,9 @@
#!/bin/bash
cd `dirname $0`
cd ../..
export METEOR_HOME=`pwd`
#eventually this should be the new engine way to run tests
cd $METEOR_HOME/packages