Skip to content

Commit 2889b3f

Browse files
committed
Add test for disposing active evaluations
1 parent 4a80bcb commit 2889b3f

4 files changed

Lines changed: 31 additions & 16 deletions

File tree

packages/protocol/src/browser/client.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,10 @@ export class Client {
4848
});
4949
}
5050

51+
public dispose(): void {
52+
this.connection.close();
53+
}
54+
5155
public get initData(): Promise<InitData> {
5256
return this.initDataPromise;
5357
}

packages/protocol/test/evaluate.test.ts

Lines changed: 18 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ describe("Evaluate", () => {
44
const client = createClient();
55

66
it("should transfer string", async () => {
7-
const value = await client.evaluate(function () {
7+
const value = await client.evaluate(() => {
88
return "hi";
99
});
1010

@@ -58,20 +58,27 @@ describe("Evaluate", () => {
5858

5959
it("should do active process", (done) => {
6060
const runner = client.run((ae) => {
61-
ae.on("1", () => {
62-
ae.emit("2");
63-
ae.on("3", () => {
64-
ae.emit("close");
65-
});
61+
ae.on("first", () => {
62+
ae.emit("first:response");
63+
ae.on("second", () => ae.emit("second:response"));
6664
});
6765

66+
const disposeCallbacks = <Array<() => void>>[];
67+
const dispose = (): void => {
68+
disposeCallbacks.forEach((cb) => cb());
69+
ae.emit("disposed");
70+
};
71+
6872
return {
69-
onDidDispose: (): void => undefined,
70-
dispose: (): void => undefined,
73+
onDidDispose: (cb: () => void): number => disposeCallbacks.push(cb),
74+
dispose,
7175
};
7276
});
73-
runner.emit("1");
74-
runner.on("2", () => runner.emit("3"));
75-
runner.on("close", () => done());
77+
78+
runner.emit("first");
79+
runner.on("first:response", () => runner.emit("second"));
80+
runner.on("second:response", () => client.dispose());
81+
82+
runner.on("disposed", () => done());
7683
});
7784
});

packages/protocol/test/helpers.ts

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,20 +5,21 @@ import { Server, ServerOptions } from "../src/node/server";
55
export const createClient = (serverOptions?: ServerOptions): Client => {
66
const s2c = new Emitter<Uint8Array | Buffer>();
77
const c2s = new Emitter<Uint8Array | Buffer>();
8+
const closeCallbacks = <Array<() => void>>[];
89

9-
// tslint:disable-next-line
10+
// tslint:disable-next-line no-unused-expression
1011
new Server({
11-
close: (): void => undefined,
12-
onClose: (): void => undefined,
12+
close: (): void => closeCallbacks.forEach((cb) => cb()),
13+
onClose: (cb: () => void): number => closeCallbacks.push(cb),
1314
onMessage: (cb): void => {
1415
c2s.event((d) => cb(d));
1516
},
1617
send: (data): NodeJS.Timer => setTimeout(() => s2c.emit(data), 0),
1718
}, serverOptions);
1819

1920
const client = new Client({
20-
close: (): void => undefined,
21-
onClose: (): void => undefined,
21+
close: (): void => closeCallbacks.forEach((cb) => cb()),
22+
onClose: (cb: () => void): number => closeCallbacks.push(cb),
2223
onMessage: (cb): void => {
2324
s2c.event((d) => cb(d));
2425
},

packages/protocol/test/server.test.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,18 @@ import { createClient } from "./helpers";
33
describe("Server", () => {
44
const dataDirectory = "/tmp/example";
55
const workingDirectory = "/working/dir";
6+
const builtInExtensionsDirectory = "/tmp/example";
67
const client = createClient({
78
dataDirectory,
89
workingDirectory,
10+
builtInExtensionsDirectory,
911
});
1012

1113
it("should get init msg", (done) => {
1214
client.initData.then((data) => {
1315
expect(data.dataDirectory).toEqual(dataDirectory);
1416
expect(data.workingDirectory).toEqual(workingDirectory);
17+
expect(data.builtInExtensionsDirectory).toEqual(builtInExtensionsDirectory);
1518
done();
1619
});
1720
});

0 commit comments

Comments
 (0)