mirror of
https://github.com/coder/code-server.git
synced 2024-12-05 07:13:06 +08:00
dc2253e718
* Replace evaluations with proxies and messages * Return proxies synchronously Otherwise events can be lost. * Ensure events cannot be missed * Refactor remaining fills * Use more up-to-date version of util For callbackify. * Wait for dispose to come back before removing This prevents issues with the "done" event not always being the last event fired. For example a socket might close and then end, but only if the caller called end. * Remove old node-pty tests * Fix emitting events twice on duplex streams * Preserve environment when spawning processes * Throw a better error if the proxy doesn't exist * Remove rimraf dependency from ide * Update net.Server.listening * Use exit event instead of killed Doesn't look like killed is even a thing. * Add response timeout to server * Fix trash * Require node-pty & spdlog after they get unpackaged This fixes an error when running in the binary. * Fix errors in down emitter preventing reconnecting * Fix disposing proxies when nothing listens to "error" event * Refactor event tests to use jest.fn() * Reject proxy call when disconnected Otherwise it'll wait for the timeout which is a waste of time since we already know the connection is dead. * Use nbin for binary packaging * Remove additional module requires * Attempt to remove require for local bootstrap-fork * Externalize fsevents
123 lines
2.5 KiB
TypeScript
123 lines
2.5 KiB
TypeScript
import { Emitter } from "../src/events";
|
|
|
|
describe("Event", () => {
|
|
const emitter = new Emitter<number>();
|
|
|
|
it("should listen to global event", () => {
|
|
const fn = jest.fn();
|
|
const d = emitter.event(fn);
|
|
emitter.emit(10);
|
|
expect(fn).toHaveBeenCalledWith(10);
|
|
d.dispose();
|
|
});
|
|
|
|
it("should listen to id event", () => {
|
|
const fn = jest.fn();
|
|
const d = emitter.event(0, fn);
|
|
emitter.emit(0, 5);
|
|
expect(fn).toHaveBeenCalledWith(5);
|
|
d.dispose();
|
|
});
|
|
|
|
it("should listen to string id event", () => {
|
|
const fn = jest.fn();
|
|
const d = emitter.event("string", fn);
|
|
emitter.emit("string", 55);
|
|
expect(fn).toHaveBeenCalledWith(55);
|
|
d.dispose();
|
|
});
|
|
|
|
it("should not listen wrong id event", () => {
|
|
const fn = jest.fn();
|
|
const d = emitter.event(1, fn);
|
|
emitter.emit(0, 5);
|
|
emitter.emit(1, 6);
|
|
expect(fn).toHaveBeenCalledWith(6);
|
|
expect(fn).toHaveBeenCalledTimes(1);
|
|
d.dispose();
|
|
});
|
|
|
|
it("should listen to id event globally", () => {
|
|
const fn = jest.fn();
|
|
const d = emitter.event(fn);
|
|
emitter.emit(1, 11);
|
|
expect(fn).toHaveBeenCalledWith(11);
|
|
d.dispose();
|
|
});
|
|
|
|
it("should listen to global event", () => {
|
|
const fn = jest.fn();
|
|
const d = emitter.event(3, fn);
|
|
emitter.emit(14);
|
|
expect(fn).toHaveBeenCalledWith(14);
|
|
d.dispose();
|
|
});
|
|
|
|
it("should listen to id event multiple times", () => {
|
|
const fn = jest.fn();
|
|
const disposers = [
|
|
emitter.event(934, fn),
|
|
emitter.event(934, fn),
|
|
emitter.event(934, fn),
|
|
emitter.event(934, fn),
|
|
];
|
|
emitter.emit(934, 324);
|
|
expect(fn).toHaveBeenCalledTimes(4);
|
|
expect(fn).toHaveBeenCalledWith(324);
|
|
disposers.forEach((d) => d.dispose());
|
|
});
|
|
|
|
it("should dispose individually", () => {
|
|
const fn = jest.fn();
|
|
const d = emitter.event(fn);
|
|
|
|
const fn2 = jest.fn();
|
|
const d2 = emitter.event(1, fn2);
|
|
|
|
d.dispose();
|
|
|
|
emitter.emit(12);
|
|
emitter.emit(1, 12);
|
|
|
|
expect(fn).not.toBeCalled();
|
|
expect(fn2).toBeCalledTimes(2);
|
|
|
|
d2.dispose();
|
|
|
|
emitter.emit(12);
|
|
emitter.emit(1, 12);
|
|
|
|
expect(fn).not.toBeCalled();
|
|
expect(fn2).toBeCalledTimes(2);
|
|
});
|
|
|
|
it("should dispose by id", () => {
|
|
const fn = jest.fn();
|
|
emitter.event(fn);
|
|
|
|
const fn2 = jest.fn();
|
|
emitter.event(1, fn2);
|
|
|
|
emitter.dispose(1);
|
|
|
|
emitter.emit(12);
|
|
emitter.emit(1, 12);
|
|
|
|
expect(fn).toBeCalledTimes(2);
|
|
expect(fn2).not.toBeCalled();
|
|
});
|
|
|
|
it("should dispose all", () => {
|
|
const fn = jest.fn();
|
|
emitter.event(fn);
|
|
emitter.event(1, fn);
|
|
|
|
emitter.dispose();
|
|
|
|
emitter.emit(12);
|
|
emitter.emit(1, 12);
|
|
|
|
expect(fn).not.toBeCalled();
|
|
});
|
|
});
|