Files
NetMesh/electron/main/registerBridges.openApplication.test.cjs

36 lines
1.3 KiB
JavaScript
Raw Normal View History

"use strict";
const assert = require("node:assert/strict");
const { EventEmitter } = require("node:events");
const test = require("node:test");
const {
_waitForApplicationSpawnForTests: waitForApplicationSpawn,
} = require("./registerBridges.cjs");
test("application launch acknowledgement rejects an asynchronous spawn failure", async () => {
const child = new EventEmitter();
const waiting = waitForApplicationSpawn(child);
const error = Object.assign(new Error("spawn ENOENT"), { code: "ENOENT" });
process.nextTick(() => child.emit("error", error));
await assert.rejects(waiting, { code: "ENOENT" });
assert.equal(child.listenerCount("spawn"), 0);
});
test("application launch acknowledgement resolves only after spawn", async () => {
const child = new EventEmitter();
const waiting = waitForApplicationSpawn(child);
process.nextTick(() => child.emit("spawn"));
await waiting;
assert.equal(child.listenerCount("spawn"), 0);
});
test("macOS launcher acknowledgement rejects a nonzero open command exit", async () => {
const child = new EventEmitter();
const waiting = waitForApplicationSpawn(child, true);
process.nextTick(() => {
child.emit("spawn");
child.emit("close", 1);
});
await assert.rejects(waiting, /launcher exited with code 1/i);
});