diff options
| author | Ophestra <cat@gensokyo.uk> | 2025-11-19 05:41:29 +0900 |
|---|---|---|
| committer | Ophestra <cat@gensokyo.uk> | 2025-11-19 06:37:04 +0900 |
| commit | aab92ce3c1c6649e1a22b00ec999a271e71ef291 (patch) | |
| tree | 3ccfa205103382e9a4cbc225e71ba9f57ac64f94 /internal/wayland/conn_test.go | |
| parent | a495e09a8f11041fb23a9587c0dc9f52513a2937 (diff) | |
internal/wayland: clean up pathname socket
This is cleaner than cleaning up in internal/system as it covers the failure paths.
Signed-off-by: Ophestra <cat@gensokyo.uk>
Diffstat (limited to 'internal/wayland/conn_test.go')
| -rw-r--r-- | internal/wayland/conn_test.go | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/internal/wayland/conn_test.go b/internal/wayland/conn_test.go index 4be6dbf6..148f077b 100644 --- a/internal/wayland/conn_test.go +++ b/internal/wayland/conn_test.go @@ -3,6 +3,7 @@ package wayland import ( "errors" "os" + "path" "reflect" "syscall" "testing" @@ -11,13 +12,18 @@ import ( ) func TestSecurityContextClose(t *testing.T) { - t.Parallel() + // do not parallel: fd test not thread safe if err := (*SecurityContext)(nil).Close(); !reflect.DeepEqual(err, os.ErrInvalid) { t.Fatalf("Close: error = %v", err) } var ctx SecurityContext + if f, err := os.Create(path.Join(t.TempDir(), "remove")); err != nil { + t.Fatal(err) + } else { + ctx.bindPath = check.MustAbs(f.Name()) + } if err := syscall.Pipe2(ctx.closeFds[0:], syscall.O_CLOEXEC); err != nil { t.Fatalf("Pipe: error = %v", err) } @@ -25,9 +31,15 @@ func TestSecurityContextClose(t *testing.T) { if err := ctx.Close(); err != nil { t.Fatalf("Close: error = %v", err) + } else if _, err = os.Stat(ctx.bindPath.String()); err == nil || !errors.Is(err, os.ErrNotExist) { + t.Fatalf("Did not remove %q", ctx.bindPath) } - wantErr := errors.Join(syscall.EBADF, syscall.EBADF) + wantErr := &Error{Cause: RCleanup, Path: ctx.bindPath.String(), Errno: errors.Join(syscall.EBADF, syscall.EBADF, &os.PathError{ + Op: "remove", + Path: ctx.bindPath.String(), + Err: syscall.ENOENT, + })} if err := ctx.Close(); !reflect.DeepEqual(err, wantErr) { t.Fatalf("Close: error = %#v, want %#v", err, wantErr) } |
