arrange-act-assert
Version:
The lightweight "Act-Arrange-Assert" oriented testing framework
47 lines (46 loc) • 1.16 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.functionRunner = functionRunner;
async function functionRunner(type, cb, args, timeout) {
if (!cb) {
return {
run: false,
data: undefined
};
}
try {
const res = await withTimeout(cb(...args), type, timeout);
return {
run: true,
ok: true,
data: res
};
}
catch (e) {
return {
run: true,
ok: false,
error: e,
type: type
};
}
}
function withTimeout(value, type, timeout) {
const promise = Promise.resolve(value);
if (!(timeout != null && timeout > 0)) {
return promise;
}
return new Promise((resolve, reject) => {
const timer = setTimeout(() => {
reject(new Error(`${type} timed out after ${timeout}ms`));
}, timeout);
timer.unref();
promise.then(value => {
clearTimeout(timer);
resolve(value);
}, error => {
clearTimeout(timer);
reject(error);
});
});
}