aboutsummaryrefslogtreecommitdiff
path: root/cmd/krino/enum_test.go
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 /cmd/krino/enum_test.go
parent792e6e5416a51fb05f7171aa7ef4f9a284a8cf68 (diff)
downloadkrino-754f362da077b06420ab8350dfb62bd2d8d89d75.tar.gz
krino-754f362da077b06420ab8350dfb62bd2d8d89d75.zip
plan 8: enum values read from source must all be handled
Diffstat (limited to 'cmd/krino/enum_test.go')
-rw-r--r--cmd/krino/enum_test.go35
1 files changed, 35 insertions, 0 deletions
diff --git a/cmd/krino/enum_test.go b/cmd/krino/enum_test.go
new file mode 100644
index 0000000..144fec6
--- /dev/null
+++ b/cmd/krino/enum_test.go
@@ -0,0 +1,35 @@
+// SPDX-License-Identifier: GPL-3.0-or-later
+
+package main
+
+import (
+ "slices"
+ "strings"
+ "testing"
+
+ "krino/internal/enumtest"
+ "krino/internal/scan"
+)
+
+// TestEverySkipReasonIsSummarised: every scan.Reason is counted in the
+// "not acted on" line and reads as words. 0.0.4 added TooBig and only a
+// hand check caught it missing from skipReasonOrder. scan.Reason is an iota
+// block from 0, so the i-th constant is the value i.
+func TestEverySkipReasonIsSummarised(t *testing.T) {
+ reasons, err := enumtest.Names("../../internal/scan/scan.go", "Reason")
+ if err != nil {
+ t.Fatal(err)
+ }
+ for i, name := range reasons {
+ r := scan.Reason(i)
+ if !slices.Contains(skipReasonOrder, r) {
+ t.Errorf("scan.%s is missing from skipReasonOrder", name)
+ }
+ if s := r.String(); s == "" || strings.ContainsAny(s, "0123456789") {
+ t.Errorf("scan.%s reads %q", name, s)
+ }
+ }
+ if len(skipReasonOrder) != len(reasons) {
+ t.Errorf("skipReasonOrder has %d reasons, scan declares %d", len(skipReasonOrder), len(reasons))
+ }
+}