Skip to content

Commit

Permalink
Added setup and teardown support in test runner.
Browse files Browse the repository at this point in the history
  • Loading branch information
cskr committed Nov 20, 2010
1 parent 5117d67 commit 9eb5a4b
Showing 1 changed file with 36 additions and 6 deletions.
42 changes: 36 additions & 6 deletions test/common/ghunit.js
Expand Up @@ -2,10 +2,27 @@ exports.test = function() {
var suites = arguments;
var failures = [], passes = 0;

for(var i = 0; i < suites.length; i++) {
suite = suites[i];

if(suite.setup === undefined) {
suite.setup = function(next) { next(); }
}
if(suite.tearDown === undefined) {
suite.tearDown = function(next) { next(); }
}
if(suite.setupOnce === undefined) {
suite.setupOnce = function(next) { next(); }
}
if(suite.tearDownOnce === undefined) {
suite.tearDownOnce = function(next) { next(); }
}
}

var suite = suites[0], suiteIndex = 0, tests = Object.keys(suite.tests),
testIndex = -1;

nextTest();
suite.setupOnce(nextTest);

function nextTest() {
if(testIndex < Object.keys(suite.tests).length - 1) {
Expand All @@ -16,18 +33,31 @@ exports.test = function() {
testIndex = 0;
suite = suites[suiteIndex];
tests = Object.keys(suite.tests);
runTest();
suite.setupOnce(runTest);
} else {
printResult();
}
}

function runTest() {
console.log(tests[testIndex] + ' [' + suite.name + ']');
suite.tests[tests[testIndex]](function() {
passes++;
nextTest();
});

suite.setup(function() {
suite.tests[tests[testIndex]](function() {
passes++;
runTearDown();
});
});
}

function runTearDown() {
if(testIndex < Object.keys(suite.tests).length - 1) {
suite.tearDown(nextTest);
} else {
suite.tearDown(function() {
suite.tearDownOnce(nextTest);
});
}
}

process.on('uncaughtException', function(err) {
Expand Down

0 comments on commit 9eb5a4b

Please sign in to comment.