mirror of
https://gitea.toothfairyai.com/ToothFairyAI/tf_code.git
synced 2026-03-30 05:43:55 +00:00
74 lines
2.4 KiB
TypeScript
74 lines
2.4 KiB
TypeScript
import { describe, expect, test } from "bun:test"
|
|
import fs from "fs/promises"
|
|
import path from "path"
|
|
import { tmpdir } from "../fixture/fixture"
|
|
import { Ripgrep } from "../../src/file/ripgrep"
|
|
|
|
describe("file.ripgrep", () => {
|
|
test("defaults to include hidden", async () => {
|
|
await using tmp = await tmpdir({
|
|
init: async (dir) => {
|
|
await Bun.write(path.join(dir, "visible.txt"), "hello")
|
|
await fs.mkdir(path.join(dir, ".opencode"), { recursive: true })
|
|
await Bun.write(path.join(dir, ".opencode", "thing.json"), "{}")
|
|
},
|
|
})
|
|
|
|
const files = await Array.fromAsync(Ripgrep.files({ cwd: tmp.path }))
|
|
const hasVisible = files.includes("visible.txt")
|
|
const hasHidden = files.includes(path.join(".opencode", "thing.json"))
|
|
expect(hasVisible).toBe(true)
|
|
expect(hasHidden).toBe(true)
|
|
})
|
|
|
|
test("hidden false excludes hidden", async () => {
|
|
await using tmp = await tmpdir({
|
|
init: async (dir) => {
|
|
await Bun.write(path.join(dir, "visible.txt"), "hello")
|
|
await fs.mkdir(path.join(dir, ".opencode"), { recursive: true })
|
|
await Bun.write(path.join(dir, ".opencode", "thing.json"), "{}")
|
|
},
|
|
})
|
|
|
|
const files = await Array.fromAsync(Ripgrep.files({ cwd: tmp.path, hidden: false }))
|
|
const hasVisible = files.includes("visible.txt")
|
|
const hasHidden = files.includes(path.join(".opencode", "thing.json"))
|
|
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([])
|
|
})
|
|
})
|