test: lock in process, ripgrep, and installation helpers

This commit is contained in:
Dax Raad 2026-03-07 19:21:22 -05:00
parent 9dc8ac4734
commit e6d1aae33a
3 changed files with 97 additions and 0 deletions

View File

@ -36,4 +36,38 @@ describe("file.ripgrep", () => {
expect(hasVisible).toBe(true)
expect(hasHidden).toBe(false)
})
test("search returns match metadata", async () => {
await using tmp = await tmpdir({
init: async (dir) => {
await Bun.write(path.join(dir, "match.ts"), "const value = 'needle'\n")
await Bun.write(path.join(dir, "other.ts"), "const value = 'other'\n")
},
})
const hits = await Ripgrep.search({
cwd: tmp.path,
pattern: "needle",
})
expect(hits.length).toBe(1)
expect(hits[0]?.path.text).toBe("match.ts")
expect(hits[0]?.line_number).toBe(1)
expect(hits[0]?.lines.text).toContain("needle")
})
test("search returns empty when nothing matches", async () => {
await using tmp = await tmpdir({
init: async (dir) => {
await Bun.write(path.join(dir, "match.ts"), "const value = 'other'\n")
},
})
const hits = await Ripgrep.search({
cwd: tmp.path,
pattern: "needle",
})
expect(hits).toEqual([])
})
})

View File

@ -0,0 +1,47 @@
import { afterEach, describe, expect, test } from "bun:test"
import { Installation } from "../../src/installation"
const fetch0 = globalThis.fetch
afterEach(() => {
globalThis.fetch = fetch0
})
describe("installation", () => {
test("reads release version from GitHub releases", async () => {
globalThis.fetch = (async () =>
new Response(JSON.stringify({ tag_name: "v1.2.3" }), {
status: 200,
headers: { "content-type": "application/json" },
})) as unknown as typeof fetch
expect(await Installation.latest("unknown")).toBe("1.2.3")
})
test("reads scoop manifest versions", async () => {
globalThis.fetch = (async () =>
new Response(JSON.stringify({ version: "2.3.4" }), {
status: 200,
headers: { "content-type": "application/json" },
})) as unknown as typeof fetch
expect(await Installation.latest("scoop")).toBe("2.3.4")
})
test("reads chocolatey feed versions", async () => {
globalThis.fetch = (async () =>
new Response(
JSON.stringify({
d: {
results: [{ Version: "3.4.5" }],
},
}),
{
status: 200,
headers: { "content-type": "application/json" },
},
)) as unknown as typeof fetch
expect(await Installation.latest("choco")).toBe("3.4.5")
})
})

View File

@ -56,4 +56,20 @@ describe("util.process", () => {
expect(out.code).not.toBe(0)
expect(Date.now() - started).toBeLessThan(1000)
}, 3000)
test("uses cwd when spawning commands", async () => {
const out = await Process.run(node('process.stdout.write(process.cwd())'), {
cwd: "/tmp",
})
expect(out.stdout.toString()).toBe("/tmp")
})
test("merges environment overrides", async () => {
const out = await Process.run(node('process.stdout.write(process.env.OPENCODE_TEST ?? "")'), {
env: {
OPENCODE_TEST: "set",
},
})
expect(out.stdout.toString()).toBe("set")
})
})