Initial commit

This commit is contained in:
2026-05-10 11:40:53 +02:00
commit 140d736fc7
16 changed files with 1917 additions and 0 deletions
+83
View File
@@ -0,0 +1,83 @@
package openapi
import (
"context"
"encoding/json"
"os"
"path/filepath"
"testing"
)
func TestShellRegistry(t *testing.T) {
registry := NewShellRegistry()
ctx := context.Background()
session := &Session{}
args := json.RawMessage(`{"command": "echo 'hello world'"}`)
result, err := registry.Execute(ctx, session, "run_command", args)
if err != nil {
t.Fatalf("Execute failed: %v", err)
}
resMap := result.(map[string]any)
if resMap["output"] != "hello world\n" {
t.Errorf("Expected 'hello world\n', got %q", resMap["output"])
}
}
func TestFileRegistry(t *testing.T) {
tempDir, err := os.MkdirTemp("", "file-registry-test")
if err != nil {
t.Fatalf("Failed to create temp dir: %v", err)
}
defer os.RemoveAll(tempDir)
registry := NewFileRegistry(tempDir)
ctx := context.Background()
session := &Session{}
// Test write_file
writeArgs := json.RawMessage(`{"path": "test.txt", "content": "hello file"}`)
_, err = registry.Execute(ctx, session, "write_file", writeArgs)
if err != nil {
t.Fatalf("write_file failed: %v", err)
}
content, err := os.ReadFile(filepath.Join(tempDir, "test.txt"))
if err != nil || string(content) != "hello file" {
t.Errorf("File content mismatch: %q", string(content))
}
// Test read_file
readArgs := json.RawMessage(`{"path": "test.txt"}`)
res, err := registry.Execute(ctx, session, "read_file", readArgs)
if err != nil {
t.Fatalf("read_file failed: %v", err)
}
if res.(string) != "hello file" {
t.Errorf("read_file output mismatch: %q", res)
}
// Test list_dir
listArgs := json.RawMessage(`{"path": "."}`)
res, err = registry.Execute(ctx, session, "list_dir", listArgs)
if err != nil {
t.Fatalf("list_dir failed: %v", err)
}
files := res.([]string)
if len(files) != 1 || files[0] != "test.txt" {
t.Errorf("list_dir output mismatch: %v", files)
}
// Test replace_content
replaceArgs := json.RawMessage(`{"path": "test.txt", "target_content": "file", "new_content": "replacement"}`)
_, err = registry.Execute(ctx, session, "replace_content", replaceArgs)
if err != nil {
t.Fatalf("replace_content failed: %v", err)
}
content, err = os.ReadFile(filepath.Join(tempDir, "test.txt"))
if err != nil || string(content) != "hello replacement" {
t.Errorf("File content mismatch after replacement: %q", string(content))
}
}