2025-11-19 14:38:12 -06:00

55 lines
1.4 KiB
TypeScript

import { describe, expect, test } from "bun:test"
import path from "path"
import { BashTool } from "../../src/tool/bash"
import { Instance } from "../../src/project/instance"
import { Permission } from "../../src/permission"
const ctx = {
sessionID: "test",
messageID: "",
toolCallID: "",
agent: "build",
abort: AbortSignal.any([]),
metadata: () => {},
}
const bash = await BashTool.init()
const projectRoot = path.join(__dirname, "../..")
describe("tool.bash", () => {
test("basic", async () => {
await Instance.provide({
directory: projectRoot,
fn: async () => {
const result = await bash.execute(
{
command: "echo 'test'",
description: "Echo test message",
},
ctx,
)
expect(result.metadata.exit).toBe(0)
expect(result.metadata.output).toContain("test")
},
})
})
test("cd ../ should ask for permission for external directory", async () => {
await Instance.provide({
directory: projectRoot,
fn: async () => {
bash.execute(
{
command: "cd ../",
description: "Try to cd to parent directory",
},
ctx,
)
// Give time for permission to be asked
await new Promise((resolve) => setTimeout(resolve, 100))
expect(Permission.pending()[ctx.sessionID]).toBeDefined()
},
})
})
})