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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QWUsQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUN6QyxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0ZXN0IGZyb20gXCJhdmFcIjtcbmltcG9ydCB7IEZhYXN0RXJyb3IgfSBmcm9tIFwiLi4vaW5kZXhcIjtcbmltcG9ydCB7IHN5bnRoZXNpemVGYWFzdEVycm9yLCBGYWFzdEVycm9yTmFtZXMgfSBmcm9tIFwiLi4vc3JjL2Vycm9yXCI7XG5cbnRlc3QoXCJGYWFzdEVycm9yIGJhc2ljIGVycm9yXCIsIHQgPT4ge1xuICAgIGNvbnN0IGVycm9yID0gbmV3IEZhYXN0RXJyb3IoXCJiYWQgZXJyb3JcIik7XG4gICAgY29uc3QgeyBuYW1lLCBzdGFjaywgbWVzc2FnZSwgY2F1c2UsIC4uLnJlc3QgfSA9IGVycm9yO1xuICAgIGNvbnN0IF9leGhhdXN0aXZlQ2hlY2s6IFJlcXVpcmVkPHR5cGVvZiByZXN0PiA9IHt9O1xuICAgIHQuaXMobmFtZSwgRmFhc3RFcnJvck5hbWVzLkVHRU5FUklDKTtcbiAgICB0LnJlZ2V4KHN0YWNrISwgL3VuaXQtZXJyb3IudGVzdC8pO1xuICAgIHQuaXMoRmFhc3RFcnJvci5mdWxsU3RhY2soZXJyb3IpLCBzdGFjayA/PyBcIlwiKTtcbiAgICB0LmRlZXBFcXVhbChGYWFzdEVycm9yLmluZm8oZXJyb3IpLCB7fSk7XG4gICAgdC5pcyhtZXNzYWdlLCBcImJhZCBlcnJvclwiKTtcbiAgICB0LmlzKGVycm9yLmNhdXNlKCksIHVuZGVmaW5lZCk7XG59KTtcblxuZnVuY3Rpb24gZm9vKCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcInVuZGVybHlpbmcgZXJyb3JcIik7XG59XG5cbnRlc3QoXCJGYWFzdEVycm9yIG5lc3RlZCBlcnJvclwiLCB0ID0+IHtcbiAgICBsZXQgbmVzdGVkO1xuICAgIHRyeSB7XG4gICAgICAgIGZvbygpO1xuICAgIH0gY2F0Y2ggKGVycjogYW55KSB7XG4gICAgICAgIG5lc3RlZCA9IGVycjtcbiAgICB9XG4gICAgY29uc3QgZXJyb3IgPSBuZXcgRmFhc3RFcnJvcihuZXN0ZWQsIFwiYmFkIGVycm9yXCIpO1xuICAgIGNvbnN0IHsgbmFtZSwgc3RhY2ssIG1lc3NhZ2UsIGNhdXNlLCAuLi5yZXN0IH0gPSBlcnJvcjtcbiAgICBjb25zdCBfZXhoYXVzdGl2ZUNoZWNrOiBSZXF1aXJlZDx0eXBlb2YgcmVzdD4gPSB7fTtcbiAgICB0LmlzKG5hbWUsIEZhYXN0RXJyb3JOYW1lcy5FR0VORVJJQyk7XG4gICAgdC5yZWdleChzdGFjayEsIC91bml0LWVycm9yLnRlc3QvKTtcbiAgICB0LnJlZ2V4KEZhYXN0RXJyb3IuZnVsbFN0YWNrKGVycm9yKSwgL2Zvby8pO1xuICAgIHQuZGVlcEVxdWFsKEZhYXN0RXJyb3IuaW5mbyhlcnJvciksIHt9KTtcbiAgICB0LmlzKG1lc3NhZ2UsIFwiYmFkIGVycm9yOiB1bmRlcmx5aW5nIGVycm9yXCIpO1xuICAgIHQuaXMoZXJyb3IuY2F1c2UoKSwgbmVzdGVkKTtcbn0pO1xuXG50ZXN0KFwiRmFhc3RFcnJvciBzeW50aGVzaXplZCBlcnJvclwiLCB0ID0+IHtcbiAgICBjb25zdCBlcnJPYmogPSB7XG4gICAgICAgIG1lc3NhZ2U6IFwicmVtb3RlIG1lc3NhZ2VcIixcbiAgICAgICAgc3RhY2s6IFwicmVtb3RlIHN0YWNrIHRyYWNlXCIsXG4gICAgICAgIG5hbWU6IFwiUmVtb3RlRXJyb3JOYW1lXCIsXG4gICAgICAgIGN1c3RvbTogXCJyZW1vdGUgY3VzdG9tIHByb3BlcnR5XCJcbiAgICB9O1xuICAgIGNvbnN0IGxvZ1VybFN0cmluZyA9IFwiaHR0cHM6Ly9jbG91ZC5jb20vbG9nc1wiO1xuICAgIGNvbnN0IGVycm9yID0gc3ludGhlc2l6ZUZhYXN0RXJyb3Ioe1xuICAgICAgICBlcnJPYmosXG4gICAgICAgIGxvZ1VybDogbG9nVXJsU3RyaW5nLFxuICAgICAgICBmdW5jdGlvbk5hbWU6IFwiZnVuY3Rpb25OYW1lXCIsXG4gICAgICAgIGFyZ3M6IFtcImFyZ1wiXVxuICAgIH0pO1xuICAgIGNvbnN0IHsgbmFtZSwgc3RhY2ssIG1lc3NhZ2UsIGNhdXNlLCAuLi5yZXN0IH0gPSBlcnJvcjtcbiAgICBjb25zdCBfZXhoYXVzdGl2ZUNoZWNrOiBSZXF1aXJlZDx0eXBlb2YgcmVzdD4gPSB7fTtcblxuICAgIHQuaXMobmFtZSwgZXJyT2JqLm5hbWUpO1xuICAgIHQudHJ1ZShzdGFjayEuaW5kZXhPZihlcnJPYmouc3RhY2spID49IDApO1xuICAgIHQudHJ1ZShGYWFzdEVycm9yLmZ1bGxTdGFjayhlcnJvcikuaW5kZXhPZihlcnJPYmouc3RhY2spID49IDApO1xuICAgIGNvbnN0IGluZm8gPSBGYWFzdEVycm9yLmluZm8oZXJyb3IpO1xuICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKGVyck9iaikpIHtcbiAgICAgICAgdC5pcyhpbmZvW2tleV0sIChlcnJPYmogYXMgYW55KVtrZXldKTtcbiAgICB9XG4gICAgdC50cnVlKEZhYXN0RXJyb3IuaW5mbyhlcnJvcikubG9nVXJsLnRyaW0oKSA9PT0gbG9nVXJsU3RyaW5nKTtcbiAgICB0LnRydWUobWVzc2FnZS5pbmRleE9mKGVyck9iai5tZXNzYWdlKSA+PSAwKTtcbiAgICBjb25zdCBjID0gZXJyb3IuY2F1c2UoKSE7XG4gICAgdC5pcyhjLm1lc3NhZ2UsIGxvZ1VybFN0cmluZyk7XG4gICAgdC5pcyhpbmZvLmZ1bmN0aW9uTmFtZSwgXCJmdW5jdGlvbk5hbWVcIik7XG4gICAgdC5kZWVwRXF1YWwoaW5mby5hcmdzLCBbXCJhcmdcIl0pO1xuICAgIHQudHJ1ZShjLnN0YWNrIS5pbmRleE9mKFwiZmFhc3QuanMgY2xvdWQgZnVuY3Rpb24gaW52b2NhdGlvblwiKSA+PSAwKTtcbiAgICB0LmlzKEZhYXN0RXJyb3IuZnVsbFN0YWNrKGMpLCBjLnN0YWNrID8/IFwiXCIpO1xuICAgIHQudHJ1ZShGYWFzdEVycm9yLmZ1bGxTdGFjayhjKS5pbmRleE9mKGxvZ1VybFN0cmluZykgPj0gMCk7XG59KTtcblxudGVzdChcIkZhYXN0RXJyb3IgdXNpbmcgb3B0aW9uIGNvbnN0cnVjdG9yXCIsIHQgPT4ge1xuICAgIGNvbnN0IGVycm9yID0gbmV3IEZhYXN0RXJyb3IoeyBuYW1lOiBGYWFzdEVycm9yTmFtZXMuRVRJTUVPVVQgfSwgXCJtZXNzYWdlXCIpO1xuICAgIGNvbnN0IHsgbmFtZSwgc3RhY2ssIG1lc3NhZ2UsIGNhdXNlLCAuLi5yZXN0IH0gPSBlcnJvcjtcbiAgICBjb25zdCBfZXhoYXVzdGl2ZUNoZWNrOiBSZXF1aXJlZDx0eXBlb2YgcmVzdD4gPSB7fTtcbiAgICB0LmlzKG5hbWUsIEZhYXN0RXJyb3JOYW1lcy5FVElNRU9VVCk7XG59KTtcbiJdfQ==