mirror of
https://github.com/Tencent/WeKnora.git
synced 2026-06-04 13:30:32 +08:00
Operability surface and the bulk of the jopts→fopts migration: * --log-level error|warn|info|debug + WEKNORA_LOG_LEVEL env, wired to the SDK via client.SetDebugLevel. Invalid --log-level returns FlagError (exit 2). * kb status <kb-id> / kb check <kb-id> verb split (1 HTTP vs 1+N for failed_count aggregation). * agent status <agent-id> / agent check <agent-id> verb split (probes kb_scope_all_reachable via 1+N HTTP). * kb create <name> positional (matches agent create). * Positional id help strings namespaced (<kb-id> / <agent-id>). * All auth / context / link / doctor / kb / agent CRUD commands migrated to the FormatOptions API. * root.go Execute(ctx) takes a context so signal-cancellation propagates via cmd.Context() into long-running commands. * Pagination termination uses len(accum) >= total (not page*pageSize) so server-capped page sizes do not truncate aggregations.
34 lines
767 B
Go
34 lines
767 B
Go
package client
|
|
|
|
import (
|
|
"bytes"
|
|
"log/slog"
|
|
"testing"
|
|
)
|
|
|
|
func TestSetDebugLevel(t *testing.T) {
|
|
// Save and restore
|
|
saved := debugLogger
|
|
defer func() { debugLogger = saved }()
|
|
|
|
cases := []string{"debug", "info", "warn", "error", "DEBUG", "", "invalid"}
|
|
for _, lvl := range cases {
|
|
SetDebugLevel(lvl)
|
|
if debugLogger == nil {
|
|
t.Errorf("SetDebugLevel(%q): debugLogger nil", lvl)
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestSetDebugLevel_DebugRoutesEmissions(t *testing.T) {
|
|
saved := debugLogger
|
|
defer func() { debugLogger = saved }()
|
|
|
|
var buf bytes.Buffer
|
|
debugLogger = slog.New(slog.NewTextHandler(&buf, &slog.HandlerOptions{Level: slog.LevelDebug}))
|
|
debugLogger.Debug("test_event", "k", "v")
|
|
if buf.Len() == 0 {
|
|
t.Error("expected debug emission to land in buffer")
|
|
}
|
|
}
|