aboutsummaryrefslogtreecommitdiffhomepage
path: root/container/initbind_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'container/initbind_test.go')
-rw-r--r--container/initbind_test.go123
1 files changed, 62 insertions, 61 deletions
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", "<invalid>"},
{"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`},
})