| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- var exec = require('child_process').exec;
- var helpers = new (function () {
- var _tests
- , _names = []
- , _name
- , _callback
- , _runner = function () {
- if (!!(_name = _names.shift())) {
- console.log('Running ' + _name);
- _tests[_name]();
- }
- else {
- _callback();
- }
- };
- this.exec = function () {
- var args = Array.prototype.slice.call(arguments)
- , arg
- , cmd = args.shift()
- , opts = {}
- , callback;
- // Optional opts/callback or callback/opts
- while ((arg = args.shift())) {
- if (typeof arg == 'function') {
- callback = arg;
- }
- else {
- opts = arg;
- }
- }
- cmd += ' --trace';
- exec(cmd, 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;
|