Initial commit
This commit is contained in:
@@ -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))
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user