diff options
Diffstat (limited to 'container/initbind_test.go')
| -rw-r--r-- | container/initbind_test.go | 132 |
1 files changed, 67 insertions, 65 deletions
diff --git a/container/initbind_test.go b/container/initbind_test.go index 3c91c61a..93e880cc 100644 --- a/container/initbind_test.go +++ b/container/initbind_test.go @@ -5,6 +5,8 @@ import ( "os" "syscall" "testing" + + "hakurei.app/container/stub" ) func TestBindMountOp(t *testing.T) { @@ -12,132 +14,132 @@ func TestBindMountOp(t *testing.T) { {"ENOENT not optional", new(Params), &BindMountOp{ Source: MustAbs("/bin/"), Target: MustAbs("/bin/"), - }, []kexpect{ - {"evalSymlinks", expectArgs{"/bin/"}, "", syscall.ENOENT}, + }, []stub.Call{ + {"evalSymlinks", stub.ExpectArgs{"/bin/"}, "", syscall.ENOENT}, }, syscall.ENOENT, nil, nil}, {"skip optional", new(Params), &BindMountOp{ Source: MustAbs("/bin/"), Target: MustAbs("/bin/"), Flags: BindOptional, - }, []kexpect{ - {"evalSymlinks", expectArgs{"/bin/"}, "", syscall.ENOENT}, + }, []stub.Call{ + {"evalSymlinks", stub.ExpectArgs{"/bin/"}, "", syscall.ENOENT}, }, nil, nil, nil}, {"success optional", new(Params), &BindMountOp{ Source: MustAbs("/bin/"), Target: MustAbs("/bin/"), Flags: BindOptional, - }, []kexpect{ - {"evalSymlinks", expectArgs{"/bin/"}, "/usr/bin", nil}, - }, nil, []kexpect{ - {"stat", expectArgs{"/host/usr/bin"}, isDirFi(true), nil}, - {"mkdirAll", expectArgs{"/sysroot/bin", os.FileMode(0700)}, nil, nil}, - {"bindMount", expectArgs{"/host/usr/bin", "/sysroot/bin", uintptr(0x4005), false}, nil, nil}, + }, []stub.Call{ + {"evalSymlinks", stub.ExpectArgs{"/bin/"}, "/usr/bin", nil}, + }, nil, []stub.Call{ + {"stat", stub.ExpectArgs{"/host/usr/bin"}, isDirFi(true), nil}, + {"mkdirAll", stub.ExpectArgs{"/sysroot/bin", os.FileMode(0700)}, nil, nil}, + {"bindMount", stub.ExpectArgs{"/host/usr/bin", "/sysroot/bin", uintptr(0x4005), false}, nil, nil}, }, nil}, {"ensureFile device", new(Params), &BindMountOp{ Source: MustAbs("/dev/null"), Target: MustAbs("/dev/null"), Flags: BindWritable | BindDevice, - }, []kexpect{ - {"evalSymlinks", expectArgs{"/dev/null"}, "/dev/null", nil}, - }, nil, []kexpect{ - {"stat", expectArgs{"/host/dev/null"}, isDirFi(false), nil}, - {"ensureFile", expectArgs{"/sysroot/dev/null", os.FileMode(0444), os.FileMode(0700)}, nil, errUnique}, - }, errUnique}, + }, []stub.Call{ + {"evalSymlinks", stub.ExpectArgs{"/dev/null"}, "/dev/null", nil}, + }, nil, []stub.Call{ + {"stat", stub.ExpectArgs{"/host/dev/null"}, isDirFi(false), nil}, + {"ensureFile", stub.ExpectArgs{"/sysroot/dev/null", os.FileMode(0444), os.FileMode(0700)}, nil, stub.UniqueError(5)}, + }, stub.UniqueError(5)}, {"mkdirAll ensure", new(Params), &BindMountOp{ Source: MustAbs("/bin/"), Target: MustAbs("/bin/"), Flags: BindEnsure, - }, []kexpect{ - {"mkdirAll", expectArgs{"/bin/", os.FileMode(0700)}, nil, errUnique}, - }, errUnique, nil, nil}, + }, []stub.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/"), Flags: BindEnsure, - }, []kexpect{ - {"mkdirAll", expectArgs{"/bin/", os.FileMode(0700)}, nil, nil}, - {"evalSymlinks", expectArgs{"/bin/"}, "/usr/bin", nil}, - }, nil, []kexpect{ - {"stat", expectArgs{"/host/usr/bin"}, isDirFi(true), nil}, - {"mkdirAll", expectArgs{"/sysroot/usr/bin", os.FileMode(0700)}, nil, nil}, - {"bindMount", expectArgs{"/host/usr/bin", "/sysroot/usr/bin", uintptr(0x4005), false}, nil, nil}, + }, []stub.Call{ + {"mkdirAll", stub.ExpectArgs{"/bin/", os.FileMode(0700)}, nil, nil}, + {"evalSymlinks", stub.ExpectArgs{"/bin/"}, "/usr/bin", nil}, + }, nil, []stub.Call{ + {"stat", stub.ExpectArgs{"/host/usr/bin"}, isDirFi(true), nil}, + {"mkdirAll", stub.ExpectArgs{"/sysroot/usr/bin", os.FileMode(0700)}, nil, nil}, + {"bindMount", stub.ExpectArgs{"/host/usr/bin", "/sysroot/usr/bin", uintptr(0x4005), false}, nil, nil}, }, nil}, {"success device ro", new(Params), &BindMountOp{ Source: MustAbs("/dev/null"), Target: MustAbs("/dev/null"), Flags: BindDevice, - }, []kexpect{ - {"evalSymlinks", expectArgs{"/dev/null"}, "/dev/null", nil}, - }, nil, []kexpect{ - {"stat", expectArgs{"/host/dev/null"}, isDirFi(false), nil}, - {"ensureFile", expectArgs{"/sysroot/dev/null", os.FileMode(0444), os.FileMode(0700)}, nil, nil}, - {"bindMount", expectArgs{"/host/dev/null", "/sysroot/dev/null", uintptr(0x4001), false}, nil, nil}, + }, []stub.Call{ + {"evalSymlinks", stub.ExpectArgs{"/dev/null"}, "/dev/null", nil}, + }, nil, []stub.Call{ + {"stat", stub.ExpectArgs{"/host/dev/null"}, isDirFi(false), nil}, + {"ensureFile", stub.ExpectArgs{"/sysroot/dev/null", os.FileMode(0444), os.FileMode(0700)}, nil, nil}, + {"bindMount", stub.ExpectArgs{"/host/dev/null", "/sysroot/dev/null", uintptr(0x4001), false}, nil, nil}, }, nil}, {"success device", new(Params), &BindMountOp{ Source: MustAbs("/dev/null"), Target: MustAbs("/dev/null"), Flags: BindWritable | BindDevice, - }, []kexpect{ - {"evalSymlinks", expectArgs{"/dev/null"}, "/dev/null", nil}, - }, nil, []kexpect{ - {"stat", expectArgs{"/host/dev/null"}, isDirFi(false), nil}, - {"ensureFile", expectArgs{"/sysroot/dev/null", os.FileMode(0444), os.FileMode(0700)}, nil, nil}, - {"bindMount", expectArgs{"/host/dev/null", "/sysroot/dev/null", uintptr(0x4000), false}, nil, nil}, + }, []stub.Call{ + {"evalSymlinks", stub.ExpectArgs{"/dev/null"}, "/dev/null", nil}, + }, nil, []stub.Call{ + {"stat", stub.ExpectArgs{"/host/dev/null"}, isDirFi(false), nil}, + {"ensureFile", stub.ExpectArgs{"/sysroot/dev/null", os.FileMode(0444), os.FileMode(0700)}, nil, nil}, + {"bindMount", stub.ExpectArgs{"/host/dev/null", "/sysroot/dev/null", uintptr(0x4000), false}, nil, nil}, }, nil}, {"evalSymlinks", new(Params), &BindMountOp{ Source: MustAbs("/bin/"), Target: MustAbs("/bin/"), - }, []kexpect{ - {"evalSymlinks", expectArgs{"/bin/"}, "/usr/bin", errUnique}, - }, errUnique, nil, nil}, + }, []stub.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/"), - }, []kexpect{ - {"evalSymlinks", expectArgs{"/bin/"}, "/usr/bin", nil}, - }, nil, []kexpect{ - {"stat", expectArgs{"/host/usr/bin"}, isDirFi(true), errUnique}, - }, errUnique}, + }, []stub.Call{ + {"evalSymlinks", stub.ExpectArgs{"/bin/"}, "/usr/bin", nil}, + }, nil, []stub.Call{ + {"stat", stub.ExpectArgs{"/host/usr/bin"}, isDirFi(true), stub.UniqueError(2)}, + }, stub.UniqueError(2)}, {"mkdirAll", new(Params), &BindMountOp{ Source: MustAbs("/bin/"), Target: MustAbs("/bin/"), - }, []kexpect{ - {"evalSymlinks", expectArgs{"/bin/"}, "/usr/bin", nil}, - }, nil, []kexpect{ - {"stat", expectArgs{"/host/usr/bin"}, isDirFi(true), nil}, - {"mkdirAll", expectArgs{"/sysroot/bin", os.FileMode(0700)}, nil, errUnique}, - }, errUnique}, + }, []stub.Call{ + {"evalSymlinks", stub.ExpectArgs{"/bin/"}, "/usr/bin", nil}, + }, nil, []stub.Call{ + {"stat", stub.ExpectArgs{"/host/usr/bin"}, isDirFi(true), nil}, + {"mkdirAll", stub.ExpectArgs{"/sysroot/bin", os.FileMode(0700)}, nil, stub.UniqueError(1)}, + }, stub.UniqueError(1)}, {"bindMount", new(Params), &BindMountOp{ Source: MustAbs("/bin/"), Target: MustAbs("/bin/"), - }, []kexpect{ - {"evalSymlinks", expectArgs{"/bin/"}, "/usr/bin", nil}, - }, nil, []kexpect{ - {"stat", expectArgs{"/host/usr/bin"}, isDirFi(true), nil}, - {"mkdirAll", expectArgs{"/sysroot/bin", os.FileMode(0700)}, nil, nil}, - {"bindMount", expectArgs{"/host/usr/bin", "/sysroot/bin", uintptr(0x4005), false}, nil, errUnique}, - }, errUnique}, + }, []stub.Call{ + {"evalSymlinks", stub.ExpectArgs{"/bin/"}, "/usr/bin", nil}, + }, nil, []stub.Call{ + {"stat", stub.ExpectArgs{"/host/usr/bin"}, isDirFi(true), nil}, + {"mkdirAll", stub.ExpectArgs{"/sysroot/bin", os.FileMode(0700)}, nil, nil}, + {"bindMount", stub.ExpectArgs{"/host/usr/bin", "/sysroot/bin", uintptr(0x4005), false}, nil, stub.UniqueError(0)}, + }, stub.UniqueError(0)}, {"success", new(Params), &BindMountOp{ Source: MustAbs("/bin/"), Target: MustAbs("/bin/"), - }, []kexpect{ - {"evalSymlinks", expectArgs{"/bin/"}, "/usr/bin", nil}, - }, nil, []kexpect{ - {"stat", expectArgs{"/host/usr/bin"}, isDirFi(true), nil}, - {"mkdirAll", expectArgs{"/sysroot/bin", os.FileMode(0700)}, nil, nil}, - {"bindMount", expectArgs{"/host/usr/bin", "/sysroot/bin", uintptr(0x4005), false}, nil, nil}, + }, []stub.Call{ + {"evalSymlinks", stub.ExpectArgs{"/bin/"}, "/usr/bin", nil}, + }, nil, []stub.Call{ + {"stat", stub.ExpectArgs{"/host/usr/bin"}, isDirFi(true), nil}, + {"mkdirAll", stub.ExpectArgs{"/sysroot/bin", os.FileMode(0700)}, nil, nil}, + {"bindMount", stub.ExpectArgs{"/host/usr/bin", "/sysroot/bin", uintptr(0x4005), false}, nil, nil}, }, nil}, }) |
