mirror of
https://github.com/meteor/meteor.git
synced 2026-05-02 03:01:46 -04:00
new test driver package: runs server tests, exits
This commit is contained in:
1
packages/test-server-tests-in-console-once/.gitignore
vendored
Normal file
1
packages/test-server-tests-in-console-once/.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
||||
.build*
|
||||
12
packages/test-server-tests-in-console-once/package.js
Normal file
12
packages/test-server-tests-in-console-once/package.js
Normal file
@@ -0,0 +1,12 @@
|
||||
Package.describe({
|
||||
name: 'test-server-tests-in-console-once',
|
||||
summary: "Run server tests noninteractively, with results going to the console.",
|
||||
version: '1.0.0',
|
||||
internal: true
|
||||
});
|
||||
|
||||
Package.on_use(function (api) {
|
||||
api.use(['tinytest', 'underscore', 'ejson'], 'server');
|
||||
|
||||
api.add_files(['server.js'], "server");
|
||||
});
|
||||
78
packages/test-server-tests-in-console-once/server.js
Normal file
78
packages/test-server-tests-in-console-once/server.js
Normal file
@@ -0,0 +1,78 @@
|
||||
var passed = 0;
|
||||
var failed = 0;
|
||||
var expected = 0;
|
||||
var resultSet = {};
|
||||
|
||||
var getName = function (result) {
|
||||
return result.groupPath.join(" - ") + " - " + result.test;
|
||||
};
|
||||
|
||||
Meteor.startup(function () {
|
||||
console.log("running server-side tests");
|
||||
Tinytest._runTests(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: [],
|
||||
testPath: testPath
|
||||
};
|
||||
}
|
||||
_.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 "exception":
|
||||
console.log(name, ":", "!!!!!!!!! FAIL !!!!!!!!!!!");
|
||||
if (event.details && event.details.stack)
|
||||
console.log(event.details.stack);
|
||||
else
|
||||
console.log("Test failed with exception");
|
||||
failed++;
|
||||
break;
|
||||
case "finish":
|
||||
switch (resultSet[name].status) {
|
||||
case "OK":
|
||||
break;
|
||||
case "PENDING":
|
||||
resultSet[name].status = "OK";
|
||||
console.log(name, ":", "OK");
|
||||
passed++;
|
||||
break;
|
||||
case "EXPECTED":
|
||||
console.log(name, ":", "EXPECTED FAILURE");
|
||||
expected++;
|
||||
break;
|
||||
case "FAIL":
|
||||
failed++;
|
||||
console.log(name, ":", "!!!!!!!!! FAIL !!!!!!!!!!!");
|
||||
console.log(JSON.stringify(resultSet[name].info));
|
||||
break;
|
||||
default:
|
||||
console.log(name, ": unknown state for the test to be in");
|
||||
}
|
||||
break;
|
||||
default:
|
||||
resultSet[name].status = "FAIL";
|
||||
resultSet[name].info = results;
|
||||
break;
|
||||
}
|
||||
});
|
||||
}, function () {
|
||||
if (failed > 0) {
|
||||
console.log("~~~~~~~ THERE ARE FAILURES ~~~~~~~");
|
||||
}
|
||||
console.log("passed/expected/failed/total",
|
||||
passed, "/", expected, "/", failed, "/", _.size(resultSet));
|
||||
|
||||
process.exit(failed ? 1 : 0);
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user