summaryrefslogtreecommitdiffhomepage
path: root/packages/app/src/context/file/path.test.ts
diff options
context:
space:
mode:
authorAdam <[email protected]>2026-02-06 10:02:31 -0600
committerGitHub <[email protected]>2026-02-06 10:02:31 -0600
commit2c58dd6203df7806f57ef6b29672091cb764e871 (patch)
tree10fca96d3098465b497f78e29de8d0a585c4dac3 /packages/app/src/context/file/path.test.ts
parenta4bc883595df9ea0f752079519081bc602408553 (diff)
downloadopencode-2c58dd6203df7806f57ef6b29672091cb764e871.tar.gz
opencode-2c58dd6203df7806f57ef6b29672091cb764e871.zip
chore: refactoring and tests, splitting up files (#12495)
Diffstat (limited to 'packages/app/src/context/file/path.test.ts')
-rw-r--r--packages/app/src/context/file/path.test.ts27
1 files changed, 27 insertions, 0 deletions
diff --git a/packages/app/src/context/file/path.test.ts b/packages/app/src/context/file/path.test.ts
new file mode 100644
index 000000000..dba9ae06d
--- /dev/null
+++ b/packages/app/src/context/file/path.test.ts
@@ -0,0 +1,27 @@
+import { describe, expect, test } from "bun:test"
+import { createPathHelpers, stripQueryAndHash, unquoteGitPath } from "./path"
+
+describe("file path helpers", () => {
+ test("normalizes file inputs against workspace root", () => {
+ const path = createPathHelpers(() => "/repo")
+ expect(path.normalize("file:///repo/src/app.ts?x=1#h")).toBe("src/app.ts")
+ expect(path.normalize("/repo/src/app.ts")).toBe("src/app.ts")
+ expect(path.normalize("./src/app.ts")).toBe("src/app.ts")
+ expect(path.normalizeDir("src/components///")).toBe("src/components")
+ expect(path.tab("src/app.ts")).toBe("file://src/app.ts")
+ expect(path.pathFromTab("file://src/app.ts")).toBe("src/app.ts")
+ expect(path.pathFromTab("other://src/app.ts")).toBeUndefined()
+ })
+
+ test("keeps query/hash stripping behavior stable", () => {
+ expect(stripQueryAndHash("a/b.ts#L12?x=1")).toBe("a/b.ts")
+ expect(stripQueryAndHash("a/b.ts?x=1#L12")).toBe("a/b.ts")
+ expect(stripQueryAndHash("a/b.ts")).toBe("a/b.ts")
+ })
+
+ test("unquotes git escaped octal path strings", () => {
+ expect(unquoteGitPath('"a/\\303\\251.txt"')).toBe("a/\u00e9.txt")
+ expect(unquoteGitPath('"plain\\nname"')).toBe("plain\nname")
+ expect(unquoteGitPath("a/b/c.ts")).toBe("a/b/c.ts")
+ })
+})