From 311b827599251d8d68526293815e8d4dcba632c8 Mon Sep 17 00:00:00 2001 From: Paul Buetow Date: Sat, 21 Feb 2026 21:56:36 +0200 Subject: 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 --- internal/generate/codegen_test.go | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) (limited to 'internal/generate/codegen_test.go') diff --git a/internal/generate/codegen_test.go b/internal/generate/codegen_test.go index 23ab7c1..6402214 100644 --- a/internal/generate/codegen_test.go +++ b/internal/generate/codegen_test.go @@ -285,6 +285,41 @@ func TestEnterReject(t *testing.T) { } } +func TestEventStructNameUnknown(t *testing.T) { + if got := eventStructName(TracepointKind(999)); got != "unknown_event" { + t.Errorf("eventStructName(999) = %q, want \"unknown_event\"", got) + } +} + +func TestEventTypeConstantUnknown(t *testing.T) { + if got := eventTypeConstant(TracepointKind(999), true); got != "ENTER_UNKNOWN_EVENT" { + t.Errorf("eventTypeConstant(999, true) = %q, want \"ENTER_UNKNOWN_EVENT\"", got) + } + if got := eventTypeConstant(TracepointKind(999), false); got != "EXIT_UNKNOWN_EVENT" { + t.Errorf("eventTypeConstant(999, false) = %q, want \"EXIT_UNKNOWN_EVENT\"", got) + } +} + +func TestGroupBySyscallInvalid(t *testing.T) { + formats := []Format{ + {Name: "tooshort", ID: 1}, + {Name: "also_short", ID: 2}, + } + output := GenerateTracepointsC(formats) + if strings.Contains(output, "SEC(") { + t.Error("formats with fewer than 3 name parts should not produce SEC handlers") + } +} + +func TestClassifySyscallNoExit(t *testing.T) { + formats := mustParseAll(t, FormatRead) + output := GenerateTracepointsC(formats) + requireContains(t, output, "Ignoring") + if strings.Contains(output, "SEC(") { + t.Error("syscall with only enter and no exit should be ignored") + } +} + func requireContains(t *testing.T, haystack, needle string) { t.Helper() if !strings.Contains(haystack, needle) { -- cgit v1.2.3