Files
xinmi/internal/im/tool_display_test.go
T
yawan f7fc992f57
Anydoc / anydoc parser engine (push) Canceled after 0s
App / Format, vet, test, and build (push) Canceled after 0s
CLI / test (macos-latest / go 1.26) (push) Canceled after 0s
CLI / test (ubuntu-latest / go 1.26) (push) Canceled after 0s
CLI / test (windows-latest / go 1.26) (push) Canceled after 0s
Build and Push Docker Image / build-ui (push) Canceled after 0s
Build and Push Docker Image / build-docreader (push) Canceled after 0s
Build and Push Docker Image / build-sandbox (push) Canceled after 0s
Build and Push Docker Image / build-app (amd64, linux/amd64, ubuntu-latest) (push) Canceled after 0s
Build and Push Docker Image / build-app (arm64, linux/arm64, ubuntu-24.04-arm) (push) Canceled after 0s
DocReader / Python tests and Go client tests (push) Canceled after 0s
Build & Publish (dsh-weknora) / Typecheck, test, pack (push) Canceled after 0s
Build & Publish (dsh-weknora) / End-to-end inside dsh (pinned) (push) Canceled after 0s
Build & Publish (dsh-weknora) / End-to-end inside dsh (latest, advisory) (push) Canceled after 0s
Frontend / Test, type-check, and build (push) Canceled after 0s
Go Lint Cache / warm lint cache (.) (push) Canceled after 0s
Go Lint Cache / warm lint cache (cli) (push) Canceled after 0s
Go Lint Cache / warm lint cache (client) (push) Canceled after 0s
Build & Publish (mcp-server) / Test (Python 3.10) (push) Canceled after 0s
Build & Publish (mcp-server) / Test (Python 3.11) (push) Canceled after 0s
Build & Publish (mcp-server) / Test (Python 3.12) (push) Canceled after 0s
Build & Publish (mcp-server) / Test (Python 3.13) (push) Canceled after 0s
Build and Push Docker Image / merge (push) Canceled after 0s
Build & Publish (dsh-weknora) / Publish to npm (push) Canceled after 0s
Build & Publish (mcp-server) / Build sdist + wheel (push) Canceled after 0s
Build & Publish (mcp-server) / Publish to PyPI (push) Canceled after 0s
WeKnora deployment source with the reviewed wiki identity, summary and recovery fixes
2026-09-22 16:19:06 +08:00

119 lines
3.1 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
package im
import (
"strings"
"testing"
)
func TestFormatIMToolLine_pendingWithQuery(t *testing.T) {
line := FormatIMToolLine(IMToolStep{
ToolName: "knowledge_search",
Pending: true,
Arguments: map[string]any{"query": "文明6"},
})
if line != "正在调用 知识库检索..." {
t.Fatalf("pending line = %q", line)
}
}
func TestFormatIMToolLine_searchDoneWithQueryAndSummary(t *testing.T) {
line := FormatIMToolLine(IMToolStep{
ToolName: "knowledge_search",
Success: true,
Arguments: map[string]any{
"query": "文明6",
},
Data: map[string]interface{}{
"results": []interface{}{map[string]interface{}{}, map[string]interface{}{}, map[string]interface{}{}},
"kb_counts": map[string]interface{}{"a": 1, "b": 1},
},
})
if !strings.Contains(line, "检索知识库:「文明6」") {
t.Fatalf("title missing query: %q", line)
}
if !strings.Contains(line, "找到 3 个结果,来自 2 个文件") {
t.Fatalf("summary missing: %q", line)
}
}
func TestFormatIMToolLine_grepPatterns(t *testing.T) {
line := FormatIMToolLine(IMToolStep{
ToolName: "grep_chunks",
Success: true,
Arguments: map[string]any{
"patterns": []any{"文明", "策略"},
},
Data: map[string]interface{}{
"total_matches": float64(5),
"document_count": float64(2),
},
})
if line != "搜索关键词:「文明、策略」 · 找到 5 个匹配片段,来自 2 个文档" {
t.Fatalf("grep line = %q", line)
}
}
func TestFormatIMRagPipelineLine_queryUnderstand(t *testing.T) {
pending := FormatIMRagPipelineLine(IMToolStep{
ToolName: "query_understand",
Pending: true,
})
if pending != "正在理解问题..." {
t.Fatalf("pending = %q", pending)
}
done := FormatIMRagPipelineLine(IMToolStep{
ToolName: "query_understand",
Success: true,
})
if done != "已完成问题理解" {
t.Fatalf("done = %q", done)
}
}
func TestFormatIMRagPipelineLine_searchWithQuery(t *testing.T) {
line := FormatIMRagPipelineLine(IMToolStep{
ToolName: "knowledge_search",
Pending: true,
Arguments: map[string]any{"query": "讯飞开放平台"},
})
if line != "正在检索知识库:「讯飞开放平台」" {
t.Fatalf("line = %q", line)
}
}
func TestFormatIMRagPipelineLine_webSearchWithQuery(t *testing.T) {
line := FormatIMRagPipelineLine(IMToolStep{
ToolName: "knowledge_search",
Pending: true,
Arguments: map[string]any{"query": "任素汐演唱会", "search_source": "web"},
})
if line != "正在检索网络:「任素汐演唱会」" {
t.Fatalf("line = %q", line)
}
}
func TestIMGetQueryText_joinsUniqueQueries(t *testing.T) {
got := imGetQueryText(map[string]any{
"query": "foo",
"queries": []any{"foo", "bar"},
})
if got != "foo,bar" {
t.Fatalf("query text = %q", got)
}
}
func TestFormatIMToolLine_writeSandboxPendingShowsDiffStat(t *testing.T) {
line := FormatIMToolLine(IMToolStep{
ToolName: "write_sandbox_file",
Pending: true,
Arguments: map[string]any{
"path": "/workspace/output/a.py",
"added_lines": 12,
"removed_lines": 0,
},
})
if line != "写入沙箱文件:「/workspace/output/a.py」... +12" {
t.Fatalf("pending write line = %q", line)
}
}