aboutsummaryrefslogtreecommitdiffhomepage
path: root/internal/uevent/uevent_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/uevent/uevent_test.go')
-rw-r--r--internal/uevent/uevent_test.go58
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) {