aboutsummaryrefslogtreecommitdiffhomepage
path: root/internal/system/xhost_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/system/xhost_test.go')
-rw-r--r--internal/system/xhost_test.go60
1 files changed, 60 insertions, 0 deletions
diff --git a/internal/system/xhost_test.go b/internal/system/xhost_test.go
new file mode 100644
index 00000000..853da651
--- /dev/null
+++ b/internal/system/xhost_test.go
@@ -0,0 +1,60 @@
+package system
+
+import (
+ "testing"
+
+ "hakurei.app/container/stub"
+ "hakurei.app/hst"
+ "hakurei.app/internal/system/xcb"
+)
+
+func TestXHostOp(t *testing.T) {
+ t.Parallel()
+
+ checkOpBehaviour(t, []opBehaviourTestCase{
+ {"xcbChangeHosts revert", 0xbeef, hst.EX11, xhostOp("chronos"), []stub.Call{
+ call("verbosef", stub.ExpectArgs{"inserting entry %s to X11", []any{xhostOp("chronos")}}, nil, nil),
+ call("xcbChangeHosts", stub.ExpectArgs{xcb.HostMode(xcb.HostModeInsert), xcb.Family(xcb.FamilyServerInterpreted), "localuser\x00chronos"}, nil, stub.UniqueError(1)),
+ }, &OpError{Op: "xhost", Err: stub.UniqueError(1)}, nil, nil},
+
+ {"xcbChangeHosts revert", 0xbeef, hst.EX11, xhostOp("chronos"), []stub.Call{
+ call("verbosef", stub.ExpectArgs{"inserting entry %s to X11", []any{xhostOp("chronos")}}, nil, nil),
+ call("xcbChangeHosts", stub.ExpectArgs{xcb.HostMode(xcb.HostModeInsert), xcb.Family(xcb.FamilyServerInterpreted), "localuser\x00chronos"}, nil, nil),
+ }, nil, []stub.Call{
+ call("verbosef", stub.ExpectArgs{"deleting entry %s from X11", []any{xhostOp("chronos")}}, nil, nil),
+ call("xcbChangeHosts", stub.ExpectArgs{xcb.HostMode(xcb.HostModeDelete), xcb.Family(xcb.FamilyServerInterpreted), "localuser\x00chronos"}, nil, stub.UniqueError(0)),
+ }, &OpError{Op: "xhost", Err: stub.UniqueError(0), Revert: true}},
+
+ {"success skip", 0xbeef, 0, xhostOp("chronos"), []stub.Call{
+ call("verbosef", stub.ExpectArgs{"inserting entry %s to X11", []any{xhostOp("chronos")}}, nil, nil),
+ call("xcbChangeHosts", stub.ExpectArgs{xcb.HostMode(xcb.HostModeInsert), xcb.Family(xcb.FamilyServerInterpreted), "localuser\x00chronos"}, nil, nil),
+ }, nil, []stub.Call{
+ call("verbosef", stub.ExpectArgs{"skipping entry %s in X11", []any{xhostOp("chronos")}}, nil, nil),
+ }, nil},
+
+ {"success", 0xbeef, hst.EX11, xhostOp("chronos"), []stub.Call{
+ call("verbosef", stub.ExpectArgs{"inserting entry %s to X11", []any{xhostOp("chronos")}}, nil, nil),
+ call("xcbChangeHosts", stub.ExpectArgs{xcb.HostMode(xcb.HostModeInsert), xcb.Family(xcb.FamilyServerInterpreted), "localuser\x00chronos"}, nil, nil),
+ }, nil, []stub.Call{
+ call("verbosef", stub.ExpectArgs{"deleting entry %s from X11", []any{xhostOp("chronos")}}, nil, nil),
+ call("xcbChangeHosts", stub.ExpectArgs{xcb.HostMode(xcb.HostModeDelete), xcb.Family(xcb.FamilyServerInterpreted), "localuser\x00chronos"}, nil, nil),
+ }, nil},
+ })
+
+ checkOpsBuilder(t, "ChangeHosts", []opsBuilderTestCase{
+ {"xhost", 0xcafe, func(_ *testing.T, sys *I) {
+ sys.ChangeHosts("chronos")
+ }, []Op{
+ xhostOp("chronos"),
+ }, stub.Expect{}},
+ })
+
+ checkOpIs(t, []opIsTestCase{
+ {"differs", xhostOp("kbd"), xhostOp("chronos"), false},
+ {"equals", xhostOp("chronos"), xhostOp("chronos"), true},
+ })
+
+ checkOpMeta(t, []opMetaTestCase{
+ {"xhost", xhostOp("chronos"), hst.EX11, "/tmp/.X11-unix", "SI:localuser:chronos"},
+ })
+}