summaryrefslogtreecommitdiff
path: root/internal/engine
diff options
context:
space:
mode:
authorLukasz Kasprzak <lukas@labunix.xyz>2026-09-14 20:13:11 +0200
committerLukasz Kasprzak <lukas@labunix.xyz>2026-09-14 20:13:11 +0200
commit754f362da077b06420ab8350dfb62bd2d8d89d75 (patch)
tree513d643876f12ad423f9338209ed9c0b607e7b39 /internal/engine
parent792e6e5416a51fb05f7171aa7ef4f9a284a8cf68 (diff)
downloadkrino-754f362da077b06420ab8350dfb62bd2d8d89d75.tar.gz
krino-754f362da077b06420ab8350dfb62bd2d8d89d75.zip
plan 8: enum values read from source must all be handled
Diffstat (limited to 'internal/engine')
-rw-r--r--internal/engine/enum_test.go35
1 files changed, 35 insertions, 0 deletions
diff --git a/internal/engine/enum_test.go b/internal/engine/enum_test.go
new file mode 100644
index 0000000..416da2a
--- /dev/null
+++ b/internal/engine/enum_test.go
@@ -0,0 +1,35 @@
+// SPDX-License-Identifier: GPL-3.0-or-later
+
+package engine
+
+import (
+ "testing"
+
+ "krino/internal/enumtest"
+ "krino/internal/plan"
+)
+
+// TestEveryKindHasALogAction: every plan.Kind is written to the log under
+// its own action word - undo reads the log by that word. plan.Kind is an
+// iota block from 0, so the i-th constant is the value i.
+func TestEveryKindHasALogAction(t *testing.T) {
+ kinds, err := enumtest.Names("../plan/step.go", "Kind")
+ if err != nil {
+ t.Fatal(err)
+ }
+ seen := map[string]bool{}
+ for i, name := range kinds {
+ func() {
+ defer func() {
+ if r := recover(); r != nil {
+ t.Errorf("plan.%s has no log action: %v", name, r)
+ }
+ }()
+ a := actionName(plan.Kind(i))
+ if a == "" || seen[a] {
+ t.Errorf("plan.%s logs as %q", name, a)
+ }
+ seen[a] = true
+ }()
+ }
+}