Files
Agent-Native/exec/result_fidelity_test.go
T
weichen 5c0d2d87dd Carry side-effect and cancellation semantics in exec results
Why: F05 prep - exec.Result could not distinguish canceled runs from
retryable failures or express side-effect uncertainty, so callers
inferred outcomes from error text.
Evidence: exec/adapters/runtime tests pass (verify-u3a.json);
canceled and side-effect population cases added.
Impact: zero-value results keep legacy meaning; no interface change.
Refs: feature/agent-stack-audit-remediation-b1 U3a
2026-10-21 16:15:03 +00:00

31 lines
1019 B
Go

package exec_test
import (
"testing"
"agent-native/exec"
)
// TestResultZeroValueKeepsLegacyMeaning pins backward compatibility:
// empty SideEffects reads as possible; Canceled/Unknown stay false.
func TestResultZeroValueKeepsLegacyMeaning(t *testing.T) {
var r exec.Result
if r.Success || r.Retryable || r.Canceled || r.Unknown {
t.Fatalf("zero Result must keep legacy false flags, got %+v", r)
}
if r.SideEffects != "" {
t.Fatalf("zero SideEffects must be empty (legacy), got %q", r.SideEffects)
}
if got := r.EffectiveSideEffects(); got != exec.SideEffectPossible {
t.Fatalf("EffectiveSideEffects() = %q, want %q", got, exec.SideEffectPossible)
}
r.SideEffects = exec.SideEffectNone
if got := r.EffectiveSideEffects(); got != exec.SideEffectNone {
t.Fatalf("explicit none: EffectiveSideEffects() = %q", got)
}
r.SideEffects = exec.SideEffectPossible
if got := r.EffectiveSideEffects(); got != exec.SideEffectPossible {
t.Fatalf("explicit possible: EffectiveSideEffects() = %q", got)
}
}