diff options
Diffstat (limited to 'internal/uevent/uevent_test.go')
| -rw-r--r-- | internal/uevent/uevent_test.go | 58 |
1 files changed, 57 insertions, 1 deletions
diff --git a/internal/uevent/uevent_test.go b/internal/uevent/uevent_test.go index 6420eea1..d7d938e4 100644 --- a/internal/uevent/uevent_test.go +++ b/internal/uevent/uevent_test.go @@ -3,8 +3,10 @@ package uevent_test import ( "context" "encoding" + "encoding/hex" "os" "reflect" + "strings" "sync" "syscall" "testing" @@ -23,6 +25,12 @@ func adeT[V any, S interface { *V }](t *testing.T, name string, v V, want string, wantErr, wantErrE error) { t.Helper() + + noEncode := strings.HasSuffix(name, "\x00") + if noEncode { + name = name[:len(name)-1] + } + f := func(t *testing.T) { if name != "" { t.Parallel() @@ -46,6 +54,10 @@ func adeT[V any, S interface { } }) + if noEncode { + return + } + t.Run("encode", func(t *testing.T) { t.Parallel() t.Helper() @@ -114,6 +126,45 @@ func adeB[V any, S interface { } } +func TestUUID(t *testing.T) { + t.Parallel() + + adeT(t, "sample", uevent.UUID{ + 0xfe, 0x4d, 0x7c, 0x9d, + 0xb8, 0xc6, + 0x4a, 0x70, + 0x9e, 0xf1, + 0x3d, 0x8a, 0x58, 0xd1, 0x8e, 0xed, + }, "fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed", nil, nil) + + adeT(t, "auto\x00", uevent.UUID{}, "0", uevent.ErrAutoUUID, nil) + adeT(t, "short\x00", uevent.UUID{}, "1", uevent.UUIDSizeError(1), nil) + + adeT(t, "bad0\x00", uevent.UUID{}, "fe4d7c9\x00-b8c6-4a70-9ef1-3d8a58d18eed", + hex.InvalidByteError(0), nil) + adeT(t, "sep0\x00", uevent.UUID{}, "fe4d7c9d\x00b8c6-4a70-9ef1-3d8a58d18eed", + uevent.UUIDSeparatorError(0), nil) + + adeT(t, "bad1\x00", uevent.UUID{}, "fe4d7c9d-b8c\x00-4a70-9ef1-3d8a58d18eed", + hex.InvalidByteError(0), nil) + adeT(t, "sep1\x00", uevent.UUID{}, "fe4d7c9d-b8c6\x004a70-9ef1-3d8a58d18eed", + uevent.UUIDSeparatorError(0), nil) + + adeT(t, "bad2\x00", uevent.UUID{}, "fe4d7c9d-b8c6-4a7\x00-9ef1-3d8a58d18eed", + hex.InvalidByteError(0), nil) + adeT(t, "sep2\x00", uevent.UUID{}, "fe4d7c9d-b8c6-4a70\x009ef1-3d8a58d18eed", + uevent.UUIDSeparatorError(0), nil) + + adeT(t, "bad3\x00", uevent.UUID{}, "fe4d7c9d-b8c6-4a70-9ef\x00-3d8a58d18eed", + hex.InvalidByteError(0), nil) + adeT(t, "sep3\x00", uevent.UUID{}, "fe4d7c9d-b8c6-4a70-9ef1\x003d8a58d18eed", + uevent.UUIDSeparatorError(0), nil) + + adeT(t, "bad4\x00", uevent.UUID{}, "fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18ee\x00", + hex.InvalidByteError(0), nil) + +} + func TestDialConsume(t *testing.T) { t.Parallel() @@ -157,7 +208,7 @@ func TestDialConsume(t *testing.T) { defer cancel() consume := func(c *uevent.Conn, ctx context.Context) error { - return c.Consume(ctx, fhs.Sys, events, false, func(path string) { + return c.Consume(ctx, fhs.Sys, nil, events, false, func(path string) { t.Log("coldboot visited", path) }, func(err error) bool { t.Log(err) @@ -244,6 +295,11 @@ func TestErrors(t *testing.T) { {"BadPortError", &uevent.BadPortError{ Pid: 1, }, "unexpected message from port id 1 on NETLINK_KOBJECT_UEVENT"}, + + {"UUIDSizeError", uevent.UUIDSizeError(0xbad), + "got 2989 bytes instead of 36"}, + {"UUIDSeparatorError", uevent.UUIDSeparatorError(0xfd), + "invalid UUID separator: U+00FD 'ý'"}, } for _, tc := range testCases { t.Run(tc.name, func(t *testing.T) { |
