aboutsummaryrefslogtreecommitdiffhomepage
path: root/internal/wayland/conn_test.go
diff options
context:
space:
mode:
authorOphestra <cat@gensokyo.uk>2025-11-19 05:41:29 +0900
committerOphestra <cat@gensokyo.uk>2025-11-19 06:37:04 +0900
commitaab92ce3c1c6649e1a22b00ec999a271e71ef291 (patch)
tree3ccfa205103382e9a4cbc225e71ba9f57ac64f94 /internal/wayland/conn_test.go
parenta495e09a8f11041fb23a9587c0dc9f52513a2937 (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.go16
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)
}