Skip to content

Commit a0f13e1

Browse files
committed
wip: working
1 parent 92dac32 commit a0f13e1

File tree

1 file changed

+45
-1
lines changed

1 file changed

+45
-1
lines changed

test/unit/node/app.test.ts

Lines changed: 45 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,20 @@
11
import { logger } from "@coder/logger"
2+
import { promises, rmdirSync } from "fs"
23
import * as http from "http"
4+
import * as path from "path"
35
import { createApp, ensureAddress, handleArgsSocketCatchError, handleServerError } from "../../../src/node/app"
46
import { setDefaults } from "../../../src/node/cli"
5-
import { getAvailablePort } from "../../utils/helpers"
7+
import { getAvailablePort, tmpdir } from "../../utils/helpers"
68

79
describe("createApp", () => {
810
let spy: jest.SpyInstance
11+
let unlinkSpy: jest.SpyInstance
912

1013
beforeEach(() => {
14+
// https://github.com/aelbore/esbuild-jest/issues/26#issuecomment-893763840
15+
// explain why we do it this way
1116
spy = jest.spyOn(logger, "error")
17+
unlinkSpy = jest.spyOn(promises, "unlink")
1218
})
1319

1420
afterEach(() => {
@@ -93,6 +99,44 @@ describe("createApp", () => {
9399

94100
expect(() => masterBall()).rejects.toThrow(`listen EACCES: permission denied 127.0.0.1:${port}`)
95101
})
102+
103+
it("should unlink a socket before listening on the socket", async () => {
104+
const tmpDir = await tmpdir("unlink-socket")
105+
const tmpFile = path.join(tmpDir, "unlink-socket-file")
106+
await promises.writeFile(tmpFile, "")
107+
const socketPath = tmpFile
108+
const defaultArgs = await setDefaults({
109+
_: [],
110+
socket: socketPath,
111+
})
112+
113+
const app = await createApp(defaultArgs)
114+
const server = app[2]
115+
116+
expect(unlinkSpy).toHaveBeenCalledTimes(1)
117+
// Ensure directory was removed
118+
rmdirSync(socketPath, { recursive: true })
119+
server.close()
120+
})
121+
it("should catch errors thrown when unlinking a socket", async () => {
122+
const tmpDir = await tmpdir("unlink-socket")
123+
const tmpFile = path.join(tmpDir, "unlink-socket-file")
124+
// await promises.writeFile(tmpFile, "")
125+
const socketPath = tmpFile
126+
const defaultArgs = await setDefaults({
127+
_: [],
128+
socket: socketPath,
129+
})
130+
131+
const app = await createApp(defaultArgs)
132+
const server = app[2]
133+
134+
expect(spy).toHaveBeenCalledTimes(1)
135+
expect(spy).toHaveBeenCalledWith(`ENOENT: no such file or directory, unlink '${socketPath}'`)
136+
// Ensure directory was removed
137+
rmdirSync(socketPath, { recursive: true })
138+
server.close()
139+
})
96140
})
97141

98142
describe("ensureAddress", () => {

0 commit comments

Comments
 (0)