diff options
Diffstat (limited to 'container/initdaemon_test.go')
| -rw-r--r-- | container/initdaemon_test.go | 102 |
1 files changed, 102 insertions, 0 deletions
diff --git a/container/initdaemon_test.go b/container/initdaemon_test.go new file mode 100644 index 00000000..5ab834db --- /dev/null +++ b/container/initdaemon_test.go @@ -0,0 +1,102 @@ +package container + +import ( + "os" + "testing" + + "hakurei.app/container/check" + "hakurei.app/container/stub" +) + +func TestDaemonOp(t *testing.T) { + t.Parallel() + + checkSimple(t, "DaemonOp.late", []simpleTestCase{ + {"success", func(k *kstub) error { + state := setupState{Params: &Params{Env: []string{"\x00"}}, Context: t.Context(), Msg: k} + return (&DaemonOp{ + Target: check.MustAbs("/run/user/1971/pulse/native"), + Path: check.MustAbs("/run/current-system/sw/bin/pipewire-pulse"), + Args: []string{"-v"}, + }).late(&state, k) + }, stub.Expect{Calls: []stub.Call{ + call("isVerbose", stub.ExpectArgs{}, true, nil), + call("verbosef", stub.ExpectArgs{"starting %s", []any{`daemon providing "/run/user/1971/pulse/native"`}}, nil, nil), + call("start", stub.ExpectArgs{"/run/current-system/sw/bin/pipewire-pulse", []string{"/run/current-system/sw/bin/pipewire-pulse", "-v"}, []string{"\x00"}, "/"}, &os.Process{Pid: 0xcafe}, nil), + call("New", stub.ExpectArgs{}, nil, nil), + call("stat", stub.ExpectArgs{"/run/user/1971/pulse/native"}, isDirFi(false), os.ErrNotExist), + call("stat", stub.ExpectArgs{"/run/user/1971/pulse/native"}, isDirFi(false), os.ErrNotExist), + call("stat", stub.ExpectArgs{"/run/user/1971/pulse/native"}, isDirFi(false), os.ErrNotExist), + call("stat", stub.ExpectArgs{"/run/user/1971/pulse/native"}, isDirFi(false), nil), + call("verbosef", stub.ExpectArgs{"daemon process %d ready", []any{0xcafe}}, nil, nil), + }, Tracks: []stub.Expect{{Calls: []stub.Call{ + call("wait", stub.ExpectArgs{"/run/current-system/sw/bin/pipewire-pulse", []string{"/run/current-system/sw/bin/pipewire-pulse", "-v"}, []string{"\x00"}, "/"}, uintptr(stub.PanicExit), nil), + }}}}, nil}, + }) + + checkOpsValid(t, []opValidTestCase{ + {"nil", (*DaemonOp)(nil), false}, + {"zero", new(DaemonOp), false}, + {"valid", &DaemonOp{ + Target: check.MustAbs("/run/user/1971/pulse/native"), + Path: check.MustAbs("/run/current-system/sw/bin/pipewire-pulse"), + Args: []string{"-v"}, + }, true}, + }) + + checkOpsBuilder(t, []opsBuilderTestCase{ + {"pipewire-pulse", new(Ops).Daemon( + check.MustAbs("/run/user/1971/pulse/native"), + check.MustAbs("/run/current-system/sw/bin/pipewire-pulse"), "-v", + ), Ops{ + &DaemonOp{ + Target: check.MustAbs("/run/user/1971/pulse/native"), + Path: check.MustAbs("/run/current-system/sw/bin/pipewire-pulse"), + Args: []string{"-v"}, + }, + }}, + }) + + checkOpIs(t, []opIsTestCase{ + {"zero", new(DaemonOp), new(DaemonOp), false}, + + {"args differs", &DaemonOp{ + Target: check.MustAbs("/run/user/1971/pulse/native"), + Path: check.MustAbs("/run/current-system/sw/bin/pipewire-pulse"), + Args: []string{"-v"}, + }, &DaemonOp{ + Target: check.MustAbs("/run/user/1971/pulse/native"), + Path: check.MustAbs("/run/current-system/sw/bin/pipewire-pulse"), + }, false}, + + {"path differs", &DaemonOp{ + Target: check.MustAbs("/run/user/1971/pulse/native"), + Path: check.MustAbs("/run/current-system/sw/bin/pipewire"), + }, &DaemonOp{ + Target: check.MustAbs("/run/user/1971/pulse/native"), + Path: check.MustAbs("/run/current-system/sw/bin/pipewire-pulse"), + }, false}, + + {"target differs", &DaemonOp{ + Target: check.MustAbs("/run/user/65534/pulse/native"), + Path: check.MustAbs("/run/current-system/sw/bin/pipewire-pulse"), + }, &DaemonOp{ + Target: check.MustAbs("/run/user/1971/pulse/native"), + Path: check.MustAbs("/run/current-system/sw/bin/pipewire-pulse"), + }, false}, + + {"equals", &DaemonOp{ + Target: check.MustAbs("/run/user/1971/pulse/native"), + Path: check.MustAbs("/run/current-system/sw/bin/pipewire-pulse"), + }, &DaemonOp{ + Target: check.MustAbs("/run/user/1971/pulse/native"), + Path: check.MustAbs("/run/current-system/sw/bin/pipewire-pulse"), + }, true}, + }) + + checkOpMeta(t, []opMetaTestCase{ + {"pipewire-pulse", &DaemonOp{ + Target: check.MustAbs("/run/user/1971/pulse/native"), + }, zeroString, `daemon providing "/run/user/1971/pulse/native"`}, + }) +} |
