diff options
| author | Ophestra <cat@gensokyo.uk> | 2025-08-29 02:56:56 +0900 |
|---|---|---|
| committer | Ophestra <cat@gensokyo.uk> | 2025-08-29 02:56:56 +0900 |
| commit | 905b9f9785263297611a61facc8b6bdf4c3e257f (patch) | |
| tree | 07a1724005486f2bb2b02da2c2ca3ebe4215dc15 /container/initoverlay_test.go | |
| parent | 1c7e634f09f6644faf611477dc0e223d9b0b4ecb (diff) | |
container/initoverlay: invalid argument type
This eliminates generic WrapErr from overlay.
Signed-off-by: Ophestra <cat@gensokyo.uk>
Diffstat (limited to 'container/initoverlay_test.go')
| -rw-r--r-- | container/initoverlay_test.go | 34 |
1 files changed, 30 insertions, 4 deletions
diff --git a/container/initoverlay_test.go b/container/initoverlay_test.go index 64b0bf3c..9dae2118 100644 --- a/container/initoverlay_test.go +++ b/container/initoverlay_test.go @@ -2,12 +2,38 @@ package container import ( "errors" - "io/fs" "os" "testing" ) func TestMountOverlayOp(t *testing.T) { + t.Run("argument error", func(t *testing.T) { + testCases := []struct { + name string + err *OverlayArgumentError + want string + }{ + {"unexpected upper", &OverlayArgumentError{OverlayEphemeralUnexpectedUpper, "/proc/"}, + `upperdir has unexpected value "/proc/"`}, + + {"lower ro short", &OverlayArgumentError{OverlayReadonlyLower, zeroString}, + "readonly overlay requires at least two lowerdir"}, + + {"lower short", &OverlayArgumentError{OverlayEmptyLower, zeroString}, + "overlay requires at least one lowerdir"}, + + {"oob", &OverlayArgumentError{0xdeadbeef, zeroString}, + "invalid overlay argument error 0xdeadbeef"}, + } + for _, tc := range testCases { + t.Run(tc.name, func(t *testing.T) { + if got := tc.err.Error(); got != tc.want { + t.Errorf("Error: %q, want %q", got, tc.want) + } + }) + } + }) + checkOpBehaviour(t, []opBehaviourTestCase{ {"mkdirTemp invalid ephemeral", &Params{ParentPerm: 0705}, &MountOverlayOp{ Target: MustAbs("/"), @@ -16,7 +42,7 @@ func TestMountOverlayOp(t *testing.T) { MustAbs("/var/lib/planterette/app/org.chromium.Chromium@debian:f92c9052"), }, Upper: MustAbs("/proc/"), - }, nil, msg.WrapErr(fs.ErrInvalid, `upperdir has unexpected value "/proc/"`), nil, nil}, + }, nil, &OverlayArgumentError{OverlayEphemeralUnexpectedUpper, "/proc/"}, nil, nil}, {"mkdirTemp upper ephemeral", &Params{ParentPerm: 0705}, &MountOverlayOp{ Target: MustAbs("/"), @@ -81,7 +107,7 @@ func TestMountOverlayOp(t *testing.T) { {"evalSymlinks", expectArgs{"/mnt-root/nix/.ro-store"}, "/mnt-root/nix/.ro-store", nil}, }, nil, []kexpect{ {"mkdirAll", expectArgs{"/sysroot/nix/store", os.FileMode(0755)}, nil, nil}, - }, msg.WrapErr(fs.ErrInvalid, "readonly overlay requires at least two lowerdir")}, + }, &OverlayArgumentError{OverlayReadonlyLower, zeroString}}, {"success ro noPrefix", &Params{ParentPerm: 0755}, &MountOverlayOp{ Target: MustAbs("/nix/store"), @@ -129,7 +155,7 @@ func TestMountOverlayOp(t *testing.T) { {"evalSymlinks", expectArgs{"/mnt-root/nix/.rw-store/work"}, "/mnt-root/nix/.rw-store/.work", nil}, }, nil, []kexpect{ {"mkdirAll", expectArgs{"/sysroot/nix/store", os.FileMode(0700)}, nil, nil}, - }, msg.WrapErr(fs.ErrInvalid, "overlay requires at least one lowerdir")}, + }, &OverlayArgumentError{OverlayEmptyLower, zeroString}}, {"evalSymlinks upper", &Params{ParentPerm: 0700}, &MountOverlayOp{ Target: MustAbs("/nix/store"), |
