faastjs
Version:
Serverless batch computing made simple.
78 lines • 11.8 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const tslib_1 = require("tslib");
const ava_1 = tslib_1.__importDefault(require("ava"));
const index_1 = require("../index");
const error_1 = require("../src/error");
(0, ava_1.default)("FaastError basic error", t => {
const error = new index_1.FaastError("bad error");
const { name, stack, message, cause, ...rest } = error;
const _exhaustiveCheck = {};
t.is(name, error_1.FaastErrorNames.EGENERIC);
t.regex(stack, /unit-error.test/);
t.is(index_1.FaastError.fullStack(error), stack ?? "");
t.deepEqual(index_1.FaastError.info(error), {});
t.is(message, "bad error");
t.is(error.cause(), undefined);
});
function foo() {
throw new Error("underlying error");
}
(0, ava_1.default)("FaastError nested error", t => {
let nested;
try {
foo();
}
catch (err) {
nested = err;
}
const error = new index_1.FaastError(nested, "bad error");
const { name, stack, message, cause, ...rest } = error;
const _exhaustiveCheck = {};
t.is(name, error_1.FaastErrorNames.EGENERIC);
t.regex(stack, /unit-error.test/);
t.regex(index_1.FaastError.fullStack(error), /foo/);
t.deepEqual(index_1.FaastError.info(error), {});
t.is(message, "bad error: underlying error");
t.is(error.cause(), nested);
});
(0, ava_1.default)("FaastError synthesized error", t => {
const errObj = {
message: "remote message",
stack: "remote stack trace",
name: "RemoteErrorName",
custom: "remote custom property"
};
const logUrlString = "https://cloud.com/logs";
const error = (0, error_1.synthesizeFaastError)({
errObj,
logUrl: logUrlString,
functionName: "functionName",
args: ["arg"]
});
const { name, stack, message, cause, ...rest } = error;
const _exhaustiveCheck = {};
t.is(name, errObj.name);
t.true(stack.indexOf(errObj.stack) >= 0);
t.true(index_1.FaastError.fullStack(error).indexOf(errObj.stack) >= 0);
const info = index_1.FaastError.info(error);
for (const key of Object.keys(errObj)) {
t.is(info[key], errObj[key]);
}
t.true(index_1.FaastError.info(error).logUrl.trim() === logUrlString);
t.true(message.indexOf(errObj.message) >= 0);
const c = error.cause();
t.is(c.message, logUrlString);
t.is(info.functionName, "functionName");
t.deepEqual(info.args, ["arg"]);
t.true(c.stack.indexOf("faast.js cloud function invocation") >= 0);
t.is(index_1.FaastError.fullStack(c), c.stack ?? "");
t.true(index_1.FaastError.fullStack(c).indexOf(logUrlString) >= 0);
});
(0, ava_1.default)("FaastError using option constructor", t => {
const error = new index_1.FaastError({ name: error_1.FaastErrorNames.ETIMEOUT }, "message");
const { name, stack, message, cause, ...rest } = error;
const _exhaustiveCheck = {};
t.is(name, error_1.FaastErrorNames.ETIMEOUT);
});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5pdC1lcnJvci50ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vdGVzdC91bml0LWVycm9yLnRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsc0RBQXVCO0FBQ3ZCLG9DQUFzQztBQUN0Qyx3Q0FBcUU7QUFFckUsSUFBQSxhQUFJLEVBQUMsd0JBQXdCLEVBQUUsQ0FBQyxDQUFDLEVBQUU7SUFDL0IsTUFBTSxLQUFLLEdBQUcsSUFBSSxrQkFBVSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQzFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsR0FBRyxJQUFJLEVBQUUsR0FBRyxLQUFLLENBQUM7SUFDdkQsTUFBTSxnQkFBZ0IsR0FBMEIsRUFBRSxDQUFDO0lBQ25ELENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLHVCQUFlLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDckMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFNLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztJQUNuQyxDQUFDLENBQUMsRUFBRSxDQUFDLGtCQUFVLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUFFLEtBQUssSUFBSSxFQUFFLENBQUMsQ0FBQztJQUMvQyxDQUFDLENBQUMsU0FBUyxDQUFDLGtCQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3hDLENBQUMsQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQzNCLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0FBQ25DLENBQUMsQ0FBQyxDQUFDO0FBRUgsU0FBUyxHQUFHO0lBQ1IsTUFBTSxJQUFJLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0FBQ3hDLENBQUM7QUFFRCxJQUFBLGFBQUksRUFBQyx5QkFBeUIsRUFB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QUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHRlc3QgZnJvbSBcImF2YVwiO1xuaW1wb3J0IHsgRmFhc3RFcnJvciB9IGZyb20gXCIuLi9pbmRleFwiO1xuaW1wb3J0IHsgc3ludGhlc2l6ZUZhYXN0RXJyb3IsIEZhYXN0RXJyb3JOYW1lcyB9IGZyb20gXCIuLi9zcmMvZXJyb3JcIjtcblxudGVzdChcIkZhYXN0RXJyb3IgYmFzaWMgZXJyb3JcIiwgdCA9PiB7XG4gICAgY29uc3QgZXJyb3IgPSBuZXcgRmFhc3RFcnJvcihcImJhZCBlcnJvclwiKTtcbiAgICBjb25zdCB7IG5hbWUsIHN0YWNrLCBtZXNzYWdlLCBjYXVzZSwgLi4ucmVzdCB9ID0gZXJyb3I7XG4gICAgY29uc3QgX2V4aGF1c3RpdmVDaGVjazogUmVxdWlyZWQ8dHlwZW9mIHJlc3Q+ID0ge307XG4gICAgdC5pcyhuYW1lLCBGYWFzdEVycm9yTmFtZXMuRUdFTkVSSUMpO1xuICAgIHQucmVnZXgoc3RhY2shLCAvdW5pdC1lcnJvci50ZXN0Lyk7XG4gICAgdC5pcyhGYWFzdEVycm9yLmZ1bGxTdGFjayhlcnJvciksIHN0YWNrID8/IFwiXCIpO1xuICAgIHQuZGVlcEVxdWFsKEZhYXN0RXJyb3IuaW5mbyhlcnJvciksIHt9KTtcbiAgICB0LmlzKG1lc3NhZ2UsIFwiYmFkIGVycm9yXCIpO1xuICAgIHQuaXMoZXJyb3IuY2F1c2UoKSwgdW5kZWZpbmVkKTtcbn0pO1xuXG5mdW5jdGlvbiBmb28oKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwidW5kZXJseWluZyBlcnJvclwiKTtcbn1cblxudGVzdChcIkZhYXN0RXJyb3IgbmVzdGVkIGVycm9yXCIsIHQgPT4ge1xuICAgIGxldCBuZXN0ZWQ7XG4gICAgdHJ5IHtcbiAgICAgICAgZm9vKCk7XG4gICAgfSBjYXRjaCAoZXJyOiBhbnkpIHtcbiAgICAgICAgbmVzdGVkID0gZXJyO1xuICAgIH1cbiAgICBjb25zdCBlcnJvciA9IG5ldyBGYWFzdEVycm9yKG5lc3RlZCwgXCJiYWQgZXJyb3JcIik7XG4gICAgY29uc3QgeyBuYW1lLCBzdGFjaywgbWVzc2FnZSwgY2F1c2UsIC4uLnJlc3QgfSA9IGVycm9yO1xuICAgIGNvbnN0IF9leGhhdXN0aXZlQ2hlY2s6IFJlcXVpcmVkPHR5cGVvZiByZXN0PiA9IHt9O1xuICAgIHQuaXMobmFtZSwgRmFhc3RFcnJvck5hbWVzLkVHRU5FUklDKTtcbiAgICB0LnJlZ2V4KHN0YWNrISwgL3VuaXQtZXJyb3IudGVzdC8pO1xuICAgIHQucmVnZXgoRmFhc3RFcnJvci5mdWxsU3RhY2soZXJyb3IpLCAvZm9vLyk7XG4gICAgdC5kZWVwRXF1YWwoRmFhc3RFcnJvci5pbmZvKGVycm9yKSwge30pO1xuICAgIHQuaXMobWVzc2FnZSwgXCJiYWQgZXJyb3I6IHVuZGVybHlpbmcgZXJyb3JcIik7XG4gICAgdC5pcyhlcnJvci5jYXVzZSgpLCBuZXN0ZWQpO1xufSk7XG5cbnRlc3QoXCJGYWFzdEVycm9yIHN5bnRoZXNpemVkIGVycm9yXCIsIHQgPT4ge1xuICAgIGNvbnN0IGVyck9iaiA9IHtcbiAgICAgICAgbWVzc2FnZTogXCJyZW1vdGUgbWVzc2FnZVwiLFxuICAgICAgICBzdGFjazogXCJyZW1vdGUgc3RhY2sgdHJhY2VcIixcbiAgICAgICAgbmFtZTogXCJSZW1vdGVFcnJvck5hbWVcIixcbiAgICAgICAgY3VzdG9tOiBcInJlbW90ZSBjdXN0b20gcHJvcGVydHlcIlxuICAgIH07XG4gICAgY29uc3QgbG9nVXJsU3RyaW5nID0gXCJodHRwczovL2Nsb3VkLmNvbS9sb2dzXCI7XG4gICAgY29uc3QgZXJyb3IgPSBzeW50aGVzaXplRmFhc3RFcnJvcih7XG4gICAgICAgIGVyck9iaixcbiAgICAgICAgbG9nVXJsOiBsb2dVcmxTdHJpbmcsXG4gICAgICAgIGZ1bmN0aW9uTmFtZTogXCJmdW5jdGlvbk5hbWVcIixcbiAgICAgICAgYXJnczogW1wiYXJnXCJdXG4gICAgfSk7XG4gICAgY29uc3QgeyBuYW1lLCBzdGFjaywgbWVzc2FnZSwgY2F1c2UsIC4uLnJlc3QgfSA9IGVycm9yO1xuICAgIGNvbnN0IF9leGhhdXN0aXZlQ2hlY2s6IFJlcXVpcmVkPHR5cGVvZiByZXN0PiA9IHt9O1xuXG4gICAgdC5pcyhuYW1lLCBlcnJPYmoubmFtZSk7XG4gICAgdC50cnVlKHN0YWNrIS5pbmRleE9mKGVyck9iai5zdGFjaykgPj0gMCk7XG4gICAgdC50cnVlKEZhYXN0RXJyb3IuZnVsbFN0YWNrKGVycm9yKS5pbmRleE9mKGVyck9iai5zdGFjaykgPj0gMCk7XG4gICAgY29uc3QgaW5mbyA9IEZhYXN0RXJyb3IuaW5mbyhlcnJvcik7XG4gICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMoZXJyT2JqKSkge1xuICAgICAgICB0LmlzKGluZm9ba2V5XSwgKGVyck9iaiBhcyBhbnkpW2tleV0pO1xuICAgIH1cbiAgICB0LnRydWUoRmFhc3RFcnJvci5pbmZvKGVycm9yKS5sb2dVcmwudHJpbSgpID09PSBsb2dVcmxTdHJpbmcpO1xuICAgIHQudHJ1ZShtZXNzYWdlLmluZGV4T2YoZXJyT2JqLm1lc3NhZ2UpID49IDApO1xuICAgIGNvbnN0IGMgPSBlcnJvci5jYXVzZSgpITtcbiAgICB0LmlzKGMubWVzc2FnZSwgbG9nVXJsU3RyaW5nKTtcbiAgICB0LmlzKGluZm8uZnVuY3Rpb25OYW1lLCBcImZ1bmN0aW9uTmFtZVwiKTtcbiAgICB0LmRlZXBFcXVhbChpbmZvLmFyZ3MsIFtcImFyZ1wiXSk7XG4gICAgdC50cnVlKGMuc3RhY2shLmluZGV4T2YoXCJmYWFzdC5qcyBjbG91ZCBmdW5jdGlvbiBpbnZvY2F0aW9uXCIpID49IDApO1xuICAgIHQuaXMoRmFhc3RFcnJvci5mdWxsU3RhY2soYyksIGMuc3RhY2sgPz8gXCJcIik7XG4gICAgdC50cnVlKEZhYXN0RXJyb3IuZnVsbFN0YWNrKGMpLmluZGV4T2YobG9nVXJsU3RyaW5nKSA+PSAwKTtcbn0pO1xuXG50ZXN0KFwiRmFhc3RFcnJvciB1c2luZyBvcHRpb24gY29uc3RydWN0b3JcIiwgdCA9PiB7XG4gICAgY29uc3QgZXJyb3IgPSBuZXcgRmFhc3RFcnJvcih7IG5hbWU6IEZhYXN0RXJyb3JOYW1lcy5FVElNRU9VVCB9LCBcIm1lc3NhZ2VcIik7XG4gICAgY29uc3QgeyBuYW1lLCBzdGFjaywgbWVzc2FnZSwgY2F1c2UsIC4uLnJlc3QgfSA9IGVycm9yO1xuICAgIGNvbnN0IF9leGhhdXN0aXZlQ2hlY2s6IFJlcXVpcmVkPHR5cGVvZiByZXN0PiA9IHt9O1xuICAgIHQuaXMobmFtZSwgRmFhc3RFcnJvck5hbWVzLkVUSU1FT1VUKTtcbn0pO1xuIl19