diff options
| author | Paul Buetow <paul@buetow.org> | 2026-02-21 21:56:36 +0200 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2026-02-21 21:56:36 +0200 |
| commit | 311b827599251d8d68526293815e8d4dcba632c8 (patch) | |
| tree | 589d01f5653f966c3b2cc786911b8cc02a3237c9 /internal/file | |
| parent | 36f216c757eea7db82cf04aeae592956199b9f76 (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/file')
| -rw-r--r-- | internal/file/file_test.go | 86 |
1 files changed, 86 insertions, 0 deletions
diff --git a/internal/file/file_test.go b/internal/file/file_test.go index 726de5a..684a7d8 100644 --- a/internal/file/file_test.go +++ b/internal/file/file_test.go @@ -2,6 +2,8 @@ package file import ( "ior/internal/types" + "strings" + "syscall" "testing" ) @@ -20,3 +22,87 @@ func TestNewFdUnknownFlags(t *testing.T) { t.Errorf("expected unknown flags, got %v", fdFile.Flags()) } } + +func TestNewFdEmptyName(t *testing.T) { + fdFile := NewFd(1, "", 0) + str := fdFile.String() + if !strings.Contains(str, "E:name") { + t.Errorf("expected String() to contain 'E:name' for empty name, got '%s'", str) + } +} + +func TestFlagsIsUnknown(t *testing.T) { + f := unknownFlag + if f.Is(syscall.O_RDONLY) { + t.Errorf("expected Is(O_RDONLY) to be false for unknownFlag") + } + if f.Is(syscall.O_WRONLY) { + t.Errorf("expected Is(O_WRONLY) to be false for unknownFlag") + } + if f.Is(syscall.O_RDWR) { + t.Errorf("expected Is(O_RDWR) to be false for unknownFlag") + } +} + +func TestFlagsStringUnknown(t *testing.T) { + f := Flags(-1) + if f.String() != "O_NONE" { + t.Errorf("expected 'O_NONE' for unknown flags, got '%s'", f.String()) + } +} + +func TestNewOldnameNewnameEmpty(t *testing.T) { + var oldname, newname [128]byte + f := NewOldnameNewname(oldname[:], newname[:]) + if f.Name() != "" { + t.Errorf("expected empty Name(), got '%s'", f.Name()) + } + if !strings.Contains(f.String(), "old:") || !strings.Contains(f.String(), "->new:") { + t.Errorf("expected String() to contain 'old:' and '->new:', got '%s'", f.String()) + } +} + +func TestNewPathnameEmpty(t *testing.T) { + var pathname [128]byte + f := NewPathname(pathname[:]) + if f.Name() != "" { + t.Errorf("expected empty Name(), got '%s'", f.Name()) + } + if !strings.Contains(f.String(), "pathname:") { + t.Errorf("expected String() to contain 'pathname:', got '%s'", f.String()) + } +} + +func TestFdFileSetFlags(t *testing.T) { + fdFile := NewFd(1, "test.txt", 0) + if fdFile.Flags() != Flags(0) { + t.Errorf("expected flags 0, got %v", fdFile.Flags()) + } + fdFile.SetFlags(syscall.O_WRONLY) + if fdFile.Flags() != Flags(syscall.O_WRONLY) { + t.Errorf("expected O_WRONLY after SetFlags, got %v", fdFile.Flags()) + } +} + +func TestFdFileAddFlags(t *testing.T) { + fdFile := NewFd(1, "test.txt", syscall.O_RDWR) + fdFile.AddFlags(syscall.O_APPEND) + expected := Flags(syscall.O_RDWR | syscall.O_APPEND) + if fdFile.Flags() != expected { + t.Errorf("expected O_RDWR|O_APPEND after AddFlags, got %v", fdFile.Flags()) + } +} + +func TestFdFileDup(t *testing.T) { + fdFile := NewFd(1, "original.txt", syscall.O_RDONLY) + duped := fdFile.Dup(42) + if duped.Name() != "original.txt" { + t.Errorf("expected duped name 'original.txt', got '%s'", duped.Name()) + } + if !strings.Contains(duped.String(), "42") { + t.Errorf("expected duped String() to contain fd 42, got '%s'", duped.String()) + } + if strings.Contains(duped.String(), "%(1,") { + t.Errorf("expected duped String() to NOT contain old fd 1, got '%s'", duped.String()) + } +} |
