From 0e6c1a50260de141c50bb50fd3f2b2bcf9a3fe64 Mon Sep 17 00:00:00 2001 From: Ophestra Date: Tue, 7 Oct 2025 20:06:26 +0900 Subject: container/check: move absolute pathname This allows use of absolute pathname values without importing container. Signed-off-by: Ophestra --- container/initbind_test.go | 123 +++++++++++++++++++++++---------------------- 1 file changed, 62 insertions(+), 61 deletions(-) (limited to 'container/initbind_test.go') diff --git a/container/initbind_test.go b/container/initbind_test.go index 5be91ed8..5e0c37e7 100644 --- a/container/initbind_test.go +++ b/container/initbind_test.go @@ -6,29 +6,30 @@ import ( "syscall" "testing" + "hakurei.app/container/check" "hakurei.app/container/stub" ) func TestBindMountOp(t *testing.T) { checkOpBehaviour(t, []opBehaviourTestCase{ {"ENOENT not optional", new(Params), &BindMountOp{ - Source: MustAbs("/bin/"), - Target: MustAbs("/bin/"), + Source: check.MustAbs("/bin/"), + Target: check.MustAbs("/bin/"), }, []stub.Call{ call("evalSymlinks", stub.ExpectArgs{"/bin/"}, "", syscall.ENOENT), }, syscall.ENOENT, nil, nil}, {"skip optional", new(Params), &BindMountOp{ - Source: MustAbs("/bin/"), - Target: MustAbs("/bin/"), + Source: check.MustAbs("/bin/"), + Target: check.MustAbs("/bin/"), Flags: BindOptional, }, []stub.Call{ call("evalSymlinks", stub.ExpectArgs{"/bin/"}, "", syscall.ENOENT), }, nil, nil, nil}, {"success optional", new(Params), &BindMountOp{ - Source: MustAbs("/bin/"), - Target: MustAbs("/bin/"), + Source: check.MustAbs("/bin/"), + Target: check.MustAbs("/bin/"), Flags: BindOptional, }, []stub.Call{ call("evalSymlinks", stub.ExpectArgs{"/bin/"}, "/usr/bin", nil), @@ -40,8 +41,8 @@ func TestBindMountOp(t *testing.T) { }, nil}, {"ensureFile device", new(Params), &BindMountOp{ - Source: MustAbs("/dev/null"), - Target: MustAbs("/dev/null"), + Source: check.MustAbs("/dev/null"), + Target: check.MustAbs("/dev/null"), Flags: BindWritable | BindDevice, }, []stub.Call{ call("evalSymlinks", stub.ExpectArgs{"/dev/null"}, "/dev/null", nil), @@ -51,16 +52,16 @@ func TestBindMountOp(t *testing.T) { }, stub.UniqueError(5)}, {"mkdirAll ensure", new(Params), &BindMountOp{ - Source: MustAbs("/bin/"), - Target: MustAbs("/bin/"), + Source: check.MustAbs("/bin/"), + Target: check.MustAbs("/bin/"), Flags: BindEnsure, }, []stub.Call{ call("mkdirAll", stub.ExpectArgs{"/bin/", os.FileMode(0700)}, nil, stub.UniqueError(4)), }, stub.UniqueError(4), nil, nil}, {"success ensure", new(Params), &BindMountOp{ - Source: MustAbs("/bin/"), - Target: MustAbs("/usr/bin/"), + Source: check.MustAbs("/bin/"), + Target: check.MustAbs("/usr/bin/"), Flags: BindEnsure, }, []stub.Call{ call("mkdirAll", stub.ExpectArgs{"/bin/", os.FileMode(0700)}, nil, nil), @@ -73,8 +74,8 @@ func TestBindMountOp(t *testing.T) { }, nil}, {"success device ro", new(Params), &BindMountOp{ - Source: MustAbs("/dev/null"), - Target: MustAbs("/dev/null"), + Source: check.MustAbs("/dev/null"), + Target: check.MustAbs("/dev/null"), Flags: BindDevice, }, []stub.Call{ call("evalSymlinks", stub.ExpectArgs{"/dev/null"}, "/dev/null", nil), @@ -86,8 +87,8 @@ func TestBindMountOp(t *testing.T) { }, nil}, {"success device", new(Params), &BindMountOp{ - Source: MustAbs("/dev/null"), - Target: MustAbs("/dev/null"), + Source: check.MustAbs("/dev/null"), + Target: check.MustAbs("/dev/null"), Flags: BindWritable | BindDevice, }, []stub.Call{ call("evalSymlinks", stub.ExpectArgs{"/dev/null"}, "/dev/null", nil), @@ -99,15 +100,15 @@ func TestBindMountOp(t *testing.T) { }, nil}, {"evalSymlinks", new(Params), &BindMountOp{ - Source: MustAbs("/bin/"), - Target: MustAbs("/bin/"), + Source: check.MustAbs("/bin/"), + Target: check.MustAbs("/bin/"), }, []stub.Call{ call("evalSymlinks", stub.ExpectArgs{"/bin/"}, "/usr/bin", stub.UniqueError(3)), }, stub.UniqueError(3), nil, nil}, {"stat", new(Params), &BindMountOp{ - Source: MustAbs("/bin/"), - Target: MustAbs("/bin/"), + Source: check.MustAbs("/bin/"), + Target: check.MustAbs("/bin/"), }, []stub.Call{ call("evalSymlinks", stub.ExpectArgs{"/bin/"}, "/usr/bin", nil), }, nil, []stub.Call{ @@ -115,8 +116,8 @@ func TestBindMountOp(t *testing.T) { }, stub.UniqueError(2)}, {"mkdirAll", new(Params), &BindMountOp{ - Source: MustAbs("/bin/"), - Target: MustAbs("/bin/"), + Source: check.MustAbs("/bin/"), + Target: check.MustAbs("/bin/"), }, []stub.Call{ call("evalSymlinks", stub.ExpectArgs{"/bin/"}, "/usr/bin", nil), }, nil, []stub.Call{ @@ -125,8 +126,8 @@ func TestBindMountOp(t *testing.T) { }, stub.UniqueError(1)}, {"bindMount", new(Params), &BindMountOp{ - Source: MustAbs("/bin/"), - Target: MustAbs("/bin/"), + Source: check.MustAbs("/bin/"), + Target: check.MustAbs("/bin/"), }, []stub.Call{ call("evalSymlinks", stub.ExpectArgs{"/bin/"}, "/usr/bin", nil), }, nil, []stub.Call{ @@ -137,8 +138,8 @@ func TestBindMountOp(t *testing.T) { }, stub.UniqueError(0)}, {"success eval equals", new(Params), &BindMountOp{ - Source: MustAbs("/bin/"), - Target: MustAbs("/bin/"), + Source: check.MustAbs("/bin/"), + Target: check.MustAbs("/bin/"), }, []stub.Call{ call("evalSymlinks", stub.ExpectArgs{"/bin/"}, "/bin", nil), }, nil, []stub.Call{ @@ -149,8 +150,8 @@ func TestBindMountOp(t *testing.T) { }, nil}, {"success", new(Params), &BindMountOp{ - Source: MustAbs("/bin/"), - Target: MustAbs("/bin/"), + Source: check.MustAbs("/bin/"), + Target: check.MustAbs("/bin/"), }, []stub.Call{ call("evalSymlinks", stub.ExpectArgs{"/bin/"}, "/usr/bin", nil), }, nil, []stub.Call{ @@ -173,21 +174,21 @@ func TestBindMountOp(t *testing.T) { checkOpsValid(t, []opValidTestCase{ {"nil", (*BindMountOp)(nil), false}, {"zero", new(BindMountOp), false}, - {"nil source", &BindMountOp{Target: MustAbs("/")}, false}, - {"nil target", &BindMountOp{Source: MustAbs("/")}, false}, - {"flag optional ensure", &BindMountOp{Source: MustAbs("/"), Target: MustAbs("/"), Flags: BindOptional | BindEnsure}, false}, - {"valid", &BindMountOp{Source: MustAbs("/"), Target: MustAbs("/")}, true}, + {"nil source", &BindMountOp{Target: check.MustAbs("/")}, false}, + {"nil target", &BindMountOp{Source: check.MustAbs("/")}, false}, + {"flag optional ensure", &BindMountOp{Source: check.MustAbs("/"), Target: check.MustAbs("/"), Flags: BindOptional | BindEnsure}, false}, + {"valid", &BindMountOp{Source: check.MustAbs("/"), Target: check.MustAbs("/")}, true}, }) checkOpsBuilder(t, []opsBuilderTestCase{ {"autoetc", new(Ops).Bind( - MustAbs("/etc/"), - MustAbs("/etc/.host/048090b6ed8f9ebb10e275ff5d8c0659"), + check.MustAbs("/etc/"), + check.MustAbs("/etc/.host/048090b6ed8f9ebb10e275ff5d8c0659"), 0, ), Ops{ &BindMountOp{ - Source: MustAbs("/etc/"), - Target: MustAbs("/etc/.host/048090b6ed8f9ebb10e275ff5d8c0659"), + Source: check.MustAbs("/etc/"), + Target: check.MustAbs("/etc/.host/048090b6ed8f9ebb10e275ff5d8c0659"), }, }}, }) @@ -196,45 +197,45 @@ func TestBindMountOp(t *testing.T) { {"zero", new(BindMountOp), new(BindMountOp), false}, {"internal ne", &BindMountOp{ - Source: MustAbs("/etc/"), - Target: MustAbs("/etc/.host/048090b6ed8f9ebb10e275ff5d8c0659"), + Source: check.MustAbs("/etc/"), + Target: check.MustAbs("/etc/.host/048090b6ed8f9ebb10e275ff5d8c0659"), }, &BindMountOp{ - Source: MustAbs("/etc/"), - Target: MustAbs("/etc/.host/048090b6ed8f9ebb10e275ff5d8c0659"), - sourceFinal: MustAbs("/etc/"), + Source: check.MustAbs("/etc/"), + Target: check.MustAbs("/etc/.host/048090b6ed8f9ebb10e275ff5d8c0659"), + sourceFinal: check.MustAbs("/etc/"), }, true}, {"flags differs", &BindMountOp{ - Source: MustAbs("/etc/"), - Target: MustAbs("/etc/.host/048090b6ed8f9ebb10e275ff5d8c0659"), + Source: check.MustAbs("/etc/"), + Target: check.MustAbs("/etc/.host/048090b6ed8f9ebb10e275ff5d8c0659"), }, &BindMountOp{ - Source: MustAbs("/etc/"), - Target: MustAbs("/etc/.host/048090b6ed8f9ebb10e275ff5d8c0659"), + Source: check.MustAbs("/etc/"), + Target: check.MustAbs("/etc/.host/048090b6ed8f9ebb10e275ff5d8c0659"), Flags: BindOptional, }, false}, {"source differs", &BindMountOp{ - Source: MustAbs("/.hakurei/etc/"), - Target: MustAbs("/etc/.host/048090b6ed8f9ebb10e275ff5d8c0659"), + Source: check.MustAbs("/.hakurei/etc/"), + Target: check.MustAbs("/etc/.host/048090b6ed8f9ebb10e275ff5d8c0659"), }, &BindMountOp{ - Source: MustAbs("/etc/"), - Target: MustAbs("/etc/.host/048090b6ed8f9ebb10e275ff5d8c0659"), + Source: check.MustAbs("/etc/"), + Target: check.MustAbs("/etc/.host/048090b6ed8f9ebb10e275ff5d8c0659"), }, false}, {"target differs", &BindMountOp{ - Source: MustAbs("/etc/"), - Target: MustAbs("/etc/.host/048090b6ed8f9ebb10e275ff5d8c0659"), + Source: check.MustAbs("/etc/"), + Target: check.MustAbs("/etc/.host/048090b6ed8f9ebb10e275ff5d8c0659"), }, &BindMountOp{ - Source: MustAbs("/etc/"), - Target: MustAbs("/etc/"), + Source: check.MustAbs("/etc/"), + Target: check.MustAbs("/etc/"), }, false}, {"equals", &BindMountOp{ - Source: MustAbs("/etc/"), - Target: MustAbs("/etc/.host/048090b6ed8f9ebb10e275ff5d8c0659"), + Source: check.MustAbs("/etc/"), + Target: check.MustAbs("/etc/.host/048090b6ed8f9ebb10e275ff5d8c0659"), }, &BindMountOp{ - Source: MustAbs("/etc/"), - Target: MustAbs("/etc/.host/048090b6ed8f9ebb10e275ff5d8c0659"), + Source: check.MustAbs("/etc/"), + Target: check.MustAbs("/etc/.host/048090b6ed8f9ebb10e275ff5d8c0659"), }, true}, }) @@ -242,13 +243,13 @@ func TestBindMountOp(t *testing.T) { {"invalid", new(BindMountOp), "mounting", ""}, {"autoetc", &BindMountOp{ - Source: MustAbs("/etc/"), - Target: MustAbs("/etc/.host/048090b6ed8f9ebb10e275ff5d8c0659"), + Source: check.MustAbs("/etc/"), + Target: check.MustAbs("/etc/.host/048090b6ed8f9ebb10e275ff5d8c0659"), }, "mounting", `"/etc/" on "/etc/.host/048090b6ed8f9ebb10e275ff5d8c0659" flags 0x0`}, {"hostdev", &BindMountOp{ - Source: MustAbs("/dev/"), - Target: MustAbs("/dev/"), + Source: check.MustAbs("/dev/"), + Target: check.MustAbs("/dev/"), Flags: BindWritable | BindDevice, }, "mounting", `"/dev/" flags 0x6`}, }) -- cgit v1.3.1