diff options
Diffstat (limited to 'container/initsymlink_test.go')
| -rw-r--r-- | container/initsymlink_test.go | 48 |
1 files changed, 47 insertions, 1 deletions
diff --git a/container/initsymlink_test.go b/container/initsymlink_test.go index 4ae2da86..1bd0589e 100644 --- a/container/initsymlink_test.go +++ b/container/initsymlink_test.go @@ -1,8 +1,54 @@ package container -import "testing" +import ( + "io/fs" + "os" + "testing" +) func TestSymlinkOp(t *testing.T) { + checkOpBehaviour(t, []opBehaviourTestCase{ + {"mkdir", &Params{ParentPerm: 0700}, &SymlinkOp{ + Target: MustAbs("/etc/nixos"), + LinkName: "/etc/static/nixos", + }, nil, nil, []kexpect{ + {"mkdirAll", expectArgs{"/sysroot/etc", os.FileMode(0700)}, nil, errUnique}, + }, wrapErrSelf(errUnique)}, + + {"abs", &Params{ParentPerm: 0755}, &SymlinkOp{ + Target: MustAbs("/etc/mtab"), + LinkName: "etc/mtab", + Dereference: true, + }, nil, msg.WrapErr(fs.ErrInvalid, `path "etc/mtab" is not absolute`), nil, nil}, + + {"readlink", &Params{ParentPerm: 0755}, &SymlinkOp{ + Target: MustAbs("/etc/mtab"), + LinkName: "/etc/mtab", + Dereference: true, + }, []kexpect{ + {"readlink", expectArgs{"/etc/mtab"}, "/proc/mounts", errUnique}, + }, wrapErrSelf(errUnique), nil, nil}, + + {"success noderef", &Params{ParentPerm: 0700}, &SymlinkOp{ + Target: MustAbs("/etc/nixos"), + LinkName: "/etc/static/nixos", + }, nil, nil, []kexpect{ + {"mkdirAll", expectArgs{"/sysroot/etc", os.FileMode(0700)}, nil, nil}, + {"symlink", expectArgs{"/etc/static/nixos", "/sysroot/etc/nixos"}, nil, nil}, + }, nil}, + + {"success", &Params{ParentPerm: 0755}, &SymlinkOp{ + Target: MustAbs("/etc/mtab"), + LinkName: "/etc/mtab", + Dereference: true, + }, []kexpect{ + {"readlink", expectArgs{"/etc/mtab"}, "/proc/mounts", nil}, + }, nil, []kexpect{ + {"mkdirAll", expectArgs{"/sysroot/etc", os.FileMode(0755)}, nil, nil}, + {"symlink", expectArgs{"/proc/mounts", "/sysroot/etc/mtab"}, nil, nil}, + }, nil}, + }) + checkOpsValid(t, []opValidTestCase{ {"nil", (*SymlinkOp)(nil), false}, {"zero", new(SymlinkOp), false}, |
