1
0
Fork 0

Execute Jasmine specs via arangod --javascript.unit-test

This commit is contained in:
Lucas Dohmen 2014-06-16 13:56:54 +02:00
parent b0ce561546
commit db5470ae6c
3 changed files with 59 additions and 46 deletions

View File

@ -73,13 +73,25 @@ env.addReporter(jsApiReporter);
var arangoReporter = new Reporter({ format: 'progress' });
exports.status = function() {
var status;
if (arangoReporter.hasErrors()) {
status = 1;
} else {
status = 0;
}
return status;
return !arangoReporter.hasErrors();
};
exports.executeTestSuite = function (specs) {
var jasmine = require('jasmine'),
_ = require('underscore'),
describe = jasmine.describe,
it = jasmine.it,
expect = jasmine.expect,
fs = require('fs'),
file,
status;
_.each(specs, function (spec) {
eval(spec);
});
jasmine.execute();
return jasmine.status();
};
env.addReporter(arangoReporter);

View File

@ -28,6 +28,7 @@
var internal = require("internal");
var fs = require("fs");
var console = require("console");
var _ = require("underscore");
var TOTAL = 0;
var PASSED = 0;
@ -395,15 +396,14 @@ function RunCoverage (path, files) {
}
////////////////////////////////////////////////////////////////////////////////
/// @brief runs tests from command-line
/// @brief runs all jsunity tests
////////////////////////////////////////////////////////////////////////////////
function RunCommandLineTests () {
function RunJSUnityTests (tests) {
var result = true;
var unitTests = internal.unitTests();
for (var i = 0; i < unitTests.length; ++i) {
var file = unitTests[i];
for (var i = 0; i < tests.length; ++i) {
var file = tests[i];
print();
print("running tests from file '" + file + "'");
@ -421,6 +421,41 @@ function RunCommandLineTests () {
internal.wait(0); // force GC
}
return result;
}
////////////////////////////////////////////////////////////////////////////////
/// @brief runs all jsunity tests
////////////////////////////////////////////////////////////////////////////////
function RunJasmineTests (testFiles) {
if (testFiles.length > 0) {
var tests = _.map(testFiles, function (x) { return fs.read(x); }),
jasmine = require('jasmine');
print('\nRunning Jasmine Tests: ' + testFiles.join(', '));
return jasmine.executeTestSuite(tests);
} else {
return true;
}
}
////////////////////////////////////////////////////////////////////////////////
/// @brief runs tests from command-line
////////////////////////////////////////////////////////////////////////////////
function RunCommandLineTests () {
var result = true,
unitTests = internal.unitTests(),
isSpecRegEx = /.+spec.js/,
isSpec = function(unitTest) {
return isSpecRegEx.test(unitTest);
},
jasmine = _.filter(unitTests, isSpec),
jsUnity = _.reject(unitTests, isSpec);
result = RunJSUnityTests(jsUnity) && RunJasmineTests(jasmine);
internal.setUnitTestsResult(result);
}

View File

@ -1,34 +0,0 @@
/*jslint indent: 2, nomen: true, maxlen: 120, regexp: true, todo: true, evil: true */
/*global module, require, exports, print */
/** Usage
*
* ./bin/arangod --log.level warning --javascript.script scripts/execute-spec.js --javascript.script-parameter js/server/tests/shell-example-spec.js --javascript.script-parameter js/server/tests/shell-example-spec-2.js /tmp/tests
*
*/
function main(argv) {
var jasmine = require('jasmine'),
_ = require('underscore'),
describe = jasmine.describe,
it = jasmine.it,
expect = jasmine.expect,
fs = require('fs'),
file,
status;
if (argv.length >= 2) {
_.each(argv.slice(1), function (fileName) {
file = fs.read(fileName);
eval(file);
});
jasmine.execute();
status = jasmine.status();
} else {
print('Provide exactly one filename');
status = 1;
}
return status;
}