Some checks failed
build / lint (22) (push) Failing after 17s
build / test (22) (push) Failing after 8s
build / lint (23) (push) Failing after 2s
build / build (22) (push) Has been skipped
build / build (23) (push) Has been skipped
build / test (23) (push) Failing after 4s
docsearch / docsearch (push) Failing after 1s
28 lines
644 B
TypeScript
28 lines
644 B
TypeScript
import test from "ava";
|
|
import { Server } from "@hocuspocus/server";
|
|
|
|
test("destroy only runs once when called multiple times", async (t) => {
|
|
let destroyed = 0;
|
|
|
|
const server = new Server({
|
|
port: 0,
|
|
quiet: true,
|
|
stopOnSignals: false,
|
|
async onDestroy() {
|
|
destroyed += 1;
|
|
},
|
|
});
|
|
|
|
t.teardown(() => server.httpServer.close());
|
|
|
|
await server.listen();
|
|
|
|
// Concurrent and subsequent calls (e.g. from repeated SIGINT signals)
|
|
// must not re-run the shutdown, which would close already-closed
|
|
// resources in extensions.
|
|
await Promise.all([server.destroy(), server.destroy()]);
|
|
await server.destroy();
|
|
|
|
t.is(destroyed, 1);
|
|
});
|