websoket/node_modules/vows/test/isolate-test.js
developertrinidad08 7e6cf29479 first commit
2023-01-16 18:11:14 -03:00

141 lines
3.6 KiB
JavaScript

var vows = require('../lib/vows'),
assert = require('assert'),
path = require('path'),
exec = require('child_process').exec;
function generateTopic(args, file) {
return function () {
var cmd = './bin/vows' + ' -i ' + (args || '') +
' ./test/fixtures/isolate/' + file,
options = {cwd: path.resolve(__dirname + '/../')},
callback = this.callback;
exec(cmd, options, function (err, stdout, stderr) {
callback(null, {
err: err,
stdout: stdout,
stderr: stderr
});
});
}
};
function assertExecOk(r) {
assert.isNull(r.err);
}
function assertExecNotOk(r) {
assert.isNotNull(r.err);
}
function parseResults(stdout) {
return stdout.split(/\n/g).map(function (s) {
if (!s) return;
return JSON.parse(s);
}).filter(function (s) {return s});
}
function assertResultTypePresent(results, type) {
assert.ok(results.some(function (result) {
return result[0] == type;
}));
}
function assertResultsFinish(results, expected) {
var finish = results[results.length - 1];
assert.equal(finish[0], 'finish');
finish = finish[1];
Object.keys(expected).forEach(function (key) {
assert.equal(finish[key], expected[key]);
});
}
vows.describe('vows/isolate').addBatch({
'Running vows with -i flag for test/fixtures/isolate/': {
'passing.js': {
'with default reporter': {
topic: generateTopic(null, 'passing.js'),
'should be ok': assertExecOk
},
'with json reporter': {
topic: generateTopic('--json', 'passing.js'),
'should be ok': assertExecOk,
'should have correct output': function (r) {
var results = parseResults(r.stdout)
assertResultTypePresent(results, 'subject');
assertResultTypePresent(results, 'end');
assertResultsFinish(results, {
total: 4,
honored: 4
});
}
}
},
'failing.js': {
'with json reporter': {
topic: generateTopic('--json', 'failing.js'),
'should be not ok': assertExecNotOk,
'should have correct output though': function (r) {
var results = parseResults(r.stdout);
assertResultsFinish(results, {
total: 4,
broken: 4
});
}
}
},
'stderr.js': {
'with json reporter': {
topic: generateTopic('--json', 'stderr.js'),
'should be ok': assertExecOk,
'should have stderr': function (r) {
assert.equal(r.stderr,
['oh no!', 'oh no!', 'oh no!', 'oh no!', ''].join('\n'));
},
'should have correct output': function (r) {
var results= parseResults(r.stdout);
assertResultsFinish(results, {
total: 4,
honored: 4
});
}
}
},
'log.js': {
'with json reporter': {
topic: generateTopic('--json', 'log.js'),
'should be ok': assertExecOk,
'should have correct output': function (r) {
var results= parseResults(r.stdout);
assertResultsFinish(results, {
total: 4,
honored: 4
});
}
}
},
'all tests (*)': {
'with json reporter': {
topic: generateTopic('--json', '*'),
'should be not ok': assertExecNotOk,
'should have correct output': function (r) {
var results= parseResults(r.stdout);
assertResultsFinish(results, {
total: 16,
broken: 4,
honored: 12
});
}
}
}
}
}).export(module);