77b9b6a465
Make the agent-facing contract uniform across the whole surface: - cobra parse errors (unknown flag, arg-count) emit the JSON envelope by default, not bare prose — via a single DefaultFormatMode shared by the early resolver and ResolveDefault. - a malformed --jq is input.invalid_argument (exit 5), not internal.error. - destructive-confirmation messages name the real operation (edit/remove, not a hardcoded "delete"). - `doc wait` emits one envelope (Silent failure, no contradictory stderr); completed marshals as [] not null. - WEKNORA_AGENT_HELP covers every leaf command, enforced by a coverage drift guard; a sibling guard enforces --dry-run on every mutation. - `search docs`/`search chunks` resolve --kb through the same flag→env→project-link chain as `doc list`/`chat` (no longer a hard --kb requirement); a linked dir or WEKNORA_KB_ID now works without --kb, and an unresolved KB is local.kb_id_required (exit 1). The destructive `doc delete --all` keeps its explicit-only rule. - exit-code and batch/wait ok-semantics documented in the shared skill, README, and AGENTS.md.
32 lines
842 B
Go
32 lines
842 B
Go
package cmdutil
|
|
|
|
import (
|
|
"testing"
|
|
)
|
|
|
|
func TestErrorToDetail_NilSafe(t *testing.T) {
|
|
if got := ErrorToDetail(nil); got != nil {
|
|
t.Errorf("ErrorToDetail(nil) should return nil; got %v", got)
|
|
}
|
|
}
|
|
|
|
func TestError_WithRetryCommand(t *testing.T) {
|
|
err := NewError(CodeAuthUnauthenticated, "session expired").
|
|
WithHint("run `weknora auth login`").
|
|
WithRetryCommand("weknora auth login")
|
|
|
|
if err.RetryCommand != "weknora auth login" {
|
|
t.Errorf("RetryCommand not set; got %q", err.RetryCommand)
|
|
}
|
|
if err.Hint != "run `weknora auth login`" {
|
|
t.Errorf("Hint changed unexpectedly; got %q", err.Hint)
|
|
}
|
|
}
|
|
|
|
func TestError_RetryCommand_EmptyByDefault(t *testing.T) {
|
|
err := NewError(CodeResourceAlreadyExists, "kb name exists")
|
|
if err.RetryCommand != "" {
|
|
t.Errorf("RetryCommand should default empty; got %q", err.RetryCommand)
|
|
}
|
|
}
|