From 4cab66da6c17ed9bf29562820e9e5c20d27f9aeb Mon Sep 17 00:00:00 2001 From: Dax Raad Date: Fri, 24 Oct 2025 09:29:38 -0400 Subject: [PATCH] test cleanup --- packages/opencode/test/tool/bash.test.ts | 2 - packages/opencode/test/tool/patch.test.ts | 111 +++++++++++----------- 2 files changed, 54 insertions(+), 59 deletions(-) diff --git a/packages/opencode/test/tool/bash.test.ts b/packages/opencode/test/tool/bash.test.ts index 3a74cba4..2919ccb0 100644 --- a/packages/opencode/test/tool/bash.test.ts +++ b/packages/opencode/test/tool/bash.test.ts @@ -1,7 +1,6 @@ import { describe, expect, test } from "bun:test" import path from "path" import { BashTool } from "../../src/tool/bash" -import { Log } from "../../src/util/log" import { Instance } from "../../src/project/instance" const ctx = { @@ -15,7 +14,6 @@ const ctx = { const bash = await BashTool.init() const projectRoot = path.join(__dirname, "../..") -Log.init({ print: false }) describe("tool.bash", () => { test("basic", async () => { diff --git a/packages/opencode/test/tool/patch.test.ts b/packages/opencode/test/tool/patch.test.ts index 5defc0f5..649119dc 100644 --- a/packages/opencode/test/tool/patch.test.ts +++ b/packages/opencode/test/tool/patch.test.ts @@ -1,7 +1,6 @@ import { describe, expect, test } from "bun:test" import path from "path" import { PatchTool } from "../../src/tool/patch" -import { Log } from "../../src/util/log" import { Instance } from "../../src/project/instance" import { tmpdir } from "../fixture/fixture" import * as fs from "fs/promises" @@ -10,51 +9,46 @@ const ctx = { sessionID: "test", messageID: "", toolCallID: "", - agent: "build", + agent: "build", abort: AbortSignal.any([]), metadata: () => {}, } const patchTool = await PatchTool.init() -Log.init({ print: false }) describe("tool.patch", () => { test("should validate required parameters", async () => { await Instance.provide({ directory: "/tmp", fn: async () => { - await expect( - patchTool.execute({ patchText: "" }, ctx) - ).rejects.toThrow("patchText is required") + await expect(patchTool.execute({ patchText: "" }, ctx)).rejects.toThrow("patchText is required") }, }) }) - + test("should validate patch format", async () => { await Instance.provide({ directory: "/tmp", fn: async () => { - await expect( - patchTool.execute({ patchText: "invalid patch" }, ctx) - ).rejects.toThrow("Failed to parse patch") + await expect(patchTool.execute({ patchText: "invalid patch" }, ctx)).rejects.toThrow("Failed to parse patch") }, }) }) - + test("should handle empty patch", async () => { await Instance.provide({ directory: "/tmp", fn: async () => { const emptyPatch = `*** Begin Patch *** End Patch` - - await expect( - patchTool.execute({ patchText: emptyPatch }, ctx) - ).rejects.toThrow("No file changes found in patch") + + await expect(patchTool.execute({ patchText: emptyPatch }, ctx)).rejects.toThrow( + "No file changes found in patch", + ) }, }) }) - + test("should reject files outside working directory", async () => { await Instance.provide({ directory: "/tmp", @@ -63,17 +57,17 @@ describe("tool.patch", () => { *** Add File: /etc/passwd +malicious content *** End Patch` - - await expect( - patchTool.execute({ patchText: maliciousPatch }, ctx) - ).rejects.toThrow("is not in the current working directory") + + await expect(patchTool.execute({ patchText: maliciousPatch }, ctx)).rejects.toThrow( + "is not in the current working directory", + ) }, }) }) - + test("should handle simple add file operation", async () => { await using fixture = await tmpdir() - + await Instance.provide({ directory: fixture.path, fn: async () => { @@ -82,13 +76,13 @@ describe("tool.patch", () => { +Hello World +This is a test file *** End Patch` - + const result = await patchTool.execute({ patchText }, ctx) - + expect(result.title).toContain("files changed") expect(result.metadata.diff).toBeDefined() expect(result.output).toContain("Patch applied successfully") - + // Verify file was created const filePath = path.join(fixture.path, "test-file.txt") const content = await fs.readFile(filePath, "utf-8") @@ -96,10 +90,10 @@ describe("tool.patch", () => { }, }) }) - + test("should handle file with context update", async () => { await using fixture = await tmpdir() - + await Instance.provide({ directory: fixture.path, fn: async () => { @@ -109,24 +103,24 @@ describe("tool.patch", () => { +const DEBUG = false +const VERSION = "1.0" *** End Patch` - + const result = await patchTool.execute({ patchText }, ctx) - + expect(result.title).toContain("files changed") expect(result.metadata.diff).toBeDefined() expect(result.output).toContain("Patch applied successfully") - + // Verify file was created with correct content const filePath = path.join(fixture.path, "config.js") const content = await fs.readFile(filePath, "utf-8") - expect(content).toBe("const API_KEY = \"test-key\"\nconst DEBUG = false\nconst VERSION = \"1.0\"") + expect(content).toBe('const API_KEY = "test-key"\nconst DEBUG = false\nconst VERSION = "1.0"') }, }) }) - + test("should handle multiple file operations", async () => { await using fixture = await tmpdir() - + await Instance.provide({ directory: fixture.path, fn: async () => { @@ -138,13 +132,13 @@ describe("tool.patch", () => { *** Add File: file3.txt +Content of file 3 *** End Patch` - + const result = await patchTool.execute({ patchText }, ctx) - + expect(result.title).toContain("3 files changed") expect(result.metadata.diff).toBeDefined() expect(result.output).toContain("Patch applied successfully") - + // Verify all files were created for (let i = 1; i <= 3; i++) { const filePath = path.join(fixture.path, `file${i}.txt`) @@ -154,10 +148,10 @@ describe("tool.patch", () => { }, }) }) - + test("should create parent directories when adding nested files", async () => { await using fixture = await tmpdir() - + await Instance.provide({ directory: fixture.path, fn: async () => { @@ -165,26 +159,29 @@ describe("tool.patch", () => { *** Add File: deep/nested/file.txt +Deep nested content *** End Patch` - + const result = await patchTool.execute({ patchText }, ctx) - + expect(result.title).toContain("files changed") expect(result.output).toContain("Patch applied successfully") - + // Verify nested file was created const nestedPath = path.join(fixture.path, "deep", "nested", "file.txt") - const exists = await fs.access(nestedPath).then(() => true).catch(() => false) + const exists = await fs + .access(nestedPath) + .then(() => true) + .catch(() => false) expect(exists).toBe(true) - + const content = await fs.readFile(nestedPath, "utf-8") expect(content).toBe("Deep nested content") }, }) }) - + test("should generate proper unified diff in metadata", async () => { await using fixture = await tmpdir() - + await Instance.provide({ directory: fixture.path, fn: async () => { @@ -195,9 +192,9 @@ describe("tool.patch", () => { +line 2 +line 3 *** End Patch` - + await patchTool.execute({ patchText: patchText1 }, ctx) - + // Now create an update patch const patchText2 = `*** Begin Patch *** Update File: test.txt @@ -207,9 +204,9 @@ describe("tool.patch", () => { +line 2 updated line 3 *** End Patch` - + const result = await patchTool.execute({ patchText: patchText2 }, ctx) - + expect(result.metadata.diff).toBeDefined() expect(result.metadata.diff).toContain("@@") expect(result.metadata.diff).toContain("-line 2") @@ -217,10 +214,10 @@ describe("tool.patch", () => { }, }) }) - + test("should handle complex patch with multiple operations", async () => { await using fixture = await tmpdir() - + await Instance.provide({ directory: fixture.path, fn: async () => { @@ -238,26 +235,26 @@ describe("tool.patch", () => { + "debug": true +} *** End Patch` - + const result = await patchTool.execute({ patchText }, ctx) - + expect(result.title).toContain("3 files changed") expect(result.metadata.diff).toBeDefined() expect(result.output).toContain("Patch applied successfully") - + // Verify all files were created const newPath = path.join(fixture.path, "new.txt") const newContent = await fs.readFile(newPath, "utf-8") expect(newContent).toBe("This is a new file\nwith multiple lines") - + const existingPath = path.join(fixture.path, "existing.txt") const existingContent = await fs.readFile(existingPath, "utf-8") expect(existingContent).toBe("old content\nnew line\nmore content") - + const configPath = path.join(fixture.path, "config.json") const configContent = await fs.readFile(configPath, "utf-8") expect(configContent).toBe('{\n "version": "1.0",\n "debug": true\n}') }, }) }) -}) \ No newline at end of file +})