ananke/testing/state/state_testhooks_quality_test.go

71 lines
2.8 KiB
Go
Raw Normal View History

package statequality
import (
"errors"
"os"
"path/filepath"
"strings"
"testing"
"scm.bstein.dev/bstein/ananke/internal/state"
)
// TestStateTestHookOverrideSetters runs one orchestration or CLI step.
// Signature: TestStateTestHookOverrideSetters(t *testing.T).
// Why: drives top-level test-hook override branches so root-mode quality gates
// keep deterministic failure injection coverage above the per-file threshold.
func TestStateTestHookOverrideSetters(t *testing.T) {
root := t.TempDir()
intentPath := filepath.Join(root, "intent.json")
restoreWriteNil := state.TestHookSetWriteIntentOverride(nil)
if err := state.WriteIntent(intentPath, state.Intent{State: state.IntentNormal}); err != nil {
t.Fatalf("expected default write intent path after nil override, got %v", err)
}
restoreWriteNil()
writeOverrideCalled := false
restoreWrite := state.TestHookSetWriteIntentOverride(func(path string, in state.Intent) error {
writeOverrideCalled = true
return errors.New("forced write override")
})
err := state.WriteIntent(intentPath, state.Intent{State: state.IntentNormal})
if err == nil || !strings.Contains(err.Error(), "forced write override") {
t.Fatalf("expected forced write override error, got %v", err)
}
if !writeOverrideCalled {
t.Fatalf("expected write override to be invoked")
}
restoreWrite()
if err := state.TestHookWriteIntentDefault(filepath.Join(root, "intent-default.json"), state.Intent{State: state.IntentNormal}); err != nil {
t.Fatalf("expected explicit default write helper to succeed, got %v", err)
}
payload := []byte("{bad-json")
replacement := []byte("{}\n")
quarantinePath := filepath.Join(root, "quarantine-default.json")
if err := state.TestHookQuarantineCorruptFileDefault(quarantinePath, payload, replacement, 0o640); err != nil {
t.Fatalf("expected explicit default quarantine helper to succeed, got %v", err)
}
restoreQuarantineNil := state.TestHookSetQuarantineCorruptFileOverride(nil)
restoreQuarantineNil()
quarantineOverrideCalled := false
restoreQuarantine := state.TestHookSetQuarantineCorruptFileOverride(func(path string, payload []byte, replacement []byte, mode os.FileMode) error {
quarantineOverrideCalled = true
return errors.New("forced quarantine override")
})
err = state.TestHookQuarantineCorruptFile(filepath.Join(root, "quarantine-forced.json"), payload, replacement, 0o640)
if err == nil || !strings.Contains(err.Error(), "forced quarantine override") {
t.Fatalf("expected forced quarantine override error, got %v", err)
}
if !quarantineOverrideCalled {
t.Fatalf("expected quarantine override to be invoked")
}
restoreQuarantine()
if err := state.TestHookQuarantineCorruptFile(filepath.Join(root, "quarantine-after-restore.json"), payload, replacement, 0o640); err != nil {
t.Fatalf("expected quarantine helper to use default impl after restore, got %v", err)
}
}