1
0
Fork 0

Refactor Test Runner

This commit is contained in:
Lucas Dohmen 2014-06-16 14:38:29 +02:00
parent b5764513d9
commit 403cdd80b6
1 changed files with 30 additions and 28 deletions

View File

@ -1,76 +1,78 @@
/*jslint indent: 2, nomen: true, maxlen: 120, regexp: true, todo: true */
/*global module, require, exports, print */
var RunTest = require('jsunity').runTest;
var _ = require("underscore");
var internal = require('internal');
var fs = require('fs');
var runTest = require('jsunity').runTest,
_ = require('underscore'),
internal = require('internal'),
fs = require('fs'),
runJSUnityTests,
runJasmineTests,
runCommandLineTests;
////////////////////////////////////////////////////////////////////////////////
/// @brief runs all jsunity tests
////////////////////////////////////////////////////////////////////////////////
function RunJSUnityTests (tests) {
var result = true,
i,
file,
ok;
runJSUnityTests = function (tests) {
'use strict';
var result = true;
for (i = 0; i < tests.length; ++i) {
file = tests[i];
print();
print("running tests from file '" + file + "'");
_.each(tests, function (file) {
print("\nRunning JSUnity test from file '" + file + "'");
try {
ok = RunTest(file);
result = result && ok;
}
catch (err) {
result = result && runTest(file);
} catch (err) {
print("cannot run test file '" + file + "': " + err);
print(err.stack);
result = false;
}
internal.wait(0); // force GC
}
});
return result;
}
};
////////////////////////////////////////////////////////////////////////////////
/// @brief runs all jsunity tests
////////////////////////////////////////////////////////////////////////////////
function RunJasmineTests (testFiles) {
var result = true;
runJasmineTests = function (testFiles) {
'use strict';
var result = true,
tests,
jasmine;
if (testFiles.length > 0) {
var tests = _.map(testFiles, function (x) { return fs.read(x); }),
jasmine = require('jasmine');
tests = _.map(testFiles, function (x) { return fs.read(x); });
jasmine = require('jasmine');
print('\nRunning Jasmine Tests: ' + testFiles.join(', '));
result = jasmine.executeTestSuite(tests);
}
return result;
}
};
////////////////////////////////////////////////////////////////////////////////
/// @brief runs tests from command-line
////////////////////////////////////////////////////////////////////////////////
function runCommandLineTests () {
runCommandLineTests = function () {
'use strict';
var result = true,
unitTests = internal.unitTests(),
isSpecRegEx = /.+spec.js/,
isSpec = function(unitTest) {
isSpec = function (unitTest) {
return isSpecRegEx.test(unitTest);
},
jasmine = _.filter(unitTests, isSpec),
jsUnity = _.reject(unitTests, isSpec);
result = RunJSUnityTests(jsUnity) && RunJasmineTests(jasmine);
result = runJSUnityTests(jsUnity) && runJasmineTests(jasmine);
internal.setUnitTestsResult(result);
}
};
exports.runCommandLineTests = runCommandLineTests;