UNPKG

arrange-act-assert

Version:

The lightweight "Act-Arrange-Assert" oriented testing framework

47 lines (46 loc) 1.16 kB
"use strict"; 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); }); }); }