summaryrefslogtreecommitdiff
path: root/internal/generate/format_test.go
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2026-02-21 21:56:36 +0200
committerPaul Buetow <paul@buetow.org>2026-02-21 21:56:36 +0200
commit311b827599251d8d68526293815e8d4dcba632c8 (patch)
tree589d01f5653f966c3b2cc786911b8cc02a3237c9 /internal/generate/format_test.go
parent36f216c757eea7db82cf04aeae592956199b9f76 (diff)
Add negative tests for all internal unit tests (task 348)
- internal/types: Fix StringValue panic with no null terminator, add negative tests for serialization, Equals, and StringValue edge cases - internal/file: Add negative tests for empty name, unknown flags, SetFlags/AddFlags, Dup, empty OldnameNewname and Pathname - internal/flamegraph: Add negative tests for StringByName unknown field, Counter.ValueByName panic, merge empty, deserialize invalid data, serialize/deserialize round-trip - internal/generate/format: Add negative tests for empty input, ID errors, malformed fields, empty declarations - internal/generate/typesgo: Add negative tests for snakeToCamel edge cases, unknown types, invalid member/define parsing, no-import case - internal/generate/tracepointsgo: Add negative tests for malformed SEC, no SEC lines - internal/generate/codegen: Add negative tests for unknown event kind, invalid syscall grouping, missing exit tracepoint - internal/generate/classify: Add negative tests for empty external fields, non-fd types Amp-Thread-ID: https://ampcode.com/threads/T-019c81bf-3d5c-7216-b1b6-890db1374414 Co-authored-by: Amp <amp@ampcode.com>
Diffstat (limited to 'internal/generate/format_test.go')
-rw-r--r--internal/generate/format_test.go40
1 files changed, 40 insertions, 0 deletions
diff --git a/internal/generate/format_test.go b/internal/generate/format_test.go
index f8f078b..a77ee2a 100644
--- a/internal/generate/format_test.go
+++ b/internal/generate/format_test.go
@@ -172,3 +172,43 @@ func TestParseFormatError(t *testing.T) {
t.Error("expected error for field without name")
}
}
+
+func TestParseFormatEmptyInput(t *testing.T) {
+ formats, err := ParseFormats(strings.NewReader(""))
+ if err != nil {
+ t.Fatalf("unexpected error: %v", err)
+ }
+ if len(formats) != 0 {
+ t.Errorf("expected 0 formats, got %d", len(formats))
+ }
+}
+
+func TestParseFormatIDWithoutName(t *testing.T) {
+ _, err := ParseFormats(strings.NewReader("ID: 123\n"))
+ if err == nil {
+ t.Error("expected error for ID without preceding name")
+ }
+}
+
+func TestParseFormatInvalidID(t *testing.T) {
+ input := "name: sys_enter_test\nID: notanumber\n"
+ _, err := ParseFormats(strings.NewReader(input))
+ if err == nil {
+ t.Error("expected error for non-numeric ID")
+ }
+}
+
+func TestParseFieldNotEnoughParts(t *testing.T) {
+ input := "name: sys_enter_test\nID: 100\nfield:unsigned int fd; offset:16\n"
+ _, err := ParseFormats(strings.NewReader(input))
+ if err == nil {
+ t.Error("expected error for field with fewer than 4 semicolons")
+ }
+}
+
+func TestSplitDeclarationEmpty(t *testing.T) {
+ typePart, namePart := splitDeclaration("")
+ if typePart != "" || namePart != "" {
+ t.Errorf("splitDeclaration(\"\") = (%q, %q), want (\"\", \"\")", typePart, namePart)
+ }
+}