restify-new-nodejs-compatible
Version:
REST framework
97 lines (79 loc) • 2.44 kB
JavaScript
// Copyright 2012 Mark Cavage. All rights reserved.
//
// Just a simple wrapper over nodeunit's exports syntax. Also exposes
// a common logger for all tests.
//
;
/* eslint-disable func-names */
var domain = require('domain');
var pino = require('pino');
var once = require('once');
///--- Exports
module.exports = {
after: function after(teardown) {
module.parent.exports.tearDown = function _teardown(callback) {
var d = domain.create();
var self = this;
d.once('error', function(err) {
console.error('after: uncaught error\n', err.stack);
process.exit(1);
});
d.run(function() {
teardown.call(self, once(callback));
});
};
},
before: function before(setup) {
module.parent.exports.setUp = function _setup(callback) {
var d = domain.create();
var self = this;
d.once('error', function(err) {
console.error('before: uncaught error\n' + err.stack);
process.exit(1);
});
d.run(function() {
setup.call(self, once(callback));
});
};
},
test: function test(name, tester) {
module.parent.exports[name] = function _(t) {
var d = domain.create();
var self = this;
d.once('error', function(err) {
t.ifError(err);
t.end();
});
d.add(t);
d.run(function() {
t.end = once(function() {
t.done();
});
t.notOk = function notOk(ok, message) {
return t.ok(!ok, message);
};
tester.call(self, t);
});
};
},
getLog: function(name, streams, level) {
return pino(
{
level: process.env.LOG_LEVEL || level || 'fatal',
name: name || process.argv[1],
serializers: pino.stdSerializers
},
streams || process.stdout
);
},
get dtrace() {
return true;
},
sleep: function sleep(timeInMs) {
return new Promise(function sleepPromise(resolve) {
setTimeout(function timeout() {
resolve();
}, timeInMs);
});
}
};