Tiny, but fully loaded test-runner.

29 lines
481 B

const { isPromise } = require('../../util');
const caller = (test, state) => {
let value, error;
try {
value = test(state);
} catch (e) {
error = e;
}
const promise = isPromise(value);
if (promise) {
return value
.then(res => ({ resolve: res, promise: true }))
.catch(rej => ({ rejection: rej, promise: true }));
} else {
return Promise.resolve({
...(!error && {value}),
...(error && {error}),
promise: false,
});
}
};
module.exports = caller;