shell: support Windows cmd /C; normalize date/time; allow all commands; add tests

This commit is contained in:
2026-03-05 17:44:19 +08:00
parent 47b6059773
commit e2f806edb3
19 changed files with 989 additions and 350 deletions

View File

@@ -0,0 +1,57 @@
package websearch
import (
"testing"
)
func TestNewDefaultEngine(t *testing.T) {
tool := New(Config{}, 4000, nil)
if tool.Name() != "web_search" {
t.Fatalf("expected name web_search, got %s", tool.Name())
}
if tool.engine != "duckduckgo" {
t.Fatalf("expected default engine duckduckgo, got %s", tool.engine)
}
}
func TestNewBraveEngine(t *testing.T) {
tool := New(Config{Engine: "brave", APIKey: "test-key"}, 4000, nil)
if tool.engine != "brave" {
t.Fatalf("expected engine brave, got %s", tool.engine)
}
if tool.apiKey != "test-key" {
t.Fatalf("expected apiKey test-key, got %s", tool.apiKey)
}
}
func TestCallRejectsEmptyQuery(t *testing.T) {
tool := New(Config{}, 4000, nil)
_, err := tool.Call(nil, " ")
if err == nil {
t.Fatal("expected error for empty query")
}
}
func TestFormatDuckDuckGoResultWithAnswer(t *testing.T) {
tool := New(Config{}, 4000, nil)
ddg := duckDuckGoResponse{
Answer: "42",
AbstractText: "The answer to everything.",
}
result := tool.formatDuckDuckGoResult("meaning of life", ddg)
if result == "" {
t.Fatal("expected non-empty result")
}
if len(result) == 0 {
t.Fatal("result should contain content")
}
}
func TestFormatBraveResultEmpty(t *testing.T) {
tool := New(Config{Engine: "brave"}, 4000, nil)
resp := braveSearchResponse{}
result := tool.formatBraveResult("test", resp)
if result == "" {
t.Fatal("expected non-empty result")
}
}