From db5470ae6cf23e1ce88ba6c9882310cc6f357bd2 Mon Sep 17 00:00:00 2001 From: Lucas Dohmen Date: Mon, 16 Jun 2014 13:56:54 +0200 Subject: [PATCH] Execute Jasmine specs via arangod --javascript.unit-test --- js/common/modules/jasmine.js | 26 +++++++++++++++------ js/common/modules/jsunity.js | 45 ++++++++++++++++++++++++++++++++---- scripts/execute-spec.js | 34 --------------------------- 3 files changed, 59 insertions(+), 46 deletions(-) delete mode 100644 scripts/execute-spec.js diff --git a/js/common/modules/jasmine.js b/js/common/modules/jasmine.js index d5d54d412c..dd45544ffc 100755 --- a/js/common/modules/jasmine.js +++ b/js/common/modules/jasmine.js @@ -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); diff --git a/js/common/modules/jsunity.js b/js/common/modules/jsunity.js index 14cea39579..5753246f9e 100644 --- a/js/common/modules/jsunity.js +++ b/js/common/modules/jsunity.js @@ -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); } diff --git a/scripts/execute-spec.js b/scripts/execute-spec.js deleted file mode 100644 index 8c4e4f9118..0000000000 --- a/scripts/execute-spec.js +++ /dev/null @@ -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; -}