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.go132
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},
})