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
31 lines
1019 B
Go
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)
|
|
}
|
|
}
|