summaryrefslogtreecommitdiff
path: root/node_modules/jake/test/integration/helpers.js
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/jake/test/integration/helpers.js')
-rw-r--r--node_modules/jake/test/integration/helpers.js80
1 files changed, 80 insertions, 0 deletions
diff --git a/node_modules/jake/test/integration/helpers.js b/node_modules/jake/test/integration/helpers.js
new file mode 100644
index 0000000..9caaa4e
--- /dev/null
+++ b/node_modules/jake/test/integration/helpers.js
@@ -0,0 +1,80 @@
+var exec = require('child_process').exec;
+
+var helpers = new (function () {
+ var _tests;
+ var _names = [];
+ var _name;
+ var _callback;
+ var _runner = function () {
+ if ((_name = _names.shift())) {
+ console.log('Running ' + _name);
+ _tests[_name]();
+ }
+ else {
+ _callback();
+ }
+ };
+
+ this.exec = function () {
+ var args = Array.prototype.slice.call(arguments);
+ var arg;
+ var cmd = args.shift();
+ var opts = {};
+ var callback;
+ // Optional opts/callback or callback/opts
+ while ((arg = args.shift())) {
+ if (typeof arg == 'function') {
+ callback = arg;
+ }
+ else {
+ opts = arg;
+ }
+ }
+
+ cmd += ' --trace';
+ var execOpts = opts.execOpts ? opts.execOpts : {};
+ exec(cmd, execOpts, function (err, stdout, stderr) {
+ var out = helpers.trim(stdout);
+ if (err) {
+ if (opts.breakOnError === false) {
+ return callback(err);
+ }
+ else {
+ throw err;
+ }
+ }
+ if (stderr) {
+ callback(stderr);
+ }
+ else {
+ callback(out);
+ }
+ });
+ };
+
+ this.trim = function (s) {
+ var str = s || '';
+ return str.replace(/^\s*|\s*$/g, '');
+ };
+
+ this.parse = function (s) {
+ var str = s || '';
+ str = helpers.trim(str);
+ str = str.replace(/'/g, '"');
+ return JSON.parse(str);
+ };
+
+ this.run = function (tests, callback) {
+ _tests = tests;
+ _names = Object.keys(tests);
+ _callback = callback;
+ _runner();
+ };
+
+ this.next = function () {
+ _runner();
+ };
+
+})();
+
+module.exports = helpers;