treewide: fit test untyped int literals in 32-bit
All checks were successful
Test / Create distribution (push) Successful in 34s
Test / Sandbox (push) Successful in 2m17s
Test / Hakurei (push) Successful in 3m15s
Test / Hpkg (push) Successful in 3m56s
Test / Sandbox (race detector) (push) Successful in 4m6s
Test / Hakurei (race detector) (push) Successful in 5m2s
Test / Flake checks (push) Successful in 1m24s
All checks were successful
Test / Create distribution (push) Successful in 34s
Test / Sandbox (push) Successful in 2m17s
Test / Hakurei (push) Successful in 3m15s
Test / Hpkg (push) Successful in 3m56s
Test / Sandbox (race detector) (push) Successful in 4m6s
Test / Hakurei (race detector) (push) Successful in 5m2s
Test / Flake checks (push) Successful in 1m24s
This enables hakurei test suite to run on 32-bit targets. Signed-off-by: Ophestra <cat@gensokyo.uk>
This commit is contained in:
parent
fba201c995
commit
9fd97e71d0
@ -58,8 +58,8 @@ func TestTryIdentifier(t *testing.T) {
|
|||||||
}
|
}
|
||||||
sampleEntry := hst.State{
|
sampleEntry := hst.State{
|
||||||
ID: id,
|
ID: id,
|
||||||
PID: 0xcafebabe,
|
PID: 0xcafe,
|
||||||
ShimPID: 0xdeadbeef,
|
ShimPID: 0xdead,
|
||||||
Config: hst.Template(),
|
Config: hst.Template(),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -22,8 +22,8 @@ var (
|
|||||||
}
|
}
|
||||||
testState = hst.State{
|
testState = hst.State{
|
||||||
ID: testID,
|
ID: testID,
|
||||||
PID: 0xcafebabe,
|
PID: 0xcafe,
|
||||||
ShimPID: 0xdeadbeef,
|
ShimPID: 0xdead,
|
||||||
Config: hst.Template(),
|
Config: hst.Template(),
|
||||||
Time: testAppTime,
|
Time: testAppTime,
|
||||||
}
|
}
|
||||||
@ -154,7 +154,7 @@ Session bus
|
|||||||
`, false},
|
`, false},
|
||||||
|
|
||||||
{"instance", &testState, hst.Template(), false, false, `State
|
{"instance", &testState, hst.Template(), false, false, `State
|
||||||
Instance: 8e2c76b066dabe574cf073bdb46eb5c1 (3405691582 -> 3735928559)
|
Instance: 8e2c76b066dabe574cf073bdb46eb5c1 (51966 -> 57005)
|
||||||
Uptime: 1h2m32s
|
Uptime: 1h2m32s
|
||||||
|
|
||||||
App
|
App
|
||||||
@ -196,7 +196,7 @@ System bus
|
|||||||
{"instance pd", &testState, new(hst.Config), false, false, `Error: configuration missing container state!
|
{"instance pd", &testState, new(hst.Config), false, false, `Error: configuration missing container state!
|
||||||
|
|
||||||
State
|
State
|
||||||
Instance: 8e2c76b066dabe574cf073bdb46eb5c1 (3405691582 -> 3735928559)
|
Instance: 8e2c76b066dabe574cf073bdb46eb5c1 (51966 -> 57005)
|
||||||
Uptime: 1h2m32s
|
Uptime: 1h2m32s
|
||||||
|
|
||||||
App
|
App
|
||||||
@ -209,8 +209,8 @@ App
|
|||||||
`, true},
|
`, true},
|
||||||
{"json instance", &testState, nil, false, true, `{
|
{"json instance", &testState, nil, false, true, `{
|
||||||
"instance": "8e2c76b066dabe574cf073bdb46eb5c1",
|
"instance": "8e2c76b066dabe574cf073bdb46eb5c1",
|
||||||
"pid": 3405691582,
|
"pid": 51966,
|
||||||
"shim_pid": 3735928559,
|
"shim_pid": 57005,
|
||||||
"id": "org.chromium.Chromium",
|
"id": "org.chromium.Chromium",
|
||||||
"enablements": {
|
"enablements": {
|
||||||
"wayland": true,
|
"wayland": true,
|
||||||
@ -544,12 +544,12 @@ func TestPrintPs(t *testing.T) {
|
|||||||
|
|
||||||
{"invalid config", []hst.State{{ID: testID, PID: 1 << 8, Config: new(hst.Config), Time: testAppTime}}, false, false, " Instance PID Application Uptime\n", "check: configuration missing container state\n"},
|
{"invalid config", []hst.State{{ID: testID, PID: 1 << 8, Config: new(hst.Config), Time: testAppTime}}, false, false, " Instance PID Application Uptime\n", "check: configuration missing container state\n"},
|
||||||
|
|
||||||
{"valid", []hst.State{testStateSmall, testState}, false, false, ` Instance PID Application Uptime
|
{"valid", []hst.State{testStateSmall, testState}, false, false, ` Instance PID Application Uptime
|
||||||
4cf073bd 3405691582 9 (org.chromium.Chromium) 1h2m32s
|
4cf073bd 51966 9 (org.chromium.Chromium) 1h2m32s
|
||||||
aaaaaaaa 48879 1 (app.hakurei.aaaaaaaa) 1h2m28s
|
aaaaaaaa 48879 1 (app.hakurei.aaaaaaaa) 1h2m28s
|
||||||
`, ""},
|
`, ""},
|
||||||
{"valid single", []hst.State{testState}, false, false, ` Instance PID Application Uptime
|
{"valid single", []hst.State{testState}, false, false, ` Instance PID Application Uptime
|
||||||
4cf073bd 3405691582 9 (org.chromium.Chromium) 1h2m32s
|
4cf073bd 51966 9 (org.chromium.Chromium) 1h2m32s
|
||||||
`, ""},
|
`, ""},
|
||||||
|
|
||||||
{"valid short", []hst.State{testStateSmall, testState}, true, false, "4cf073bd\naaaaaaaa\n", ""},
|
{"valid short", []hst.State{testStateSmall, testState}, true, false, "4cf073bd\naaaaaaaa\n", ""},
|
||||||
@ -558,8 +558,8 @@ func TestPrintPs(t *testing.T) {
|
|||||||
{"valid json", []hst.State{testState, testStateSmall}, false, true, `[
|
{"valid json", []hst.State{testState, testStateSmall}, false, true, `[
|
||||||
{
|
{
|
||||||
"instance": "8e2c76b066dabe574cf073bdb46eb5c1",
|
"instance": "8e2c76b066dabe574cf073bdb46eb5c1",
|
||||||
"pid": 3405691582,
|
"pid": 51966,
|
||||||
"shim_pid": 3735928559,
|
"shim_pid": 57005,
|
||||||
"id": "org.chromium.Chromium",
|
"id": "org.chromium.Chromium",
|
||||||
"enablements": {
|
"enablements": {
|
||||||
"wayland": true,
|
"wayland": true,
|
||||||
|
|||||||
@ -147,7 +147,7 @@ func TestAbsoluteIs(t *testing.T) {
|
|||||||
|
|
||||||
type sCheck struct {
|
type sCheck struct {
|
||||||
Pathname *Absolute `json:"val"`
|
Pathname *Absolute `json:"val"`
|
||||||
Magic int `json:"magic"`
|
Magic uint64 `json:"magic"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestCodecAbsolute(t *testing.T) {
|
func TestCodecAbsolute(t *testing.T) {
|
||||||
@ -169,19 +169,19 @@ func TestCodecAbsolute(t *testing.T) {
|
|||||||
{"good", MustAbs("/etc"),
|
{"good", MustAbs("/etc"),
|
||||||
nil,
|
nil,
|
||||||
"\t\x7f\x05\x01\x02\xff\x82\x00\x00\x00\b\xff\x80\x00\x04/etc",
|
"\t\x7f\x05\x01\x02\xff\x82\x00\x00\x00\b\xff\x80\x00\x04/etc",
|
||||||
",\xff\x83\x03\x01\x01\x06sCheck\x01\xff\x84\x00\x01\x02\x01\bPathname\x01\xff\x80\x00\x01\x05Magic\x01\x04\x00\x00\x00\t\x7f\x05\x01\x02\xff\x82\x00\x00\x00\x10\xff\x84\x01\x04/etc\x01\xfb\x01\x81\xda\x00\x00\x00",
|
",\xff\x83\x03\x01\x01\x06sCheck\x01\xff\x84\x00\x01\x02\x01\bPathname\x01\xff\x80\x00\x01\x05Magic\x01\x06\x00\x00\x00\t\x7f\x05\x01\x02\xff\x82\x00\x00\x00\x0f\xff\x84\x01\x04/etc\x01\xfc\xc0\xed\x00\x00\x00",
|
||||||
|
|
||||||
`"/etc"`, `{"val":"/etc","magic":3236757504}`},
|
`"/etc"`, `{"val":"/etc","magic":3236757504}`},
|
||||||
{"not absolute", nil,
|
{"not absolute", nil,
|
||||||
&AbsoluteError{Pathname: "etc"},
|
&AbsoluteError{Pathname: "etc"},
|
||||||
"\t\x7f\x05\x01\x02\xff\x82\x00\x00\x00\a\xff\x80\x00\x03etc",
|
"\t\x7f\x05\x01\x02\xff\x82\x00\x00\x00\a\xff\x80\x00\x03etc",
|
||||||
",\xff\x83\x03\x01\x01\x06sCheck\x01\xff\x84\x00\x01\x02\x01\bPathname\x01\xff\x80\x00\x01\x05Magic\x01\x04\x00\x00\x00\t\x7f\x05\x01\x02\xff\x82\x00\x00\x00\x0f\xff\x84\x01\x03etc\x01\xfb\x01\x81\xda\x00\x00\x00",
|
",\xff\x83\x03\x01\x01\x06sCheck\x01\xff\x84\x00\x01\x02\x01\bPathname\x01\xff\x80\x00\x01\x05Magic\x01\x06\x00\x00\x00\t\x7f\x05\x01\x02\xff\x82\x00\x00\x00\x0f\xff\x84\x01\x03etc\x01\xfb\x01\x81\xda\x00\x00\x00",
|
||||||
|
|
||||||
`"etc"`, `{"val":"etc","magic":3236757504}`},
|
`"etc"`, `{"val":"etc","magic":3236757504}`},
|
||||||
{"zero", nil,
|
{"zero", nil,
|
||||||
new(AbsoluteError),
|
new(AbsoluteError),
|
||||||
"\t\x7f\x05\x01\x02\xff\x82\x00\x00\x00\x04\xff\x80\x00\x00",
|
"\t\x7f\x05\x01\x02\xff\x82\x00\x00\x00\x04\xff\x80\x00\x00",
|
||||||
",\xff\x83\x03\x01\x01\x06sCheck\x01\xff\x84\x00\x01\x02\x01\bPathname\x01\xff\x80\x00\x01\x05Magic\x01\x04\x00\x00\x00\t\x7f\x05\x01\x02\xff\x82\x00\x00\x00\f\xff\x84\x01\x00\x01\xfb\x01\x81\xda\x00\x00\x00",
|
",\xff\x83\x03\x01\x01\x06sCheck\x01\xff\x84\x00\x01\x02\x01\bPathname\x01\xff\x80\x00\x01\x05Magic\x01\x06\x00\x00\x00\t\x7f\x05\x01\x02\xff\x82\x00\x00\x00\f\xff\x84\x01\x00\x01\xfb\x01\x81\xda\x00\x00\x00",
|
||||||
`""`, `{"val":"","magic":3236757504}`},
|
`""`, `{"val":"","magic":3236757504}`},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -46,8 +46,8 @@ func TestMessageFromError(t *testing.T) {
|
|||||||
{"state", OpStateError("overlay"),
|
{"state", OpStateError("overlay"),
|
||||||
"impossible overlay state reached", true},
|
"impossible overlay state reached", true},
|
||||||
|
|
||||||
{"vfs parse", &vfs.DecoderError{Op: "parse", Line: 0xdeadbeef, Err: &strconv.NumError{Func: "Atoi", Num: "meow", Err: strconv.ErrSyntax}},
|
{"vfs parse", &vfs.DecoderError{Op: "parse", Line: 0xdead, Err: &strconv.NumError{Func: "Atoi", Num: "meow", Err: strconv.ErrSyntax}},
|
||||||
`cannot parse mountinfo at line 3735928559: numeric field "meow" invalid syntax`, true},
|
`cannot parse mountinfo at line 57005: numeric field "meow" invalid syntax`, true},
|
||||||
|
|
||||||
{"tmpfs", TmpfsSizeError(-1),
|
{"tmpfs", TmpfsSizeError(-1),
|
||||||
"tmpfs size -1 out of bounds", true},
|
"tmpfs size -1 out of bounds", true},
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@ -14,7 +14,8 @@ const (
|
|||||||
LANDLOCK_CREATE_RULESET_VERSION = 1 << iota
|
LANDLOCK_CREATE_RULESET_VERSION = 1 << iota
|
||||||
)
|
)
|
||||||
|
|
||||||
type LandlockAccessFS uintptr
|
// LandlockAccessFS is bitmask of handled filesystem actions.
|
||||||
|
type LandlockAccessFS uint64
|
||||||
|
|
||||||
const (
|
const (
|
||||||
LANDLOCK_ACCESS_FS_EXECUTE LandlockAccessFS = 1 << iota
|
LANDLOCK_ACCESS_FS_EXECUTE LandlockAccessFS = 1 << iota
|
||||||
@ -105,7 +106,8 @@ func (f LandlockAccessFS) String() string {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
type LandlockAccessNet uintptr
|
// LandlockAccessNet is bitmask of handled network actions.
|
||||||
|
type LandlockAccessNet uint64
|
||||||
|
|
||||||
const (
|
const (
|
||||||
LANDLOCK_ACCESS_NET_BIND_TCP LandlockAccessNet = 1 << iota
|
LANDLOCK_ACCESS_NET_BIND_TCP LandlockAccessNet = 1 << iota
|
||||||
@ -140,7 +142,8 @@ func (f LandlockAccessNet) String() string {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
type LandlockScope uintptr
|
// LandlockScope is bitmask of scopes restricting a Landlock domain from accessing outside resources.
|
||||||
|
type LandlockScope uint64
|
||||||
|
|
||||||
const (
|
const (
|
||||||
LANDLOCK_SCOPE_ABSTRACT_UNIX_SOCKET LandlockScope = 1 << iota
|
LANDLOCK_SCOPE_ABSTRACT_UNIX_SOCKET LandlockScope = 1 << iota
|
||||||
@ -175,6 +178,7 @@ func (f LandlockScope) String() string {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// RulesetAttr is equivalent to struct landlock_ruleset_attr.
|
||||||
type RulesetAttr struct {
|
type RulesetAttr struct {
|
||||||
// Bitmask of handled filesystem actions.
|
// Bitmask of handled filesystem actions.
|
||||||
HandledAccessFS LandlockAccessFS
|
HandledAccessFS LandlockAccessFS
|
||||||
|
|||||||
@ -91,24 +91,24 @@ func TestRemount(t *testing.T) {
|
|||||||
return newProcPaths(k, hostPath).remount(nil, "/sysroot/nix", syscall.MS_REC|syscall.MS_RDONLY|syscall.MS_NODEV)
|
return newProcPaths(k, hostPath).remount(nil, "/sysroot/nix", syscall.MS_REC|syscall.MS_RDONLY|syscall.MS_NODEV)
|
||||||
}, stub.Expect{Calls: []stub.Call{
|
}, stub.Expect{Calls: []stub.Call{
|
||||||
call("evalSymlinks", stub.ExpectArgs{"/sysroot/nix"}, "/sysroot/nix", nil),
|
call("evalSymlinks", stub.ExpectArgs{"/sysroot/nix"}, "/sysroot/nix", nil),
|
||||||
call("open", stub.ExpectArgs{"/sysroot/nix", 0x280000, uint32(0)}, 0xdeadbeef, stub.UniqueError(5)),
|
call("open", stub.ExpectArgs{"/sysroot/nix", 0x280000, uint32(0)}, 0xdead, stub.UniqueError(5)),
|
||||||
}}, &os.PathError{Op: "open", Path: "/sysroot/nix", Err: stub.UniqueError(5)}},
|
}}, &os.PathError{Op: "open", Path: "/sysroot/nix", Err: stub.UniqueError(5)}},
|
||||||
|
|
||||||
{"readlink", func(k *kstub) error {
|
{"readlink", func(k *kstub) error {
|
||||||
return newProcPaths(k, hostPath).remount(nil, "/sysroot/nix", syscall.MS_REC|syscall.MS_RDONLY|syscall.MS_NODEV)
|
return newProcPaths(k, hostPath).remount(nil, "/sysroot/nix", syscall.MS_REC|syscall.MS_RDONLY|syscall.MS_NODEV)
|
||||||
}, stub.Expect{Calls: []stub.Call{
|
}, stub.Expect{Calls: []stub.Call{
|
||||||
call("evalSymlinks", stub.ExpectArgs{"/sysroot/nix"}, "/sysroot/nix", nil),
|
call("evalSymlinks", stub.ExpectArgs{"/sysroot/nix"}, "/sysroot/nix", nil),
|
||||||
call("open", stub.ExpectArgs{"/sysroot/nix", 0x280000, uint32(0)}, 0xdeadbeef, nil),
|
call("open", stub.ExpectArgs{"/sysroot/nix", 0x280000, uint32(0)}, 0xdead, nil),
|
||||||
call("readlink", stub.ExpectArgs{"/host/proc/self/fd/3735928559"}, "/sysroot/nix", stub.UniqueError(4)),
|
call("readlink", stub.ExpectArgs{"/host/proc/self/fd/57005"}, "/sysroot/nix", stub.UniqueError(4)),
|
||||||
}}, stub.UniqueError(4)},
|
}}, stub.UniqueError(4)},
|
||||||
|
|
||||||
{"close", func(k *kstub) error {
|
{"close", func(k *kstub) error {
|
||||||
return newProcPaths(k, hostPath).remount(nil, "/sysroot/nix", syscall.MS_REC|syscall.MS_RDONLY|syscall.MS_NODEV)
|
return newProcPaths(k, hostPath).remount(nil, "/sysroot/nix", syscall.MS_REC|syscall.MS_RDONLY|syscall.MS_NODEV)
|
||||||
}, stub.Expect{Calls: []stub.Call{
|
}, stub.Expect{Calls: []stub.Call{
|
||||||
call("evalSymlinks", stub.ExpectArgs{"/sysroot/nix"}, "/sysroot/nix", nil),
|
call("evalSymlinks", stub.ExpectArgs{"/sysroot/nix"}, "/sysroot/nix", nil),
|
||||||
call("open", stub.ExpectArgs{"/sysroot/nix", 0x280000, uint32(0)}, 0xdeadbeef, nil),
|
call("open", stub.ExpectArgs{"/sysroot/nix", 0x280000, uint32(0)}, 0xdead, nil),
|
||||||
call("readlink", stub.ExpectArgs{"/host/proc/self/fd/3735928559"}, "/sysroot/nix", nil),
|
call("readlink", stub.ExpectArgs{"/host/proc/self/fd/57005"}, "/sysroot/nix", nil),
|
||||||
call("close", stub.ExpectArgs{0xdeadbeef}, nil, stub.UniqueError(3)),
|
call("close", stub.ExpectArgs{0xdead}, nil, stub.UniqueError(3)),
|
||||||
}}, &os.PathError{Op: "close", Path: "/sysroot/nix", Err: stub.UniqueError(3)}},
|
}}, &os.PathError{Op: "close", Path: "/sysroot/nix", Err: stub.UniqueError(3)}},
|
||||||
|
|
||||||
{"mountinfo no match", func(k *kstub) error {
|
{"mountinfo no match", func(k *kstub) error {
|
||||||
@ -116,9 +116,9 @@ func TestRemount(t *testing.T) {
|
|||||||
}, stub.Expect{Calls: []stub.Call{
|
}, stub.Expect{Calls: []stub.Call{
|
||||||
call("evalSymlinks", stub.ExpectArgs{"/sysroot/nix"}, "/sysroot/.hakurei", nil),
|
call("evalSymlinks", stub.ExpectArgs{"/sysroot/nix"}, "/sysroot/.hakurei", nil),
|
||||||
call("verbosef", stub.ExpectArgs{"target resolves to %q", []any{"/sysroot/.hakurei"}}, nil, nil),
|
call("verbosef", stub.ExpectArgs{"target resolves to %q", []any{"/sysroot/.hakurei"}}, nil, nil),
|
||||||
call("open", stub.ExpectArgs{"/sysroot/.hakurei", 0x280000, uint32(0)}, 0xdeadbeef, nil),
|
call("open", stub.ExpectArgs{"/sysroot/.hakurei", 0x280000, uint32(0)}, 0xdead, nil),
|
||||||
call("readlink", stub.ExpectArgs{"/host/proc/self/fd/3735928559"}, "/sysroot/.hakurei", nil),
|
call("readlink", stub.ExpectArgs{"/host/proc/self/fd/57005"}, "/sysroot/.hakurei", nil),
|
||||||
call("close", stub.ExpectArgs{0xdeadbeef}, nil, nil),
|
call("close", stub.ExpectArgs{0xdead}, nil, nil),
|
||||||
call("openNew", stub.ExpectArgs{"/host/proc/self/mountinfo"}, newConstFile(sampleMountinfoNix), nil),
|
call("openNew", stub.ExpectArgs{"/host/proc/self/mountinfo"}, newConstFile(sampleMountinfoNix), nil),
|
||||||
}}, &vfs.DecoderError{Op: "unfold", Line: -1, Err: vfs.UnfoldTargetError("/sysroot/.hakurei")}},
|
}}, &vfs.DecoderError{Op: "unfold", Line: -1, Err: vfs.UnfoldTargetError("/sysroot/.hakurei")}},
|
||||||
|
|
||||||
@ -126,9 +126,9 @@ func TestRemount(t *testing.T) {
|
|||||||
return newProcPaths(k, hostPath).remount(nil, "/sysroot/nix", syscall.MS_REC|syscall.MS_RDONLY|syscall.MS_NODEV)
|
return newProcPaths(k, hostPath).remount(nil, "/sysroot/nix", syscall.MS_REC|syscall.MS_RDONLY|syscall.MS_NODEV)
|
||||||
}, stub.Expect{Calls: []stub.Call{
|
}, stub.Expect{Calls: []stub.Call{
|
||||||
call("evalSymlinks", stub.ExpectArgs{"/sysroot/nix"}, "/sysroot/nix", nil),
|
call("evalSymlinks", stub.ExpectArgs{"/sysroot/nix"}, "/sysroot/nix", nil),
|
||||||
call("open", stub.ExpectArgs{"/sysroot/nix", 0x280000, uint32(0)}, 0xdeadbeef, nil),
|
call("open", stub.ExpectArgs{"/sysroot/nix", 0x280000, uint32(0)}, 0xdead, nil),
|
||||||
call("readlink", stub.ExpectArgs{"/host/proc/self/fd/3735928559"}, "/sysroot/nix", nil),
|
call("readlink", stub.ExpectArgs{"/host/proc/self/fd/57005"}, "/sysroot/nix", nil),
|
||||||
call("close", stub.ExpectArgs{0xdeadbeef}, nil, nil),
|
call("close", stub.ExpectArgs{0xdead}, nil, nil),
|
||||||
call("openNew", stub.ExpectArgs{"/host/proc/self/mountinfo"}, newConstFile("\x00"), nil),
|
call("openNew", stub.ExpectArgs{"/host/proc/self/mountinfo"}, newConstFile("\x00"), nil),
|
||||||
}}, &vfs.DecoderError{Op: "parse", Line: 0, Err: vfs.ErrMountInfoFields}},
|
}}, &vfs.DecoderError{Op: "parse", Line: 0, Err: vfs.ErrMountInfoFields}},
|
||||||
|
|
||||||
@ -136,9 +136,9 @@ func TestRemount(t *testing.T) {
|
|||||||
return newProcPaths(k, hostPath).remount(nil, "/sysroot/nix", syscall.MS_REC|syscall.MS_RDONLY|syscall.MS_NODEV)
|
return newProcPaths(k, hostPath).remount(nil, "/sysroot/nix", syscall.MS_REC|syscall.MS_RDONLY|syscall.MS_NODEV)
|
||||||
}, stub.Expect{Calls: []stub.Call{
|
}, stub.Expect{Calls: []stub.Call{
|
||||||
call("evalSymlinks", stub.ExpectArgs{"/sysroot/nix"}, "/sysroot/nix", nil),
|
call("evalSymlinks", stub.ExpectArgs{"/sysroot/nix"}, "/sysroot/nix", nil),
|
||||||
call("open", stub.ExpectArgs{"/sysroot/nix", 0x280000, uint32(0)}, 0xdeadbeef, nil),
|
call("open", stub.ExpectArgs{"/sysroot/nix", 0x280000, uint32(0)}, 0xdead, nil),
|
||||||
call("readlink", stub.ExpectArgs{"/host/proc/self/fd/3735928559"}, "/sysroot/nix", nil),
|
call("readlink", stub.ExpectArgs{"/host/proc/self/fd/57005"}, "/sysroot/nix", nil),
|
||||||
call("close", stub.ExpectArgs{0xdeadbeef}, nil, nil),
|
call("close", stub.ExpectArgs{0xdead}, nil, nil),
|
||||||
call("openNew", stub.ExpectArgs{"/host/proc/self/mountinfo"}, newConstFile(sampleMountinfoNix), nil),
|
call("openNew", stub.ExpectArgs{"/host/proc/self/mountinfo"}, newConstFile(sampleMountinfoNix), nil),
|
||||||
call("mount", stub.ExpectArgs{"none", "/sysroot/nix", "", uintptr(0x209027), ""}, nil, stub.UniqueError(2)),
|
call("mount", stub.ExpectArgs{"none", "/sysroot/nix", "", uintptr(0x209027), ""}, nil, stub.UniqueError(2)),
|
||||||
}}, stub.UniqueError(2)},
|
}}, stub.UniqueError(2)},
|
||||||
@ -147,9 +147,9 @@ func TestRemount(t *testing.T) {
|
|||||||
return newProcPaths(k, hostPath).remount(nil, "/sysroot/nix", syscall.MS_REC|syscall.MS_RDONLY|syscall.MS_NODEV)
|
return newProcPaths(k, hostPath).remount(nil, "/sysroot/nix", syscall.MS_REC|syscall.MS_RDONLY|syscall.MS_NODEV)
|
||||||
}, stub.Expect{Calls: []stub.Call{
|
}, stub.Expect{Calls: []stub.Call{
|
||||||
call("evalSymlinks", stub.ExpectArgs{"/sysroot/nix"}, "/sysroot/nix", nil),
|
call("evalSymlinks", stub.ExpectArgs{"/sysroot/nix"}, "/sysroot/nix", nil),
|
||||||
call("open", stub.ExpectArgs{"/sysroot/nix", 0x280000, uint32(0)}, 0xdeadbeef, nil),
|
call("open", stub.ExpectArgs{"/sysroot/nix", 0x280000, uint32(0)}, 0xdead, nil),
|
||||||
call("readlink", stub.ExpectArgs{"/host/proc/self/fd/3735928559"}, "/sysroot/nix", nil),
|
call("readlink", stub.ExpectArgs{"/host/proc/self/fd/57005"}, "/sysroot/nix", nil),
|
||||||
call("close", stub.ExpectArgs{0xdeadbeef}, nil, nil),
|
call("close", stub.ExpectArgs{0xdead}, nil, nil),
|
||||||
call("openNew", stub.ExpectArgs{"/host/proc/self/mountinfo"}, newConstFile(sampleMountinfoNix), nil),
|
call("openNew", stub.ExpectArgs{"/host/proc/self/mountinfo"}, newConstFile(sampleMountinfoNix), nil),
|
||||||
call("mount", stub.ExpectArgs{"none", "/sysroot/nix", "", uintptr(0x209027), ""}, nil, nil),
|
call("mount", stub.ExpectArgs{"none", "/sysroot/nix", "", uintptr(0x209027), ""}, nil, nil),
|
||||||
call("mount", stub.ExpectArgs{"none", "/sysroot/nix/.ro-store", "", uintptr(0x209027), ""}, nil, stub.UniqueError(1)),
|
call("mount", stub.ExpectArgs{"none", "/sysroot/nix/.ro-store", "", uintptr(0x209027), ""}, nil, stub.UniqueError(1)),
|
||||||
@ -170,9 +170,9 @@ func TestRemount(t *testing.T) {
|
|||||||
return newProcPaths(k, hostPath).remount(nil, "/sysroot/nix", syscall.MS_REC|syscall.MS_RDONLY|syscall.MS_NODEV)
|
return newProcPaths(k, hostPath).remount(nil, "/sysroot/nix", syscall.MS_REC|syscall.MS_RDONLY|syscall.MS_NODEV)
|
||||||
}, stub.Expect{Calls: []stub.Call{
|
}, stub.Expect{Calls: []stub.Call{
|
||||||
call("evalSymlinks", stub.ExpectArgs{"/sysroot/nix"}, "/sysroot/nix", nil),
|
call("evalSymlinks", stub.ExpectArgs{"/sysroot/nix"}, "/sysroot/nix", nil),
|
||||||
call("open", stub.ExpectArgs{"/sysroot/nix", 0x280000, uint32(0)}, 0xdeadbeef, nil),
|
call("open", stub.ExpectArgs{"/sysroot/nix", 0x280000, uint32(0)}, 0xdead, nil),
|
||||||
call("readlink", stub.ExpectArgs{"/host/proc/self/fd/3735928559"}, "/sysroot/nix", nil),
|
call("readlink", stub.ExpectArgs{"/host/proc/self/fd/57005"}, "/sysroot/nix", nil),
|
||||||
call("close", stub.ExpectArgs{0xdeadbeef}, nil, nil),
|
call("close", stub.ExpectArgs{0xdead}, nil, nil),
|
||||||
call("openNew", stub.ExpectArgs{"/host/proc/self/mountinfo"}, newConstFile(sampleMountinfoNix), nil),
|
call("openNew", stub.ExpectArgs{"/host/proc/self/mountinfo"}, newConstFile(sampleMountinfoNix), nil),
|
||||||
call("mount", stub.ExpectArgs{"none", "/sysroot/nix", "", uintptr(0x209027), ""}, nil, nil),
|
call("mount", stub.ExpectArgs{"none", "/sysroot/nix", "", uintptr(0x209027), ""}, nil, nil),
|
||||||
call("mount", stub.ExpectArgs{"none", "/sysroot/nix/.ro-store", "", uintptr(0x209027), ""}, nil, syscall.EACCES),
|
call("mount", stub.ExpectArgs{"none", "/sysroot/nix/.ro-store", "", uintptr(0x209027), ""}, nil, syscall.EACCES),
|
||||||
@ -183,9 +183,9 @@ func TestRemount(t *testing.T) {
|
|||||||
return newProcPaths(k, hostPath).remount(nil, "/sysroot/nix", syscall.MS_RDONLY|syscall.MS_NODEV)
|
return newProcPaths(k, hostPath).remount(nil, "/sysroot/nix", syscall.MS_RDONLY|syscall.MS_NODEV)
|
||||||
}, stub.Expect{Calls: []stub.Call{
|
}, stub.Expect{Calls: []stub.Call{
|
||||||
call("evalSymlinks", stub.ExpectArgs{"/sysroot/nix"}, "/sysroot/nix", nil),
|
call("evalSymlinks", stub.ExpectArgs{"/sysroot/nix"}, "/sysroot/nix", nil),
|
||||||
call("open", stub.ExpectArgs{"/sysroot/nix", 0x280000, uint32(0)}, 0xdeadbeef, nil),
|
call("open", stub.ExpectArgs{"/sysroot/nix", 0x280000, uint32(0)}, 0xdead, nil),
|
||||||
call("readlink", stub.ExpectArgs{"/host/proc/self/fd/3735928559"}, "/sysroot/nix", nil),
|
call("readlink", stub.ExpectArgs{"/host/proc/self/fd/57005"}, "/sysroot/nix", nil),
|
||||||
call("close", stub.ExpectArgs{0xdeadbeef}, nil, nil),
|
call("close", stub.ExpectArgs{0xdead}, nil, nil),
|
||||||
call("openNew", stub.ExpectArgs{"/host/proc/self/mountinfo"}, newConstFile(sampleMountinfoNix), nil),
|
call("openNew", stub.ExpectArgs{"/host/proc/self/mountinfo"}, newConstFile(sampleMountinfoNix), nil),
|
||||||
call("mount", stub.ExpectArgs{"none", "/sysroot/nix", "", uintptr(0x209027), ""}, nil, nil),
|
call("mount", stub.ExpectArgs{"none", "/sysroot/nix", "", uintptr(0x209027), ""}, nil, nil),
|
||||||
}}, nil},
|
}}, nil},
|
||||||
@ -194,9 +194,9 @@ func TestRemount(t *testing.T) {
|
|||||||
return newProcPaths(k, hostPath).remount(nil, "/sysroot/nix", syscall.MS_REC|syscall.MS_RDONLY|syscall.MS_NODEV)
|
return newProcPaths(k, hostPath).remount(nil, "/sysroot/nix", syscall.MS_REC|syscall.MS_RDONLY|syscall.MS_NODEV)
|
||||||
}, stub.Expect{Calls: []stub.Call{
|
}, stub.Expect{Calls: []stub.Call{
|
||||||
call("evalSymlinks", stub.ExpectArgs{"/sysroot/nix"}, "/sysroot/nix", nil),
|
call("evalSymlinks", stub.ExpectArgs{"/sysroot/nix"}, "/sysroot/nix", nil),
|
||||||
call("open", stub.ExpectArgs{"/sysroot/nix", 0x280000, uint32(0)}, 0xdeadbeef, nil),
|
call("open", stub.ExpectArgs{"/sysroot/nix", 0x280000, uint32(0)}, 0xdead, nil),
|
||||||
call("readlink", stub.ExpectArgs{"/host/proc/self/fd/3735928559"}, "/sysroot/nix", nil),
|
call("readlink", stub.ExpectArgs{"/host/proc/self/fd/57005"}, "/sysroot/nix", nil),
|
||||||
call("close", stub.ExpectArgs{0xdeadbeef}, nil, nil),
|
call("close", stub.ExpectArgs{0xdead}, nil, nil),
|
||||||
call("openNew", stub.ExpectArgs{"/host/proc/self/mountinfo"}, newConstFile(sampleMountinfoNix), nil),
|
call("openNew", stub.ExpectArgs{"/host/proc/self/mountinfo"}, newConstFile(sampleMountinfoNix), nil),
|
||||||
call("mount", stub.ExpectArgs{"none", "/sysroot/nix", "", uintptr(0x209027), ""}, nil, nil),
|
call("mount", stub.ExpectArgs{"none", "/sysroot/nix", "", uintptr(0x209027), ""}, nil, nil),
|
||||||
call("mount", stub.ExpectArgs{"none", "/sysroot/nix/.ro-store", "", uintptr(0x209027), ""}, nil, nil),
|
call("mount", stub.ExpectArgs{"none", "/sysroot/nix/.ro-store", "", uintptr(0x209027), ""}, nil, nil),
|
||||||
@ -208,9 +208,9 @@ func TestRemount(t *testing.T) {
|
|||||||
}, stub.Expect{Calls: []stub.Call{
|
}, stub.Expect{Calls: []stub.Call{
|
||||||
call("evalSymlinks", stub.ExpectArgs{"/sysroot/.nix"}, "/sysroot/NIX", nil),
|
call("evalSymlinks", stub.ExpectArgs{"/sysroot/.nix"}, "/sysroot/NIX", nil),
|
||||||
call("verbosef", stub.ExpectArgs{"target resolves to %q", []any{"/sysroot/NIX"}}, nil, nil),
|
call("verbosef", stub.ExpectArgs{"target resolves to %q", []any{"/sysroot/NIX"}}, nil, nil),
|
||||||
call("open", stub.ExpectArgs{"/sysroot/NIX", 0x280000, uint32(0)}, 0xdeadbeef, nil),
|
call("open", stub.ExpectArgs{"/sysroot/NIX", 0x280000, uint32(0)}, 0xdead, nil),
|
||||||
call("readlink", stub.ExpectArgs{"/host/proc/self/fd/3735928559"}, "/sysroot/nix", nil),
|
call("readlink", stub.ExpectArgs{"/host/proc/self/fd/57005"}, "/sysroot/nix", nil),
|
||||||
call("close", stub.ExpectArgs{0xdeadbeef}, nil, nil),
|
call("close", stub.ExpectArgs{0xdead}, nil, nil),
|
||||||
call("openNew", stub.ExpectArgs{"/host/proc/self/mountinfo"}, newConstFile(sampleMountinfoNix), nil),
|
call("openNew", stub.ExpectArgs{"/host/proc/self/mountinfo"}, newConstFile(sampleMountinfoNix), nil),
|
||||||
call("mount", stub.ExpectArgs{"none", "/sysroot/nix", "", uintptr(0x209027), ""}, nil, nil),
|
call("mount", stub.ExpectArgs{"none", "/sysroot/nix", "", uintptr(0x209027), ""}, nil, nil),
|
||||||
call("mount", stub.ExpectArgs{"none", "/sysroot/nix/.ro-store", "", uintptr(0x209027), ""}, nil, nil),
|
call("mount", stub.ExpectArgs{"none", "/sysroot/nix/.ro-store", "", uintptr(0x209027), ""}, nil, nil),
|
||||||
|
|||||||
@ -56,7 +56,7 @@ func TestSetupReceive(t *testing.T) {
|
|||||||
t.Run("setup receive", func(t *testing.T) {
|
t.Run("setup receive", func(t *testing.T) {
|
||||||
check := func(t *testing.T, useNilFdp bool) {
|
check := func(t *testing.T, useNilFdp bool) {
|
||||||
const key = "TEST_SETUP_RECEIVE"
|
const key = "TEST_SETUP_RECEIVE"
|
||||||
payload := []int{syscall.MS_MGC_VAL, syscall.MS_MGC_MSK, syscall.MS_ASYNC, syscall.MS_ACTIVE}
|
payload := []uint64{syscall.MS_MGC_VAL, syscall.MS_MGC_MSK, syscall.MS_ASYNC, syscall.MS_ACTIVE}
|
||||||
|
|
||||||
encoderDone := make(chan error, 1)
|
encoderDone := make(chan error, 1)
|
||||||
extraFiles := make([]*os.File, 0, 1)
|
extraFiles := make([]*os.File, 0, 1)
|
||||||
@ -86,7 +86,7 @@ func TestSetupReceive(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
var (
|
var (
|
||||||
gotPayload []int
|
gotPayload []uint64
|
||||||
fdp *uintptr
|
fdp *uintptr
|
||||||
)
|
)
|
||||||
if !useNilFdp {
|
if !useNilFdp {
|
||||||
|
|||||||
@ -173,8 +173,8 @@ func TestProcPaths(t *testing.T) {
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
t.Run("fd", func(t *testing.T) {
|
t.Run("fd", func(t *testing.T) {
|
||||||
want := "/host/proc/self/fd/9223372036854775807"
|
want := "/host/proc/self/fd/2147483647"
|
||||||
if got := hostProc.fd(math.MaxInt64); got != want {
|
if got := hostProc.fd(math.MaxInt32); got != want {
|
||||||
t.Errorf("stdout: %q, want %q", got, want)
|
t.Errorf("stdout: %q, want %q", got, want)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|||||||
@ -13,7 +13,7 @@ var (
|
|||||||
type UniqueError uintptr
|
type UniqueError uintptr
|
||||||
|
|
||||||
func (e UniqueError) Error() string {
|
func (e UniqueError) Error() string {
|
||||||
return "unique error " + strconv.Itoa(int(e)) + " injected by the test suite"
|
return "unique error " + strconv.FormatUint(uint64(e), 10) + " injected by the test suite"
|
||||||
}
|
}
|
||||||
|
|
||||||
func (e UniqueError) Is(target error) bool {
|
func (e UniqueError) Is(target error) bool {
|
||||||
|
|||||||
@ -3,10 +3,10 @@ package stub
|
|||||||
import "testing"
|
import "testing"
|
||||||
|
|
||||||
// PanicExit is a magic panic value treated as a simulated exit.
|
// PanicExit is a magic panic value treated as a simulated exit.
|
||||||
const PanicExit = 0xdeadbeef
|
const PanicExit = 0xdead
|
||||||
|
|
||||||
const (
|
const (
|
||||||
panicFailNow = 0xcafe0000 + iota
|
panicFailNow = 0xcafe0 + iota
|
||||||
panicFatal
|
panicFatal
|
||||||
panicFatalf
|
panicFatalf
|
||||||
)
|
)
|
||||||
|
|||||||
@ -53,7 +53,7 @@ func TestHandleExit(t *testing.T) {
|
|||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
defer stub.HandleExit(ot)
|
defer stub.HandleExit(ot)
|
||||||
panic(0xcafe0000)
|
panic(0xcafe0)
|
||||||
})
|
})
|
||||||
|
|
||||||
t.Run("Fail", func(t *testing.T) {
|
t.Run("Fail", func(t *testing.T) {
|
||||||
@ -66,7 +66,7 @@ func TestHandleExit(t *testing.T) {
|
|||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
defer handleExitNew(ot)
|
defer handleExitNew(ot)
|
||||||
panic(0xcafe0000)
|
panic(0xcafe0)
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -82,14 +82,14 @@ func TestHandleExit(t *testing.T) {
|
|||||||
t.Parallel()
|
t.Parallel()
|
||||||
|
|
||||||
defer func() {
|
defer func() {
|
||||||
want := 0xcafebabe
|
want := 0xcafe
|
||||||
if r := recover(); r != want {
|
if r := recover(); r != want {
|
||||||
t.Errorf("recover: %v, want %v", r, want)
|
t.Errorf("recover: %v, want %v", r, want)
|
||||||
}
|
}
|
||||||
|
|
||||||
}()
|
}()
|
||||||
defer stub.HandleExit(t)
|
defer stub.HandleExit(t)
|
||||||
panic(0xcafebabe)
|
panic(0xcafe)
|
||||||
})
|
})
|
||||||
|
|
||||||
t.Run("new", func(t *testing.T) {
|
t.Run("new", func(t *testing.T) {
|
||||||
|
|||||||
@ -26,11 +26,11 @@ func TestDecoderError(t *testing.T) {
|
|||||||
target error
|
target error
|
||||||
targetF error
|
targetF error
|
||||||
}{
|
}{
|
||||||
{"errno", &vfs.DecoderError{Op: "parse", Line: 0xdeadbeef, Err: syscall.ENOTRECOVERABLE},
|
{"errno", &vfs.DecoderError{Op: "parse", Line: 0xdead, Err: syscall.ENOTRECOVERABLE},
|
||||||
"parse mountinfo at line 3735928559: state not recoverable", syscall.ENOTRECOVERABLE, syscall.EROFS},
|
"parse mountinfo at line 57005: state not recoverable", syscall.ENOTRECOVERABLE, syscall.EROFS},
|
||||||
|
|
||||||
{"strconv", &vfs.DecoderError{Op: "parse", Line: 0xdeadbeef, Err: &strconv.NumError{Func: "Atoi", Num: "meow", Err: strconv.ErrSyntax}},
|
{"strconv", &vfs.DecoderError{Op: "parse", Line: 0xdead, Err: &strconv.NumError{Func: "Atoi", Num: "meow", Err: strconv.ErrSyntax}},
|
||||||
`parse mountinfo at line 3735928559: numeric field "meow" invalid syntax`, strconv.ErrSyntax, os.ErrInvalid},
|
`parse mountinfo at line 57005: numeric field "meow" invalid syntax`, strconv.ErrSyntax, os.ErrInvalid},
|
||||||
|
|
||||||
{"unfold", &vfs.DecoderError{Op: "unfold", Line: -1, Err: vfs.UnfoldTargetError("/proc/nonexistent")},
|
{"unfold", &vfs.DecoderError{Op: "unfold", Line: -1, Err: vfs.UnfoldTargetError("/proc/nonexistent")},
|
||||||
"unfold mountinfo: mount point /proc/nonexistent never appeared in mountinfo", vfs.UnfoldTargetError("/proc/nonexistent"), os.ErrNotExist},
|
"unfold mountinfo: mount point /proc/nonexistent never appeared in mountinfo", vfs.UnfoldTargetError("/proc/nonexistent"), os.ErrNotExist},
|
||||||
|
|||||||
@ -80,7 +80,7 @@ func TestEnablements(t *testing.T) {
|
|||||||
|
|
||||||
if got, err := json.Marshal(struct {
|
if got, err := json.Marshal(struct {
|
||||||
Value *hst.Enablements `json:"value"`
|
Value *hst.Enablements `json:"value"`
|
||||||
Magic int `json:"magic"`
|
Magic uint64 `json:"magic"`
|
||||||
}{tc.e, syscall.MS_MGC_VAL}); err != nil {
|
}{tc.e, syscall.MS_MGC_VAL}); err != nil {
|
||||||
t.Fatalf("Marshal: error = %v", err)
|
t.Fatalf("Marshal: error = %v", err)
|
||||||
} else if string(got) != tc.sData {
|
} else if string(got) != tc.sData {
|
||||||
@ -108,7 +108,7 @@ func TestEnablements(t *testing.T) {
|
|||||||
{
|
{
|
||||||
got := *(new(struct {
|
got := *(new(struct {
|
||||||
Value *hst.Enablements `json:"value"`
|
Value *hst.Enablements `json:"value"`
|
||||||
Magic int `json:"magic"`
|
Magic uint64 `json:"magic"`
|
||||||
}))
|
}))
|
||||||
if err := json.Unmarshal([]byte(tc.sData), &got); err != nil {
|
if err := json.Unmarshal([]byte(tc.sData), &got); err != nil {
|
||||||
t.Fatalf("Unmarshal: error = %v", err)
|
t.Fatalf("Unmarshal: error = %v", err)
|
||||||
|
|||||||
@ -241,7 +241,7 @@ func (s stubFS) String() string { return "<invalid " + s.typeName + ">"
|
|||||||
|
|
||||||
type sCheck struct {
|
type sCheck struct {
|
||||||
FS hst.FilesystemConfigJSON `json:"fs"`
|
FS hst.FilesystemConfigJSON `json:"fs"`
|
||||||
Magic int `json:"magic"`
|
Magic uint64 `json:"magic"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type fsTestCase struct {
|
type fsTestCase struct {
|
||||||
|
|||||||
10
internal/env/env_test.go
vendored
10
internal/env/env_test.go
vendored
@ -34,9 +34,9 @@ func TestPaths(t *testing.T) {
|
|||||||
TempDir: fhs.AbsTmp,
|
TempDir: fhs.AbsTmp,
|
||||||
}, hst.Paths{
|
}, hst.Paths{
|
||||||
TempDir: fhs.AbsTmp,
|
TempDir: fhs.AbsTmp,
|
||||||
SharePath: fhs.AbsTmp.Append("hakurei.3735928559"),
|
SharePath: fhs.AbsTmp.Append("hakurei.57005"),
|
||||||
RuntimePath: fhs.AbsTmp.Append("hakurei.3735928559/compat"),
|
RuntimePath: fhs.AbsTmp.Append("hakurei.57005/compat"),
|
||||||
RunDirPath: fhs.AbsTmp.Append("hakurei.3735928559/compat/hakurei"),
|
RunDirPath: fhs.AbsTmp.Append("hakurei.57005/compat/hakurei"),
|
||||||
}, ""},
|
}, ""},
|
||||||
|
|
||||||
{"full", &env.Paths{
|
{"full", &env.Paths{
|
||||||
@ -44,7 +44,7 @@ func TestPaths(t *testing.T) {
|
|||||||
RuntimePath: fhs.AbsRunUser.Append("1000"),
|
RuntimePath: fhs.AbsRunUser.Append("1000"),
|
||||||
}, hst.Paths{
|
}, hst.Paths{
|
||||||
TempDir: fhs.AbsTmp,
|
TempDir: fhs.AbsTmp,
|
||||||
SharePath: fhs.AbsTmp.Append("hakurei.3735928559"),
|
SharePath: fhs.AbsTmp.Append("hakurei.57005"),
|
||||||
RuntimePath: fhs.AbsRunUser.Append("1000"),
|
RuntimePath: fhs.AbsRunUser.Append("1000"),
|
||||||
RunDirPath: fhs.AbsRunUser.Append("1000/hakurei"),
|
RunDirPath: fhs.AbsRunUser.Append("1000/hakurei"),
|
||||||
}, ""},
|
}, ""},
|
||||||
@ -61,7 +61,7 @@ func TestPaths(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
var sc hst.Paths
|
var sc hst.Paths
|
||||||
tc.env.Copy(&sc, 0xdeadbeef)
|
tc.env.Copy(&sc, 0xdead)
|
||||||
if !reflect.DeepEqual(&sc, &tc.want) {
|
if !reflect.DeepEqual(&sc, &tc.want) {
|
||||||
t.Errorf("Copy: %#v, want %#v", sc, tc.want)
|
t.Errorf("Copy: %#v, want %#v", sc, tc.want)
|
||||||
}
|
}
|
||||||
|
|||||||
@ -36,7 +36,7 @@ func call(name string, args stub.ExpectArgs, ret any, err error) stub.Call {
|
|||||||
|
|
||||||
const (
|
const (
|
||||||
// checkExpectUid is the uid value used by checkOpBehaviour to initialise [system.I].
|
// checkExpectUid is the uid value used by checkOpBehaviour to initialise [system.I].
|
||||||
checkExpectUid = 0xcafebabe
|
checkExpectUid = 0xcafe
|
||||||
// wantAutoEtcPrefix is the autoetc prefix corresponding to checkExpectInstanceId.
|
// wantAutoEtcPrefix is the autoetc prefix corresponding to checkExpectInstanceId.
|
||||||
wantAutoEtcPrefix = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
|
wantAutoEtcPrefix = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
|
||||||
// wantInstancePrefix is the SharePath corresponding to checkExpectInstanceId.
|
// wantInstancePrefix is the SharePath corresponding to checkExpectInstanceId.
|
||||||
|
|||||||
@ -86,12 +86,12 @@ func (h *Hsu) MustID(msg message.Msg) int {
|
|||||||
msg.Verbose("*"+fallback, err)
|
msg.Verbose("*"+fallback, err)
|
||||||
}
|
}
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
return -0xdeadbeef // not reached
|
return -0xbad // not reached
|
||||||
} else if m, ok := message.GetMessage(err); ok {
|
} else if m, ok := message.GetMessage(err); ok {
|
||||||
log.Fatal(m)
|
log.Fatal(m)
|
||||||
return -0xdeadbeef // not reached
|
return -0xbad // not reached
|
||||||
} else {
|
} else {
|
||||||
log.Fatalln(fallback, err)
|
log.Fatalln(fallback, err)
|
||||||
return -0xdeadbeef // not reached
|
return -0xbad // not reached
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -701,7 +701,7 @@ type stubNixOS struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (k *stubNixOS) getppid() int { return 0xbad }
|
func (k *stubNixOS) getppid() int { return 0xbad }
|
||||||
func (k *stubNixOS) getpid() int { return 0xdeadbeef }
|
func (k *stubNixOS) getpid() int { return 0xdead }
|
||||||
func (k *stubNixOS) getuid() int { return 1971 }
|
func (k *stubNixOS) getuid() int { return 1971 }
|
||||||
func (k *stubNixOS) getgid() int { return 100 }
|
func (k *stubNixOS) getgid() int { return 100 }
|
||||||
|
|
||||||
|
|||||||
@ -127,8 +127,8 @@ func TestEntryData(t *testing.T) {
|
|||||||
func newTemplateState() *hst.State {
|
func newTemplateState() *hst.State {
|
||||||
return &hst.State{
|
return &hst.State{
|
||||||
ID: hst.ID(bytes.Repeat([]byte{0xaa}, len(hst.ID{}))),
|
ID: hst.ID(bytes.Repeat([]byte{0xaa}, len(hst.ID{}))),
|
||||||
PID: 0xcafebabe,
|
PID: 0xcafe,
|
||||||
ShimPID: 0xdeadbeef,
|
ShimPID: 0xdead,
|
||||||
Config: hst.Template(),
|
Config: hst.Template(),
|
||||||
Time: time.Unix(0, 0),
|
Time: time.Unix(0, 0),
|
||||||
}
|
}
|
||||||
|
|||||||
@ -63,7 +63,7 @@ func TestDefaultMsg(t *testing.T) {
|
|||||||
})
|
})
|
||||||
|
|
||||||
t.Run("takeover", func(t *testing.T) {
|
t.Run("takeover", func(t *testing.T) {
|
||||||
l := log.New(io.Discard, "\x00", 0xdeadbeef)
|
l := log.New(io.Discard, "\x00", 0xbeef)
|
||||||
got := message.New(l)
|
got := message.New(l)
|
||||||
|
|
||||||
if logger := got.GetLogger(); logger != l {
|
if logger := got.GetLogger(); logger != l {
|
||||||
|
|||||||
@ -46,7 +46,7 @@ func TestNewAclPathError(t *testing.T) {
|
|||||||
|
|
||||||
{"acl", container.Nonexistent, -13, syscall.ENOTRECOVERABLE,
|
{"acl", container.Nonexistent, -13, syscall.ENOTRECOVERABLE,
|
||||||
&os.PathError{Op: "setfacl", Path: container.Nonexistent, Err: syscall.ENOTRECOVERABLE}},
|
&os.PathError{Op: "setfacl", Path: container.Nonexistent, Err: syscall.ENOTRECOVERABLE}},
|
||||||
{"invalid", container.Nonexistent, -0xdeadbeef, nil,
|
{"invalid", container.Nonexistent, -0xdead, nil,
|
||||||
&os.PathError{Op: "setfacl", Path: container.Nonexistent}},
|
&os.PathError{Op: "setfacl", Path: container.Nonexistent}},
|
||||||
}
|
}
|
||||||
for _, tc := range testCases {
|
for _, tc := range testCases {
|
||||||
|
|||||||
@ -14,52 +14,52 @@ func TestACLUpdateOp(t *testing.T) {
|
|||||||
t.Parallel()
|
t.Parallel()
|
||||||
|
|
||||||
checkOpBehaviour(t, []opBehaviourTestCase{
|
checkOpBehaviour(t, []opBehaviourTestCase{
|
||||||
{"apply aclUpdate", 0xdeadbeef, 0xff,
|
{"apply aclUpdate", 0xbeef, 0xff,
|
||||||
&aclUpdateOp{Process, "/proc/nonexistent", []acl.Perm{acl.Read, acl.Write, acl.Execute}}, []stub.Call{
|
&aclUpdateOp{Process, "/proc/nonexistent", []acl.Perm{acl.Read, acl.Write, acl.Execute}}, []stub.Call{
|
||||||
call("verbose", stub.ExpectArgs{[]any{"applying ACL", &aclUpdateOp{Process, "/proc/nonexistent", []acl.Perm{acl.Read, acl.Write, acl.Execute}}}}, nil, nil),
|
call("verbose", stub.ExpectArgs{[]any{"applying ACL", &aclUpdateOp{Process, "/proc/nonexistent", []acl.Perm{acl.Read, acl.Write, acl.Execute}}}}, nil, nil),
|
||||||
call("aclUpdate", stub.ExpectArgs{"/proc/nonexistent", 0xdeadbeef, []acl.Perm{acl.Read, acl.Write, acl.Execute}}, nil, stub.UniqueError(1)),
|
call("aclUpdate", stub.ExpectArgs{"/proc/nonexistent", 0xbeef, []acl.Perm{acl.Read, acl.Write, acl.Execute}}, nil, stub.UniqueError(1)),
|
||||||
}, &OpError{Op: "acl", Err: stub.UniqueError(1)}, nil, nil},
|
}, &OpError{Op: "acl", Err: stub.UniqueError(1)}, nil, nil},
|
||||||
|
|
||||||
{"revert aclUpdate", 0xdeadbeef, 0xff,
|
{"revert aclUpdate", 0xbeef, 0xff,
|
||||||
&aclUpdateOp{Process, "/proc/nonexistent", []acl.Perm{acl.Read, acl.Write, acl.Execute}}, []stub.Call{
|
&aclUpdateOp{Process, "/proc/nonexistent", []acl.Perm{acl.Read, acl.Write, acl.Execute}}, []stub.Call{
|
||||||
call("verbose", stub.ExpectArgs{[]any{"applying ACL", &aclUpdateOp{Process, "/proc/nonexistent", []acl.Perm{acl.Read, acl.Write, acl.Execute}}}}, nil, nil),
|
call("verbose", stub.ExpectArgs{[]any{"applying ACL", &aclUpdateOp{Process, "/proc/nonexistent", []acl.Perm{acl.Read, acl.Write, acl.Execute}}}}, nil, nil),
|
||||||
call("aclUpdate", stub.ExpectArgs{"/proc/nonexistent", 0xdeadbeef, []acl.Perm{acl.Read, acl.Write, acl.Execute}}, nil, nil),
|
call("aclUpdate", stub.ExpectArgs{"/proc/nonexistent", 0xbeef, []acl.Perm{acl.Read, acl.Write, acl.Execute}}, nil, nil),
|
||||||
}, nil, []stub.Call{
|
}, nil, []stub.Call{
|
||||||
call("verbose", stub.ExpectArgs{[]any{"stripping ACL", &aclUpdateOp{Process, "/proc/nonexistent", []acl.Perm{acl.Read, acl.Write, acl.Execute}}}}, nil, nil),
|
call("verbose", stub.ExpectArgs{[]any{"stripping ACL", &aclUpdateOp{Process, "/proc/nonexistent", []acl.Perm{acl.Read, acl.Write, acl.Execute}}}}, nil, nil),
|
||||||
call("aclUpdate", stub.ExpectArgs{"/proc/nonexistent", 0xdeadbeef, ([]acl.Perm)(nil)}, nil, stub.UniqueError(0)),
|
call("aclUpdate", stub.ExpectArgs{"/proc/nonexistent", 0xbeef, ([]acl.Perm)(nil)}, nil, stub.UniqueError(0)),
|
||||||
}, &OpError{Op: "acl", Err: stub.UniqueError(0), Revert: true}},
|
}, &OpError{Op: "acl", Err: stub.UniqueError(0), Revert: true}},
|
||||||
|
|
||||||
{"success revert skip", 0xdeadbeef, Process,
|
{"success revert skip", 0xbeef, Process,
|
||||||
&aclUpdateOp{User, "/proc/nonexistent", []acl.Perm{acl.Read, acl.Write, acl.Execute}}, []stub.Call{
|
&aclUpdateOp{User, "/proc/nonexistent", []acl.Perm{acl.Read, acl.Write, acl.Execute}}, []stub.Call{
|
||||||
call("verbose", stub.ExpectArgs{[]any{"applying ACL", &aclUpdateOp{User, "/proc/nonexistent", []acl.Perm{acl.Read, acl.Write, acl.Execute}}}}, nil, nil),
|
call("verbose", stub.ExpectArgs{[]any{"applying ACL", &aclUpdateOp{User, "/proc/nonexistent", []acl.Perm{acl.Read, acl.Write, acl.Execute}}}}, nil, nil),
|
||||||
call("aclUpdate", stub.ExpectArgs{"/proc/nonexistent", 0xdeadbeef, []acl.Perm{acl.Read, acl.Write, acl.Execute}}, nil, nil),
|
call("aclUpdate", stub.ExpectArgs{"/proc/nonexistent", 0xbeef, []acl.Perm{acl.Read, acl.Write, acl.Execute}}, nil, nil),
|
||||||
}, nil, []stub.Call{
|
}, nil, []stub.Call{
|
||||||
call("verbose", stub.ExpectArgs{[]any{"skipping ACL", &aclUpdateOp{User, "/proc/nonexistent", []acl.Perm{acl.Read, acl.Write, acl.Execute}}}}, nil, nil),
|
call("verbose", stub.ExpectArgs{[]any{"skipping ACL", &aclUpdateOp{User, "/proc/nonexistent", []acl.Perm{acl.Read, acl.Write, acl.Execute}}}}, nil, nil),
|
||||||
}, nil},
|
}, nil},
|
||||||
|
|
||||||
{"success revert aclUpdate ENOENT", 0xdeadbeef, 0xff,
|
{"success revert aclUpdate ENOENT", 0xbeef, 0xff,
|
||||||
&aclUpdateOp{Process, "/proc/nonexistent", []acl.Perm{acl.Read, acl.Write, acl.Execute}}, []stub.Call{
|
&aclUpdateOp{Process, "/proc/nonexistent", []acl.Perm{acl.Read, acl.Write, acl.Execute}}, []stub.Call{
|
||||||
call("verbose", stub.ExpectArgs{[]any{"applying ACL", &aclUpdateOp{Process, "/proc/nonexistent", []acl.Perm{acl.Read, acl.Write, acl.Execute}}}}, nil, nil),
|
call("verbose", stub.ExpectArgs{[]any{"applying ACL", &aclUpdateOp{Process, "/proc/nonexistent", []acl.Perm{acl.Read, acl.Write, acl.Execute}}}}, nil, nil),
|
||||||
call("aclUpdate", stub.ExpectArgs{"/proc/nonexistent", 0xdeadbeef, []acl.Perm{acl.Read, acl.Write, acl.Execute}}, nil, nil),
|
call("aclUpdate", stub.ExpectArgs{"/proc/nonexistent", 0xbeef, []acl.Perm{acl.Read, acl.Write, acl.Execute}}, nil, nil),
|
||||||
}, nil, []stub.Call{
|
}, nil, []stub.Call{
|
||||||
call("verbose", stub.ExpectArgs{[]any{"stripping ACL", &aclUpdateOp{Process, "/proc/nonexistent", []acl.Perm{acl.Read, acl.Write, acl.Execute}}}}, nil, nil),
|
call("verbose", stub.ExpectArgs{[]any{"stripping ACL", &aclUpdateOp{Process, "/proc/nonexistent", []acl.Perm{acl.Read, acl.Write, acl.Execute}}}}, nil, nil),
|
||||||
call("aclUpdate", stub.ExpectArgs{"/proc/nonexistent", 0xdeadbeef, ([]acl.Perm)(nil)}, nil, &os.PathError{Op: "acl_get_file", Path: "/proc/nonexistent", Err: syscall.ENOENT}),
|
call("aclUpdate", stub.ExpectArgs{"/proc/nonexistent", 0xbeef, ([]acl.Perm)(nil)}, nil, &os.PathError{Op: "acl_get_file", Path: "/proc/nonexistent", Err: syscall.ENOENT}),
|
||||||
call("verbosef", stub.ExpectArgs{"target of ACL %s no longer exists", []any{&aclUpdateOp{Process, "/proc/nonexistent", []acl.Perm{acl.Read, acl.Write, acl.Execute}}}}, nil, nil),
|
call("verbosef", stub.ExpectArgs{"target of ACL %s no longer exists", []any{&aclUpdateOp{Process, "/proc/nonexistent", []acl.Perm{acl.Read, acl.Write, acl.Execute}}}}, nil, nil),
|
||||||
}, nil},
|
}, nil},
|
||||||
|
|
||||||
{"success", 0xdeadbeef, 0xff,
|
{"success", 0xbeef, 0xff,
|
||||||
&aclUpdateOp{Process, "/proc/nonexistent", []acl.Perm{acl.Read, acl.Write, acl.Execute}}, []stub.Call{
|
&aclUpdateOp{Process, "/proc/nonexistent", []acl.Perm{acl.Read, acl.Write, acl.Execute}}, []stub.Call{
|
||||||
call("verbose", stub.ExpectArgs{[]any{"applying ACL", &aclUpdateOp{Process, "/proc/nonexistent", []acl.Perm{acl.Read, acl.Write, acl.Execute}}}}, nil, nil),
|
call("verbose", stub.ExpectArgs{[]any{"applying ACL", &aclUpdateOp{Process, "/proc/nonexistent", []acl.Perm{acl.Read, acl.Write, acl.Execute}}}}, nil, nil),
|
||||||
call("aclUpdate", stub.ExpectArgs{"/proc/nonexistent", 0xdeadbeef, []acl.Perm{acl.Read, acl.Write, acl.Execute}}, nil, nil),
|
call("aclUpdate", stub.ExpectArgs{"/proc/nonexistent", 0xbeef, []acl.Perm{acl.Read, acl.Write, acl.Execute}}, nil, nil),
|
||||||
}, nil, []stub.Call{
|
}, nil, []stub.Call{
|
||||||
call("verbose", stub.ExpectArgs{[]any{"stripping ACL", &aclUpdateOp{Process, "/proc/nonexistent", []acl.Perm{acl.Read, acl.Write, acl.Execute}}}}, nil, nil),
|
call("verbose", stub.ExpectArgs{[]any{"stripping ACL", &aclUpdateOp{Process, "/proc/nonexistent", []acl.Perm{acl.Read, acl.Write, acl.Execute}}}}, nil, nil),
|
||||||
call("aclUpdate", stub.ExpectArgs{"/proc/nonexistent", 0xdeadbeef, ([]acl.Perm)(nil)}, nil, nil),
|
call("aclUpdate", stub.ExpectArgs{"/proc/nonexistent", 0xbeef, ([]acl.Perm)(nil)}, nil, nil),
|
||||||
}, nil},
|
}, nil},
|
||||||
})
|
})
|
||||||
|
|
||||||
checkOpsBuilder(t, "UpdatePermType", []opsBuilderTestCase{
|
checkOpsBuilder(t, "UpdatePermType", []opsBuilderTestCase{
|
||||||
{"simple",
|
{"simple",
|
||||||
0xdeadbeef,
|
0xbeef,
|
||||||
func(_ *testing.T, sys *I) {
|
func(_ *testing.T, sys *I) {
|
||||||
sys.
|
sys.
|
||||||
UpdatePerm(m("/run/user/1971/hakurei"), acl.Execute).
|
UpdatePerm(m("/run/user/1971/hakurei"), acl.Execute).
|
||||||
@ -69,25 +69,25 @@ func TestACLUpdateOp(t *testing.T) {
|
|||||||
&aclUpdateOp{Process, "/tmp/hakurei.0/tmpdir/150", []acl.Perm{acl.Read, acl.Write, acl.Execute}},
|
&aclUpdateOp{Process, "/tmp/hakurei.0/tmpdir/150", []acl.Perm{acl.Read, acl.Write, acl.Execute}},
|
||||||
}, stub.Expect{}},
|
}, stub.Expect{}},
|
||||||
|
|
||||||
{"tmpdirp", 0xdeadbeef, func(_ *testing.T, sys *I) {
|
{"tmpdirp", 0xbeef, func(_ *testing.T, sys *I) {
|
||||||
sys.UpdatePermType(User, m("/tmp/hakurei.0/tmpdir"), acl.Execute)
|
sys.UpdatePermType(User, m("/tmp/hakurei.0/tmpdir"), acl.Execute)
|
||||||
}, []Op{
|
}, []Op{
|
||||||
&aclUpdateOp{User, "/tmp/hakurei.0/tmpdir", []acl.Perm{acl.Execute}},
|
&aclUpdateOp{User, "/tmp/hakurei.0/tmpdir", []acl.Perm{acl.Execute}},
|
||||||
}, stub.Expect{}},
|
}, stub.Expect{}},
|
||||||
|
|
||||||
{"tmpdir", 0xdeadbeef, func(_ *testing.T, sys *I) {
|
{"tmpdir", 0xbeef, func(_ *testing.T, sys *I) {
|
||||||
sys.UpdatePermType(User, m("/tmp/hakurei.0/tmpdir/150"), acl.Read, acl.Write, acl.Execute)
|
sys.UpdatePermType(User, m("/tmp/hakurei.0/tmpdir/150"), acl.Read, acl.Write, acl.Execute)
|
||||||
}, []Op{
|
}, []Op{
|
||||||
&aclUpdateOp{User, "/tmp/hakurei.0/tmpdir/150", []acl.Perm{acl.Read, acl.Write, acl.Execute}},
|
&aclUpdateOp{User, "/tmp/hakurei.0/tmpdir/150", []acl.Perm{acl.Read, acl.Write, acl.Execute}},
|
||||||
}, stub.Expect{}},
|
}, stub.Expect{}},
|
||||||
|
|
||||||
{"share", 0xdeadbeef, func(_ *testing.T, sys *I) {
|
{"share", 0xbeef, func(_ *testing.T, sys *I) {
|
||||||
sys.UpdatePermType(Process, m("/run/user/1971/hakurei/fcb8a12f7c482d183ade8288c3de78b5"), acl.Execute)
|
sys.UpdatePermType(Process, m("/run/user/1971/hakurei/fcb8a12f7c482d183ade8288c3de78b5"), acl.Execute)
|
||||||
}, []Op{
|
}, []Op{
|
||||||
&aclUpdateOp{Process, "/run/user/1971/hakurei/fcb8a12f7c482d183ade8288c3de78b5", []acl.Perm{acl.Execute}},
|
&aclUpdateOp{Process, "/run/user/1971/hakurei/fcb8a12f7c482d183ade8288c3de78b5", []acl.Perm{acl.Execute}},
|
||||||
}, stub.Expect{}},
|
}, stub.Expect{}},
|
||||||
|
|
||||||
{"passwd", 0xdeadbeef, func(_ *testing.T, sys *I) {
|
{"passwd", 0xbeef, func(_ *testing.T, sys *I) {
|
||||||
sys.
|
sys.
|
||||||
UpdatePermType(Process, m("/tmp/hakurei.0/fcb8a12f7c482d183ade8288c3de78b5/passwd"), acl.Read).
|
UpdatePermType(Process, m("/tmp/hakurei.0/fcb8a12f7c482d183ade8288c3de78b5/passwd"), acl.Read).
|
||||||
UpdatePermType(Process, m("/tmp/hakurei.0/fcb8a12f7c482d183ade8288c3de78b5/group"), acl.Read)
|
UpdatePermType(Process, m("/tmp/hakurei.0/fcb8a12f7c482d183ade8288c3de78b5/group"), acl.Read)
|
||||||
@ -96,7 +96,7 @@ func TestACLUpdateOp(t *testing.T) {
|
|||||||
&aclUpdateOp{Process, "/tmp/hakurei.0/fcb8a12f7c482d183ade8288c3de78b5/group", []acl.Perm{acl.Read}},
|
&aclUpdateOp{Process, "/tmp/hakurei.0/fcb8a12f7c482d183ade8288c3de78b5/group", []acl.Perm{acl.Read}},
|
||||||
}, stub.Expect{}},
|
}, stub.Expect{}},
|
||||||
|
|
||||||
{"wayland", 0xdeadbeef, func(_ *testing.T, sys *I) {
|
{"wayland", 0xbeef, func(_ *testing.T, sys *I) {
|
||||||
sys.UpdatePermType(hst.EWayland, m("/run/user/1971/wayland-0"), acl.Read, acl.Write, acl.Execute)
|
sys.UpdatePermType(hst.EWayland, m("/run/user/1971/wayland-0"), acl.Read, acl.Write, acl.Execute)
|
||||||
}, []Op{
|
}, []Op{
|
||||||
&aclUpdateOp{hst.EWayland, "/run/user/1971/wayland-0", []acl.Perm{acl.Read, acl.Write, acl.Execute}},
|
&aclUpdateOp{hst.EWayland, "/run/user/1971/wayland-0", []acl.Perm{acl.Read, acl.Write, acl.Execute}},
|
||||||
|
|||||||
@ -19,7 +19,7 @@ func TestDBusProxyOp(t *testing.T) {
|
|||||||
t.Parallel()
|
t.Parallel()
|
||||||
|
|
||||||
checkOpBehaviour(t, []opBehaviourTestCase{
|
checkOpBehaviour(t, []opBehaviourTestCase{
|
||||||
{"dbusProxyStart", 0xdeadbeef, 0xff, &dbusProxyOp{
|
{"dbusProxyStart", 0xdead, 0xff, &dbusProxyOp{
|
||||||
final: dbusNewFinalSample(4),
|
final: dbusNewFinalSample(4),
|
||||||
out: new(linePrefixWriter), // panics on write
|
out: new(linePrefixWriter), // panics on write
|
||||||
system: true,
|
system: true,
|
||||||
@ -32,7 +32,7 @@ func TestDBusProxyOp(t *testing.T) {
|
|||||||
Msg: "cannot start message bus proxy: unique error 2 injected by the test suite",
|
Msg: "cannot start message bus proxy: unique error 2 injected by the test suite",
|
||||||
}, nil, nil},
|
}, nil, nil},
|
||||||
|
|
||||||
{"dbusProxyWait", 0xdeadbeef, 0xff, &dbusProxyOp{
|
{"dbusProxyWait", 0xdead, 0xff, &dbusProxyOp{
|
||||||
final: dbusNewFinalSample(3),
|
final: dbusNewFinalSample(3),
|
||||||
}, []stub.Call{
|
}, []stub.Call{
|
||||||
call("verbosef", stub.ExpectArgs{"session bus proxy on %q for upstream %q", []any{"/tmp/hakurei.0/99dd71ee2146369514e0d10783368f8f/bus", "unix:path=/run/user/1000/bus"}}, nil, nil),
|
call("verbosef", stub.ExpectArgs{"session bus proxy on %q for upstream %q", []any{"/tmp/hakurei.0/99dd71ee2146369514e0d10783368f8f/bus", "unix:path=/run/user/1000/bus"}}, nil, nil),
|
||||||
@ -48,7 +48,7 @@ func TestDBusProxyOp(t *testing.T) {
|
|||||||
Msg: "message bus proxy error: unique error 1 injected by the test suite",
|
Msg: "message bus proxy error: unique error 1 injected by the test suite",
|
||||||
}},
|
}},
|
||||||
|
|
||||||
{"success dbusProxyWait cancel", 0xdeadbeef, 0xff, &dbusProxyOp{
|
{"success dbusProxyWait cancel", 0xdead, 0xff, &dbusProxyOp{
|
||||||
final: dbusNewFinalSample(2),
|
final: dbusNewFinalSample(2),
|
||||||
system: true,
|
system: true,
|
||||||
}, []stub.Call{
|
}, []stub.Call{
|
||||||
@ -63,7 +63,7 @@ func TestDBusProxyOp(t *testing.T) {
|
|||||||
call("verbose", stub.ExpectArgs{[]any{"message bus proxy canceled upstream"}}, nil, nil),
|
call("verbose", stub.ExpectArgs{[]any{"message bus proxy canceled upstream"}}, nil, nil),
|
||||||
}, nil},
|
}, nil},
|
||||||
|
|
||||||
{"success", 0xdeadbeef, 0xff, &dbusProxyOp{
|
{"success", 0xdead, 0xff, &dbusProxyOp{
|
||||||
final: dbusNewFinalSample(1),
|
final: dbusNewFinalSample(1),
|
||||||
system: true,
|
system: true,
|
||||||
}, []stub.Call{
|
}, []stub.Call{
|
||||||
@ -80,7 +80,7 @@ func TestDBusProxyOp(t *testing.T) {
|
|||||||
})
|
})
|
||||||
|
|
||||||
checkOpsBuilder(t, "ProxyDBus", []opsBuilderTestCase{
|
checkOpsBuilder(t, "ProxyDBus", []opsBuilderTestCase{
|
||||||
{"nil session", 0xcafebabe, func(t *testing.T, sys *I) {
|
{"nil session", 0xcafe, func(t *testing.T, sys *I) {
|
||||||
wantErr := &OpError{
|
wantErr := &OpError{
|
||||||
Op: "dbus", Err: ErrDBusConfig,
|
Op: "dbus", Err: ErrDBusConfig,
|
||||||
Msg: "attempted to create message bus proxy args without session bus config",
|
Msg: "attempted to create message bus proxy args without session bus config",
|
||||||
@ -90,7 +90,7 @@ func TestDBusProxyOp(t *testing.T) {
|
|||||||
}
|
}
|
||||||
}, nil, stub.Expect{}},
|
}, nil, stub.Expect{}},
|
||||||
|
|
||||||
{"dbusFinalise NUL", 0xcafebabe, func(_ *testing.T, sys *I) {
|
{"dbusFinalise NUL", 0xcafe, func(_ *testing.T, sys *I) {
|
||||||
defer func() {
|
defer func() {
|
||||||
want := "message bus proxy configuration contains NUL byte"
|
want := "message bus proxy configuration contains NUL byte"
|
||||||
if r := recover(); r != want {
|
if r := recover(); r != want {
|
||||||
@ -121,7 +121,7 @@ func TestDBusProxyOp(t *testing.T) {
|
|||||||
}, (*dbus.Final)(nil), syscall.EINVAL),
|
}, (*dbus.Final)(nil), syscall.EINVAL),
|
||||||
}}},
|
}}},
|
||||||
|
|
||||||
{"dbusFinalise", 0xcafebabe, func(_ *testing.T, sys *I) {
|
{"dbusFinalise", 0xcafe, func(_ *testing.T, sys *I) {
|
||||||
wantErr := &OpError{
|
wantErr := &OpError{
|
||||||
Op: "dbus", Err: stub.UniqueError(0),
|
Op: "dbus", Err: stub.UniqueError(0),
|
||||||
Msg: "cannot finalise message bus proxy: unique error 0 injected by the test suite",
|
Msg: "cannot finalise message bus proxy: unique error 0 injected by the test suite",
|
||||||
@ -151,7 +151,7 @@ func TestDBusProxyOp(t *testing.T) {
|
|||||||
}, (*dbus.Final)(nil), stub.UniqueError(0)),
|
}, (*dbus.Final)(nil), stub.UniqueError(0)),
|
||||||
}}},
|
}}},
|
||||||
|
|
||||||
{"full", 0xcafebabe, func(_ *testing.T, sys *I) {
|
{"full", 0xcafe, func(_ *testing.T, sys *I) {
|
||||||
sys.MustProxyDBus(
|
sys.MustProxyDBus(
|
||||||
&hst.BusConfig{
|
&hst.BusConfig{
|
||||||
// use impossible value here as an implicit assert that it goes through the stub
|
// use impossible value here as an implicit assert that it goes through the stub
|
||||||
|
|||||||
@ -11,12 +11,12 @@ func TestHardlinkOp(t *testing.T) {
|
|||||||
t.Parallel()
|
t.Parallel()
|
||||||
|
|
||||||
checkOpBehaviour(t, []opBehaviourTestCase{
|
checkOpBehaviour(t, []opBehaviourTestCase{
|
||||||
{"link", 0xdeadbeef, 0xff, &hardlinkOp{hst.EPulse, "/run/user/1000/hakurei/9663730666a44cfc2a81610379e02ed6/pulse", "/run/user/1000/pulse/native"}, []stub.Call{
|
{"link", 0xbeef, 0xff, &hardlinkOp{hst.EPulse, "/run/user/1000/hakurei/9663730666a44cfc2a81610379e02ed6/pulse", "/run/user/1000/pulse/native"}, []stub.Call{
|
||||||
call("verbose", stub.ExpectArgs{[]any{"linking", &hardlinkOp{hst.EPulse, "/run/user/1000/hakurei/9663730666a44cfc2a81610379e02ed6/pulse", "/run/user/1000/pulse/native"}}}, nil, nil),
|
call("verbose", stub.ExpectArgs{[]any{"linking", &hardlinkOp{hst.EPulse, "/run/user/1000/hakurei/9663730666a44cfc2a81610379e02ed6/pulse", "/run/user/1000/pulse/native"}}}, nil, nil),
|
||||||
call("link", stub.ExpectArgs{"/run/user/1000/pulse/native", "/run/user/1000/hakurei/9663730666a44cfc2a81610379e02ed6/pulse"}, nil, stub.UniqueError(1)),
|
call("link", stub.ExpectArgs{"/run/user/1000/pulse/native", "/run/user/1000/hakurei/9663730666a44cfc2a81610379e02ed6/pulse"}, nil, stub.UniqueError(1)),
|
||||||
}, &OpError{Op: "hardlink", Err: stub.UniqueError(1)}, nil, nil},
|
}, &OpError{Op: "hardlink", Err: stub.UniqueError(1)}, nil, nil},
|
||||||
|
|
||||||
{"remove", 0xdeadbeef, 0xff, &hardlinkOp{hst.EPulse, "/run/user/1000/hakurei/9663730666a44cfc2a81610379e02ed6/pulse", "/run/user/1000/pulse/native"}, []stub.Call{
|
{"remove", 0xbeef, 0xff, &hardlinkOp{hst.EPulse, "/run/user/1000/hakurei/9663730666a44cfc2a81610379e02ed6/pulse", "/run/user/1000/pulse/native"}, []stub.Call{
|
||||||
call("verbose", stub.ExpectArgs{[]any{"linking", &hardlinkOp{hst.EPulse, "/run/user/1000/hakurei/9663730666a44cfc2a81610379e02ed6/pulse", "/run/user/1000/pulse/native"}}}, nil, nil),
|
call("verbose", stub.ExpectArgs{[]any{"linking", &hardlinkOp{hst.EPulse, "/run/user/1000/hakurei/9663730666a44cfc2a81610379e02ed6/pulse", "/run/user/1000/pulse/native"}}}, nil, nil),
|
||||||
call("link", stub.ExpectArgs{"/run/user/1000/pulse/native", "/run/user/1000/hakurei/9663730666a44cfc2a81610379e02ed6/pulse"}, nil, nil),
|
call("link", stub.ExpectArgs{"/run/user/1000/pulse/native", "/run/user/1000/hakurei/9663730666a44cfc2a81610379e02ed6/pulse"}, nil, nil),
|
||||||
}, nil, []stub.Call{
|
}, nil, []stub.Call{
|
||||||
@ -24,14 +24,14 @@ func TestHardlinkOp(t *testing.T) {
|
|||||||
call("remove", stub.ExpectArgs{"/run/user/1000/hakurei/9663730666a44cfc2a81610379e02ed6/pulse"}, nil, stub.UniqueError(0)),
|
call("remove", stub.ExpectArgs{"/run/user/1000/hakurei/9663730666a44cfc2a81610379e02ed6/pulse"}, nil, stub.UniqueError(0)),
|
||||||
}, &OpError{Op: "hardlink", Err: stub.UniqueError(0), Revert: true}},
|
}, &OpError{Op: "hardlink", Err: stub.UniqueError(0), Revert: true}},
|
||||||
|
|
||||||
{"success skip", 0xdeadbeef, hst.EWayland | hst.EX11, &hardlinkOp{hst.EPulse, "/run/user/1000/hakurei/9663730666a44cfc2a81610379e02ed6/pulse", "/run/user/1000/pulse/native"}, []stub.Call{
|
{"success skip", 0xbeef, hst.EWayland | hst.EX11, &hardlinkOp{hst.EPulse, "/run/user/1000/hakurei/9663730666a44cfc2a81610379e02ed6/pulse", "/run/user/1000/pulse/native"}, []stub.Call{
|
||||||
call("verbose", stub.ExpectArgs{[]any{"linking", &hardlinkOp{hst.EPulse, "/run/user/1000/hakurei/9663730666a44cfc2a81610379e02ed6/pulse", "/run/user/1000/pulse/native"}}}, nil, nil),
|
call("verbose", stub.ExpectArgs{[]any{"linking", &hardlinkOp{hst.EPulse, "/run/user/1000/hakurei/9663730666a44cfc2a81610379e02ed6/pulse", "/run/user/1000/pulse/native"}}}, nil, nil),
|
||||||
call("link", stub.ExpectArgs{"/run/user/1000/pulse/native", "/run/user/1000/hakurei/9663730666a44cfc2a81610379e02ed6/pulse"}, nil, nil),
|
call("link", stub.ExpectArgs{"/run/user/1000/pulse/native", "/run/user/1000/hakurei/9663730666a44cfc2a81610379e02ed6/pulse"}, nil, nil),
|
||||||
}, nil, []stub.Call{
|
}, nil, []stub.Call{
|
||||||
call("verbosef", stub.ExpectArgs{"skipping hard link %q", []any{"/run/user/1000/hakurei/9663730666a44cfc2a81610379e02ed6/pulse"}}, nil, nil),
|
call("verbosef", stub.ExpectArgs{"skipping hard link %q", []any{"/run/user/1000/hakurei/9663730666a44cfc2a81610379e02ed6/pulse"}}, nil, nil),
|
||||||
}, nil},
|
}, nil},
|
||||||
|
|
||||||
{"success", 0xdeadbeef, 0xff, &hardlinkOp{hst.EPulse, "/run/user/1000/hakurei/9663730666a44cfc2a81610379e02ed6/pulse", "/run/user/1000/pulse/native"}, []stub.Call{
|
{"success", 0xbeef, 0xff, &hardlinkOp{hst.EPulse, "/run/user/1000/hakurei/9663730666a44cfc2a81610379e02ed6/pulse", "/run/user/1000/pulse/native"}, []stub.Call{
|
||||||
call("verbose", stub.ExpectArgs{[]any{"linking", &hardlinkOp{hst.EPulse, "/run/user/1000/hakurei/9663730666a44cfc2a81610379e02ed6/pulse", "/run/user/1000/pulse/native"}}}, nil, nil),
|
call("verbose", stub.ExpectArgs{[]any{"linking", &hardlinkOp{hst.EPulse, "/run/user/1000/hakurei/9663730666a44cfc2a81610379e02ed6/pulse", "/run/user/1000/pulse/native"}}}, nil, nil),
|
||||||
call("link", stub.ExpectArgs{"/run/user/1000/pulse/native", "/run/user/1000/hakurei/9663730666a44cfc2a81610379e02ed6/pulse"}, nil, nil),
|
call("link", stub.ExpectArgs{"/run/user/1000/pulse/native", "/run/user/1000/hakurei/9663730666a44cfc2a81610379e02ed6/pulse"}, nil, nil),
|
||||||
}, nil, []stub.Call{
|
}, nil, []stub.Call{
|
||||||
@ -41,13 +41,13 @@ func TestHardlinkOp(t *testing.T) {
|
|||||||
})
|
})
|
||||||
|
|
||||||
checkOpsBuilder(t, "LinkFileType", []opsBuilderTestCase{
|
checkOpsBuilder(t, "LinkFileType", []opsBuilderTestCase{
|
||||||
{"type", 0xcafebabe, func(_ *testing.T, sys *I) {
|
{"type", 0xcafe, func(_ *testing.T, sys *I) {
|
||||||
sys.LinkFileType(User, m("/run/user/1000/pulse/native"), m("/run/user/1000/hakurei/9663730666a44cfc2a81610379e02ed6/pulse"))
|
sys.LinkFileType(User, m("/run/user/1000/pulse/native"), m("/run/user/1000/hakurei/9663730666a44cfc2a81610379e02ed6/pulse"))
|
||||||
}, []Op{
|
}, []Op{
|
||||||
&hardlinkOp{User, "/run/user/1000/hakurei/9663730666a44cfc2a81610379e02ed6/pulse", "/run/user/1000/pulse/native"},
|
&hardlinkOp{User, "/run/user/1000/hakurei/9663730666a44cfc2a81610379e02ed6/pulse", "/run/user/1000/pulse/native"},
|
||||||
}, stub.Expect{}},
|
}, stub.Expect{}},
|
||||||
|
|
||||||
{"link", 0xcafebabe, func(_ *testing.T, sys *I) {
|
{"link", 0xcafe, func(_ *testing.T, sys *I) {
|
||||||
sys.Link(m("/run/user/1000/pulse/native"), m("/run/user/1000/hakurei/9663730666a44cfc2a81610379e02ed6/pulse"))
|
sys.Link(m("/run/user/1000/pulse/native"), m("/run/user/1000/hakurei/9663730666a44cfc2a81610379e02ed6/pulse"))
|
||||||
}, []Op{
|
}, []Op{
|
||||||
&hardlinkOp{Process, "/run/user/1000/hakurei/9663730666a44cfc2a81610379e02ed6/pulse", "/run/user/1000/pulse/native"},
|
&hardlinkOp{Process, "/run/user/1000/hakurei/9663730666a44cfc2a81610379e02ed6/pulse", "/run/user/1000/pulse/native"},
|
||||||
|
|||||||
@ -11,18 +11,18 @@ func TestMkdirOp(t *testing.T) {
|
|||||||
t.Parallel()
|
t.Parallel()
|
||||||
|
|
||||||
checkOpBehaviour(t, []opBehaviourTestCase{
|
checkOpBehaviour(t, []opBehaviourTestCase{
|
||||||
{"mkdir", 0xdeadbeef, 0xff, &mkdirOp{User, "/tmp/hakurei.0/f2f3bcd492d0266438fa9bf164fe90d9", 0711, false}, []stub.Call{
|
{"mkdir", 0xbeef, 0xff, &mkdirOp{User, "/tmp/hakurei.0/f2f3bcd492d0266438fa9bf164fe90d9", 0711, false}, []stub.Call{
|
||||||
call("verbose", stub.ExpectArgs{[]any{"ensuring directory", &mkdirOp{User, "/tmp/hakurei.0/f2f3bcd492d0266438fa9bf164fe90d9", 0711, false}}}, nil, nil),
|
call("verbose", stub.ExpectArgs{[]any{"ensuring directory", &mkdirOp{User, "/tmp/hakurei.0/f2f3bcd492d0266438fa9bf164fe90d9", 0711, false}}}, nil, nil),
|
||||||
call("mkdir", stub.ExpectArgs{"/tmp/hakurei.0/f2f3bcd492d0266438fa9bf164fe90d9", os.FileMode(0711)}, nil, stub.UniqueError(2)),
|
call("mkdir", stub.ExpectArgs{"/tmp/hakurei.0/f2f3bcd492d0266438fa9bf164fe90d9", os.FileMode(0711)}, nil, stub.UniqueError(2)),
|
||||||
}, &OpError{Op: "mkdir", Err: stub.UniqueError(2)}, nil, nil},
|
}, &OpError{Op: "mkdir", Err: stub.UniqueError(2)}, nil, nil},
|
||||||
|
|
||||||
{"chmod", 0xdeadbeef, 0xff, &mkdirOp{User, "/tmp/hakurei.0/f2f3bcd492d0266438fa9bf164fe90d9", 0711, false}, []stub.Call{
|
{"chmod", 0xbeef, 0xff, &mkdirOp{User, "/tmp/hakurei.0/f2f3bcd492d0266438fa9bf164fe90d9", 0711, false}, []stub.Call{
|
||||||
call("verbose", stub.ExpectArgs{[]any{"ensuring directory", &mkdirOp{User, "/tmp/hakurei.0/f2f3bcd492d0266438fa9bf164fe90d9", 0711, false}}}, nil, nil),
|
call("verbose", stub.ExpectArgs{[]any{"ensuring directory", &mkdirOp{User, "/tmp/hakurei.0/f2f3bcd492d0266438fa9bf164fe90d9", 0711, false}}}, nil, nil),
|
||||||
call("mkdir", stub.ExpectArgs{"/tmp/hakurei.0/f2f3bcd492d0266438fa9bf164fe90d9", os.FileMode(0711)}, nil, os.ErrExist),
|
call("mkdir", stub.ExpectArgs{"/tmp/hakurei.0/f2f3bcd492d0266438fa9bf164fe90d9", os.FileMode(0711)}, nil, os.ErrExist),
|
||||||
call("chmod", stub.ExpectArgs{"/tmp/hakurei.0/f2f3bcd492d0266438fa9bf164fe90d9", os.FileMode(0711)}, nil, stub.UniqueError(1)),
|
call("chmod", stub.ExpectArgs{"/tmp/hakurei.0/f2f3bcd492d0266438fa9bf164fe90d9", os.FileMode(0711)}, nil, stub.UniqueError(1)),
|
||||||
}, &OpError{Op: "mkdir", Err: stub.UniqueError(1)}, nil, nil},
|
}, &OpError{Op: "mkdir", Err: stub.UniqueError(1)}, nil, nil},
|
||||||
|
|
||||||
{"remove", 0xdeadbeef, 0xff, &mkdirOp{Process, "/tmp/hakurei.0/f2f3bcd492d0266438fa9bf164fe90d9", 0711, true}, []stub.Call{
|
{"remove", 0xbeef, 0xff, &mkdirOp{Process, "/tmp/hakurei.0/f2f3bcd492d0266438fa9bf164fe90d9", 0711, true}, []stub.Call{
|
||||||
call("verbose", stub.ExpectArgs{[]any{"ensuring directory", &mkdirOp{Process, "/tmp/hakurei.0/f2f3bcd492d0266438fa9bf164fe90d9", 0711, true}}}, nil, nil),
|
call("verbose", stub.ExpectArgs{[]any{"ensuring directory", &mkdirOp{Process, "/tmp/hakurei.0/f2f3bcd492d0266438fa9bf164fe90d9", 0711, true}}}, nil, nil),
|
||||||
call("mkdir", stub.ExpectArgs{"/tmp/hakurei.0/f2f3bcd492d0266438fa9bf164fe90d9", os.FileMode(0711)}, nil, nil),
|
call("mkdir", stub.ExpectArgs{"/tmp/hakurei.0/f2f3bcd492d0266438fa9bf164fe90d9", os.FileMode(0711)}, nil, nil),
|
||||||
}, nil, []stub.Call{
|
}, nil, []stub.Call{
|
||||||
@ -30,25 +30,25 @@ func TestMkdirOp(t *testing.T) {
|
|||||||
call("remove", stub.ExpectArgs{"/tmp/hakurei.0/f2f3bcd492d0266438fa9bf164fe90d9"}, nil, stub.UniqueError(0)),
|
call("remove", stub.ExpectArgs{"/tmp/hakurei.0/f2f3bcd492d0266438fa9bf164fe90d9"}, nil, stub.UniqueError(0)),
|
||||||
}, &OpError{Op: "mkdir", Err: stub.UniqueError(0), Revert: true}},
|
}, &OpError{Op: "mkdir", Err: stub.UniqueError(0), Revert: true}},
|
||||||
|
|
||||||
{"success exist chmod", 0xdeadbeef, 0xff, &mkdirOp{User, "/tmp/hakurei.0/f2f3bcd492d0266438fa9bf164fe90d9", 0711, false}, []stub.Call{
|
{"success exist chmod", 0xbeef, 0xff, &mkdirOp{User, "/tmp/hakurei.0/f2f3bcd492d0266438fa9bf164fe90d9", 0711, false}, []stub.Call{
|
||||||
call("verbose", stub.ExpectArgs{[]any{"ensuring directory", &mkdirOp{User, "/tmp/hakurei.0/f2f3bcd492d0266438fa9bf164fe90d9", 0711, false}}}, nil, nil),
|
call("verbose", stub.ExpectArgs{[]any{"ensuring directory", &mkdirOp{User, "/tmp/hakurei.0/f2f3bcd492d0266438fa9bf164fe90d9", 0711, false}}}, nil, nil),
|
||||||
call("mkdir", stub.ExpectArgs{"/tmp/hakurei.0/f2f3bcd492d0266438fa9bf164fe90d9", os.FileMode(0711)}, nil, os.ErrExist),
|
call("mkdir", stub.ExpectArgs{"/tmp/hakurei.0/f2f3bcd492d0266438fa9bf164fe90d9", os.FileMode(0711)}, nil, os.ErrExist),
|
||||||
call("chmod", stub.ExpectArgs{"/tmp/hakurei.0/f2f3bcd492d0266438fa9bf164fe90d9", os.FileMode(0711)}, nil, nil),
|
call("chmod", stub.ExpectArgs{"/tmp/hakurei.0/f2f3bcd492d0266438fa9bf164fe90d9", os.FileMode(0711)}, nil, nil),
|
||||||
}, nil, nil, nil},
|
}, nil, nil, nil},
|
||||||
|
|
||||||
{"success ensure", 0xdeadbeef, 0xff, &mkdirOp{User, "/tmp/hakurei.0/f2f3bcd492d0266438fa9bf164fe90d9", 0711, false}, []stub.Call{
|
{"success ensure", 0xbeef, 0xff, &mkdirOp{User, "/tmp/hakurei.0/f2f3bcd492d0266438fa9bf164fe90d9", 0711, false}, []stub.Call{
|
||||||
call("verbose", stub.ExpectArgs{[]any{"ensuring directory", &mkdirOp{User, "/tmp/hakurei.0/f2f3bcd492d0266438fa9bf164fe90d9", 0711, false}}}, nil, nil),
|
call("verbose", stub.ExpectArgs{[]any{"ensuring directory", &mkdirOp{User, "/tmp/hakurei.0/f2f3bcd492d0266438fa9bf164fe90d9", 0711, false}}}, nil, nil),
|
||||||
call("mkdir", stub.ExpectArgs{"/tmp/hakurei.0/f2f3bcd492d0266438fa9bf164fe90d9", os.FileMode(0711)}, nil, nil),
|
call("mkdir", stub.ExpectArgs{"/tmp/hakurei.0/f2f3bcd492d0266438fa9bf164fe90d9", os.FileMode(0711)}, nil, nil),
|
||||||
}, nil, nil, nil},
|
}, nil, nil, nil},
|
||||||
|
|
||||||
{"success skip", 0xdeadbeef, 0xff, &mkdirOp{User, "/tmp/hakurei.0/f2f3bcd492d0266438fa9bf164fe90d9", 0711, true}, []stub.Call{
|
{"success skip", 0xbeef, 0xff, &mkdirOp{User, "/tmp/hakurei.0/f2f3bcd492d0266438fa9bf164fe90d9", 0711, true}, []stub.Call{
|
||||||
call("verbose", stub.ExpectArgs{[]any{"ensuring directory", &mkdirOp{User, "/tmp/hakurei.0/f2f3bcd492d0266438fa9bf164fe90d9", 0711, true}}}, nil, nil),
|
call("verbose", stub.ExpectArgs{[]any{"ensuring directory", &mkdirOp{User, "/tmp/hakurei.0/f2f3bcd492d0266438fa9bf164fe90d9", 0711, true}}}, nil, nil),
|
||||||
call("mkdir", stub.ExpectArgs{"/tmp/hakurei.0/f2f3bcd492d0266438fa9bf164fe90d9", os.FileMode(0711)}, nil, nil),
|
call("mkdir", stub.ExpectArgs{"/tmp/hakurei.0/f2f3bcd492d0266438fa9bf164fe90d9", os.FileMode(0711)}, nil, nil),
|
||||||
}, nil, []stub.Call{
|
}, nil, []stub.Call{
|
||||||
call("verbose", stub.ExpectArgs{[]any{"skipping ephemeral directory", &mkdirOp{User, "/tmp/hakurei.0/f2f3bcd492d0266438fa9bf164fe90d9", 0711, true}}}, nil, nil),
|
call("verbose", stub.ExpectArgs{[]any{"skipping ephemeral directory", &mkdirOp{User, "/tmp/hakurei.0/f2f3bcd492d0266438fa9bf164fe90d9", 0711, true}}}, nil, nil),
|
||||||
}, nil},
|
}, nil},
|
||||||
|
|
||||||
{"success", 0xdeadbeef, 0xff, &mkdirOp{Process, "/tmp/hakurei.0/f2f3bcd492d0266438fa9bf164fe90d9", 0711, true}, []stub.Call{
|
{"success", 0xbeef, 0xff, &mkdirOp{Process, "/tmp/hakurei.0/f2f3bcd492d0266438fa9bf164fe90d9", 0711, true}, []stub.Call{
|
||||||
call("verbose", stub.ExpectArgs{[]any{"ensuring directory", &mkdirOp{Process, "/tmp/hakurei.0/f2f3bcd492d0266438fa9bf164fe90d9", 0711, true}}}, nil, nil),
|
call("verbose", stub.ExpectArgs{[]any{"ensuring directory", &mkdirOp{Process, "/tmp/hakurei.0/f2f3bcd492d0266438fa9bf164fe90d9", 0711, true}}}, nil, nil),
|
||||||
call("mkdir", stub.ExpectArgs{"/tmp/hakurei.0/f2f3bcd492d0266438fa9bf164fe90d9", os.FileMode(0711)}, nil, nil),
|
call("mkdir", stub.ExpectArgs{"/tmp/hakurei.0/f2f3bcd492d0266438fa9bf164fe90d9", os.FileMode(0711)}, nil, nil),
|
||||||
}, nil, []stub.Call{
|
}, nil, []stub.Call{
|
||||||
@ -58,13 +58,13 @@ func TestMkdirOp(t *testing.T) {
|
|||||||
})
|
})
|
||||||
|
|
||||||
checkOpsBuilder(t, "EnsureEphemeral", []opsBuilderTestCase{
|
checkOpsBuilder(t, "EnsureEphemeral", []opsBuilderTestCase{
|
||||||
{"ensure", 0xcafebabe, func(_ *testing.T, sys *I) {
|
{"ensure", 0xcafe, func(_ *testing.T, sys *I) {
|
||||||
sys.Ensure(m("/tmp/hakurei.0"), 0700)
|
sys.Ensure(m("/tmp/hakurei.0"), 0700)
|
||||||
}, []Op{
|
}, []Op{
|
||||||
&mkdirOp{User, "/tmp/hakurei.0", 0700, false},
|
&mkdirOp{User, "/tmp/hakurei.0", 0700, false},
|
||||||
}, stub.Expect{}},
|
}, stub.Expect{}},
|
||||||
|
|
||||||
{"ephemeral", 0xcafebabe, func(_ *testing.T, sys *I) {
|
{"ephemeral", 0xcafe, func(_ *testing.T, sys *I) {
|
||||||
sys.Ephemeral(Process, m("/tmp/hakurei.0/f2f3bcd492d0266438fa9bf164fe90d9"), 0711)
|
sys.Ephemeral(Process, m("/tmp/hakurei.0/f2f3bcd492d0266438fa9bf164fe90d9"), 0711)
|
||||||
}, []Op{
|
}, []Op{
|
||||||
&mkdirOp{Process, "/tmp/hakurei.0/f2f3bcd492d0266438fa9bf164fe90d9", 0711, true},
|
&mkdirOp{Process, "/tmp/hakurei.0/f2f3bcd492d0266438fa9bf164fe90d9", 0711, true},
|
||||||
|
|||||||
@ -106,11 +106,11 @@ func TestNew(t *testing.T) {
|
|||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
sys := New(t.Context(), message.New(nil), 0xdeadbeef)
|
sys := New(t.Context(), message.New(nil), 0xbeef)
|
||||||
if sys.ctx == nil {
|
if sys.ctx == nil {
|
||||||
t.Error("New: ctx = nil")
|
t.Error("New: ctx = nil")
|
||||||
}
|
}
|
||||||
if got := sys.UID(); got != 0xdeadbeef {
|
if got := sys.UID(); got != 0xbeef {
|
||||||
t.Errorf("UID: %d", got)
|
t.Errorf("UID: %d", got)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -89,7 +89,7 @@ func TestWaylandOp(t *testing.T) {
|
|||||||
t.Parallel()
|
t.Parallel()
|
||||||
|
|
||||||
checkOpBehaviour(t, []opBehaviourTestCase{
|
checkOpBehaviour(t, []opBehaviourTestCase{
|
||||||
{"attach", 0xdeadbeef, 0xff, &waylandOp{nil,
|
{"attach", 0xbeef, 0xff, &waylandOp{nil,
|
||||||
"/tmp/hakurei.1971/ebf083d1b175911782d413369b64ce7c/wayland",
|
"/tmp/hakurei.1971/ebf083d1b175911782d413369b64ce7c/wayland",
|
||||||
"/run/user/1971/wayland-0",
|
"/run/user/1971/wayland-0",
|
||||||
"org.chromium.Chromium",
|
"org.chromium.Chromium",
|
||||||
@ -100,7 +100,7 @@ func TestWaylandOp(t *testing.T) {
|
|||||||
attachErr: stub.UniqueError(5)},
|
attachErr: stub.UniqueError(5)},
|
||||||
}, nil, &OpError{Op: "wayland", Err: stub.UniqueError(5)}, nil, nil},
|
}, nil, &OpError{Op: "wayland", Err: stub.UniqueError(5)}, nil, nil},
|
||||||
|
|
||||||
{"bind", 0xdeadbeef, 0xff, &waylandOp{nil,
|
{"bind", 0xbeef, 0xff, &waylandOp{nil,
|
||||||
"/tmp/hakurei.1971/ebf083d1b175911782d413369b64ce7c/wayland",
|
"/tmp/hakurei.1971/ebf083d1b175911782d413369b64ce7c/wayland",
|
||||||
"/run/user/1971/wayland-0",
|
"/run/user/1971/wayland-0",
|
||||||
"org.chromium.Chromium",
|
"org.chromium.Chromium",
|
||||||
@ -113,7 +113,7 @@ func TestWaylandOp(t *testing.T) {
|
|||||||
call("verbosef", stub.ExpectArgs{"wayland attached on %q", []any{"/run/user/1971/wayland-0"}}, nil, nil),
|
call("verbosef", stub.ExpectArgs{"wayland attached on %q", []any{"/run/user/1971/wayland-0"}}, nil, nil),
|
||||||
}, &OpError{Op: "wayland", Err: stub.UniqueError(4)}, nil, nil},
|
}, &OpError{Op: "wayland", Err: stub.UniqueError(4)}, nil, nil},
|
||||||
|
|
||||||
{"chmod", 0xdeadbeef, 0xff, &waylandOp{nil,
|
{"chmod", 0xbeef, 0xff, &waylandOp{nil,
|
||||||
"/tmp/hakurei.1971/ebf083d1b175911782d413369b64ce7c/wayland",
|
"/tmp/hakurei.1971/ebf083d1b175911782d413369b64ce7c/wayland",
|
||||||
"/run/user/1971/wayland-0",
|
"/run/user/1971/wayland-0",
|
||||||
"org.chromium.Chromium",
|
"org.chromium.Chromium",
|
||||||
@ -127,7 +127,7 @@ func TestWaylandOp(t *testing.T) {
|
|||||||
call("chmod", stub.ExpectArgs{"/tmp/hakurei.1971/ebf083d1b175911782d413369b64ce7c/wayland", os.FileMode(0)}, nil, stub.UniqueError(3)),
|
call("chmod", stub.ExpectArgs{"/tmp/hakurei.1971/ebf083d1b175911782d413369b64ce7c/wayland", os.FileMode(0)}, nil, stub.UniqueError(3)),
|
||||||
}, &OpError{Op: "wayland", Err: stub.UniqueError(3)}, nil, nil},
|
}, &OpError{Op: "wayland", Err: stub.UniqueError(3)}, nil, nil},
|
||||||
|
|
||||||
{"aclUpdate", 0xdeadbeef, 0xff, &waylandOp{nil,
|
{"aclUpdate", 0xbeef, 0xff, &waylandOp{nil,
|
||||||
"/tmp/hakurei.1971/ebf083d1b175911782d413369b64ce7c/wayland",
|
"/tmp/hakurei.1971/ebf083d1b175911782d413369b64ce7c/wayland",
|
||||||
"/run/user/1971/wayland-0",
|
"/run/user/1971/wayland-0",
|
||||||
"org.chromium.Chromium",
|
"org.chromium.Chromium",
|
||||||
@ -139,10 +139,10 @@ func TestWaylandOp(t *testing.T) {
|
|||||||
call("verbosef", stub.ExpectArgs{"wayland attached on %q", []any{"/run/user/1971/wayland-0"}}, nil, nil),
|
call("verbosef", stub.ExpectArgs{"wayland attached on %q", []any{"/run/user/1971/wayland-0"}}, nil, nil),
|
||||||
call("verbosef", stub.ExpectArgs{"wayland listening on %q", []any{"/tmp/hakurei.1971/ebf083d1b175911782d413369b64ce7c/wayland"}}, nil, nil),
|
call("verbosef", stub.ExpectArgs{"wayland listening on %q", []any{"/tmp/hakurei.1971/ebf083d1b175911782d413369b64ce7c/wayland"}}, nil, nil),
|
||||||
call("chmod", stub.ExpectArgs{"/tmp/hakurei.1971/ebf083d1b175911782d413369b64ce7c/wayland", os.FileMode(0)}, nil, nil),
|
call("chmod", stub.ExpectArgs{"/tmp/hakurei.1971/ebf083d1b175911782d413369b64ce7c/wayland", os.FileMode(0)}, nil, nil),
|
||||||
call("aclUpdate", stub.ExpectArgs{"/tmp/hakurei.1971/ebf083d1b175911782d413369b64ce7c/wayland", 0xdeadbeef, []acl.Perm{acl.Read, acl.Write, acl.Execute}}, nil, stub.UniqueError(2)),
|
call("aclUpdate", stub.ExpectArgs{"/tmp/hakurei.1971/ebf083d1b175911782d413369b64ce7c/wayland", 0xbeef, []acl.Perm{acl.Read, acl.Write, acl.Execute}}, nil, stub.UniqueError(2)),
|
||||||
}, &OpError{Op: "wayland", Err: stub.UniqueError(2)}, nil, nil},
|
}, &OpError{Op: "wayland", Err: stub.UniqueError(2)}, nil, nil},
|
||||||
|
|
||||||
{"remove", 0xdeadbeef, 0xff, &waylandOp{nil,
|
{"remove", 0xbeef, 0xff, &waylandOp{nil,
|
||||||
"/tmp/hakurei.1971/ebf083d1b175911782d413369b64ce7c/wayland",
|
"/tmp/hakurei.1971/ebf083d1b175911782d413369b64ce7c/wayland",
|
||||||
"/run/user/1971/wayland-0",
|
"/run/user/1971/wayland-0",
|
||||||
"org.chromium.Chromium",
|
"org.chromium.Chromium",
|
||||||
@ -154,14 +154,14 @@ func TestWaylandOp(t *testing.T) {
|
|||||||
call("verbosef", stub.ExpectArgs{"wayland attached on %q", []any{"/run/user/1971/wayland-0"}}, nil, nil),
|
call("verbosef", stub.ExpectArgs{"wayland attached on %q", []any{"/run/user/1971/wayland-0"}}, nil, nil),
|
||||||
call("verbosef", stub.ExpectArgs{"wayland listening on %q", []any{"/tmp/hakurei.1971/ebf083d1b175911782d413369b64ce7c/wayland"}}, nil, nil),
|
call("verbosef", stub.ExpectArgs{"wayland listening on %q", []any{"/tmp/hakurei.1971/ebf083d1b175911782d413369b64ce7c/wayland"}}, nil, nil),
|
||||||
call("chmod", stub.ExpectArgs{"/tmp/hakurei.1971/ebf083d1b175911782d413369b64ce7c/wayland", os.FileMode(0)}, nil, nil),
|
call("chmod", stub.ExpectArgs{"/tmp/hakurei.1971/ebf083d1b175911782d413369b64ce7c/wayland", os.FileMode(0)}, nil, nil),
|
||||||
call("aclUpdate", stub.ExpectArgs{"/tmp/hakurei.1971/ebf083d1b175911782d413369b64ce7c/wayland", 0xdeadbeef, []acl.Perm{acl.Read, acl.Write, acl.Execute}}, nil, nil),
|
call("aclUpdate", stub.ExpectArgs{"/tmp/hakurei.1971/ebf083d1b175911782d413369b64ce7c/wayland", 0xbeef, []acl.Perm{acl.Read, acl.Write, acl.Execute}}, nil, nil),
|
||||||
}, nil, []stub.Call{
|
}, nil, []stub.Call{
|
||||||
call("verbosef", stub.ExpectArgs{"detaching from wayland on %q", []any{"/run/user/1971/wayland-0"}}, nil, nil),
|
call("verbosef", stub.ExpectArgs{"detaching from wayland on %q", []any{"/run/user/1971/wayland-0"}}, nil, nil),
|
||||||
call("verbosef", stub.ExpectArgs{"removing wayland socket on %q", []any{"/tmp/hakurei.1971/ebf083d1b175911782d413369b64ce7c/wayland"}}, nil, nil),
|
call("verbosef", stub.ExpectArgs{"removing wayland socket on %q", []any{"/tmp/hakurei.1971/ebf083d1b175911782d413369b64ce7c/wayland"}}, nil, nil),
|
||||||
call("remove", stub.ExpectArgs{"/tmp/hakurei.1971/ebf083d1b175911782d413369b64ce7c/wayland"}, nil, stub.UniqueError(1)),
|
call("remove", stub.ExpectArgs{"/tmp/hakurei.1971/ebf083d1b175911782d413369b64ce7c/wayland"}, nil, stub.UniqueError(1)),
|
||||||
}, &OpError{Op: "wayland", Err: errors.Join(stub.UniqueError(1)), Revert: true}},
|
}, &OpError{Op: "wayland", Err: errors.Join(stub.UniqueError(1)), Revert: true}},
|
||||||
|
|
||||||
{"close", 0xdeadbeef, 0xff, &waylandOp{nil,
|
{"close", 0xbeef, 0xff, &waylandOp{nil,
|
||||||
"/tmp/hakurei.1971/ebf083d1b175911782d413369b64ce7c/wayland",
|
"/tmp/hakurei.1971/ebf083d1b175911782d413369b64ce7c/wayland",
|
||||||
"/run/user/1971/wayland-0",
|
"/run/user/1971/wayland-0",
|
||||||
"org.chromium.Chromium",
|
"org.chromium.Chromium",
|
||||||
@ -174,14 +174,14 @@ func TestWaylandOp(t *testing.T) {
|
|||||||
call("verbosef", stub.ExpectArgs{"wayland attached on %q", []any{"/run/user/1971/wayland-0"}}, nil, nil),
|
call("verbosef", stub.ExpectArgs{"wayland attached on %q", []any{"/run/user/1971/wayland-0"}}, nil, nil),
|
||||||
call("verbosef", stub.ExpectArgs{"wayland listening on %q", []any{"/tmp/hakurei.1971/ebf083d1b175911782d413369b64ce7c/wayland"}}, nil, nil),
|
call("verbosef", stub.ExpectArgs{"wayland listening on %q", []any{"/tmp/hakurei.1971/ebf083d1b175911782d413369b64ce7c/wayland"}}, nil, nil),
|
||||||
call("chmod", stub.ExpectArgs{"/tmp/hakurei.1971/ebf083d1b175911782d413369b64ce7c/wayland", os.FileMode(0)}, nil, nil),
|
call("chmod", stub.ExpectArgs{"/tmp/hakurei.1971/ebf083d1b175911782d413369b64ce7c/wayland", os.FileMode(0)}, nil, nil),
|
||||||
call("aclUpdate", stub.ExpectArgs{"/tmp/hakurei.1971/ebf083d1b175911782d413369b64ce7c/wayland", 0xdeadbeef, []acl.Perm{acl.Read, acl.Write, acl.Execute}}, nil, nil),
|
call("aclUpdate", stub.ExpectArgs{"/tmp/hakurei.1971/ebf083d1b175911782d413369b64ce7c/wayland", 0xbeef, []acl.Perm{acl.Read, acl.Write, acl.Execute}}, nil, nil),
|
||||||
}, nil, []stub.Call{
|
}, nil, []stub.Call{
|
||||||
call("verbosef", stub.ExpectArgs{"detaching from wayland on %q", []any{"/run/user/1971/wayland-0"}}, nil, nil),
|
call("verbosef", stub.ExpectArgs{"detaching from wayland on %q", []any{"/run/user/1971/wayland-0"}}, nil, nil),
|
||||||
call("verbosef", stub.ExpectArgs{"removing wayland socket on %q", []any{"/tmp/hakurei.1971/ebf083d1b175911782d413369b64ce7c/wayland"}}, nil, nil),
|
call("verbosef", stub.ExpectArgs{"removing wayland socket on %q", []any{"/tmp/hakurei.1971/ebf083d1b175911782d413369b64ce7c/wayland"}}, nil, nil),
|
||||||
call("remove", stub.ExpectArgs{"/tmp/hakurei.1971/ebf083d1b175911782d413369b64ce7c/wayland"}, nil, nil),
|
call("remove", stub.ExpectArgs{"/tmp/hakurei.1971/ebf083d1b175911782d413369b64ce7c/wayland"}, nil, nil),
|
||||||
}, &OpError{Op: "wayland", Err: errors.Join(stub.UniqueError(0)), Revert: true}},
|
}, &OpError{Op: "wayland", Err: errors.Join(stub.UniqueError(0)), Revert: true}},
|
||||||
|
|
||||||
{"success", 0xdeadbeef, 0xff, &waylandOp{nil,
|
{"success", 0xbeef, 0xff, &waylandOp{nil,
|
||||||
"/tmp/hakurei.1971/ebf083d1b175911782d413369b64ce7c/wayland",
|
"/tmp/hakurei.1971/ebf083d1b175911782d413369b64ce7c/wayland",
|
||||||
"/run/user/1971/wayland-0",
|
"/run/user/1971/wayland-0",
|
||||||
"org.chromium.Chromium",
|
"org.chromium.Chromium",
|
||||||
@ -193,7 +193,7 @@ func TestWaylandOp(t *testing.T) {
|
|||||||
call("verbosef", stub.ExpectArgs{"wayland attached on %q", []any{"/run/user/1971/wayland-0"}}, nil, nil),
|
call("verbosef", stub.ExpectArgs{"wayland attached on %q", []any{"/run/user/1971/wayland-0"}}, nil, nil),
|
||||||
call("verbosef", stub.ExpectArgs{"wayland listening on %q", []any{"/tmp/hakurei.1971/ebf083d1b175911782d413369b64ce7c/wayland"}}, nil, nil),
|
call("verbosef", stub.ExpectArgs{"wayland listening on %q", []any{"/tmp/hakurei.1971/ebf083d1b175911782d413369b64ce7c/wayland"}}, nil, nil),
|
||||||
call("chmod", stub.ExpectArgs{"/tmp/hakurei.1971/ebf083d1b175911782d413369b64ce7c/wayland", os.FileMode(0)}, nil, nil),
|
call("chmod", stub.ExpectArgs{"/tmp/hakurei.1971/ebf083d1b175911782d413369b64ce7c/wayland", os.FileMode(0)}, nil, nil),
|
||||||
call("aclUpdate", stub.ExpectArgs{"/tmp/hakurei.1971/ebf083d1b175911782d413369b64ce7c/wayland", 0xdeadbeef, []acl.Perm{acl.Read, acl.Write, acl.Execute}}, nil, nil),
|
call("aclUpdate", stub.ExpectArgs{"/tmp/hakurei.1971/ebf083d1b175911782d413369b64ce7c/wayland", 0xbeef, []acl.Perm{acl.Read, acl.Write, acl.Execute}}, nil, nil),
|
||||||
}, nil, []stub.Call{
|
}, nil, []stub.Call{
|
||||||
call("verbosef", stub.ExpectArgs{"detaching from wayland on %q", []any{"/run/user/1971/wayland-0"}}, nil, nil),
|
call("verbosef", stub.ExpectArgs{"detaching from wayland on %q", []any{"/run/user/1971/wayland-0"}}, nil, nil),
|
||||||
call("verbosef", stub.ExpectArgs{"removing wayland socket on %q", []any{"/tmp/hakurei.1971/ebf083d1b175911782d413369b64ce7c/wayland"}}, nil, nil),
|
call("verbosef", stub.ExpectArgs{"removing wayland socket on %q", []any{"/tmp/hakurei.1971/ebf083d1b175911782d413369b64ce7c/wayland"}}, nil, nil),
|
||||||
|
|||||||
@ -42,7 +42,7 @@ func TestXHostOp(t *testing.T) {
|
|||||||
})
|
})
|
||||||
|
|
||||||
checkOpsBuilder(t, "ChangeHosts", []opsBuilderTestCase{
|
checkOpsBuilder(t, "ChangeHosts", []opsBuilderTestCase{
|
||||||
{"xhost", 0xcafebabe, func(_ *testing.T, sys *I) {
|
{"xhost", 0xcafe, func(_ *testing.T, sys *I) {
|
||||||
sys.ChangeHosts("chronos")
|
sys.ChangeHosts("chronos")
|
||||||
}, []Op{
|
}, []Op{
|
||||||
xhostOp("chronos"),
|
xhostOp("chronos"),
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user