Add test for promises

This commit is contained in:
Kyle Carberry 2019-01-11 13:46:00 -06:00
parent cff746db32
commit 8ed940ac09
No known key found for this signature in database
GPG Key ID: A0409BDB6B0B3EDB
2 changed files with 12 additions and 6 deletions

View File

@ -51,14 +51,10 @@ export const evaluate = async (connection: SendableConnection, message: NewEvalM
connection.send(serverMsg.serializeBinary()); connection.send(serverMsg.serializeBinary());
}; };
try { try {
const value = vm.runInNewContext(`(${message.getFunction()})(${argStr.join(",")})`, { require }, { const value = vm.runInNewContext(`(${message.getFunction()})(${argStr.join(",")})`, { require, setTimeout }, {
timeout: message.getTimeout() || 30000, timeout: message.getTimeout() || 30000,
}); });
let responder: any = value; sendResp(await value);
if (value instanceof Promise) {
responder = await value;
}
sendResp(responder);
} catch (ex) { } catch (ex) {
sendErr(EvalFailedMessage.Reason.EXCEPTION, ex.toString()); sendErr(EvalFailedMessage.Reason.EXCEPTION, ex.toString());
} }

View File

@ -36,4 +36,14 @@ describe("Evaluate", () => {
expect(value[0]).toEqual("readFileSync"); expect(value[0]).toEqual("readFileSync");
}, 100); }, 100);
it("should resolve with promise", async () => {
const value = await client.evaluate(async () => {
await new Promise((r) => setTimeout(r, 100));
return "donkey";
});
expect(value).toEqual("donkey");
}, 250);
}); });