diff options
| author | Ophestra <cat@gensokyo.uk> | 2026-02-17 14:13:08 +0900 |
|---|---|---|
| committer | Ophestra <cat@gensokyo.uk> | 2026-02-17 14:16:54 +0900 |
| commit | 88d9a6163e9e91b55b6ebe71f335e7617c76b04e (patch) | |
| tree | f52b7da1651409120ee6add658204ea29cde39da /container | |
| parent | 47860b038750864b8346e4d0594a272ba3fc2b2f (diff) | |
container/initplace: return nil for createTemp error injection
This matches os package behaviour, and avoids adding the cleanup.
Signed-off-by: Ophestra <cat@gensokyo.uk>
Diffstat (limited to 'container')
| -rw-r--r-- | container/dispatcher_test.go | 7 | ||||
| -rw-r--r-- | container/initplace_test.go | 22 |
2 files changed, 16 insertions, 13 deletions
diff --git a/container/dispatcher_test.go b/container/dispatcher_test.go index 5de37fc9..fe0c4dbc 100644 --- a/container/dispatcher_test.go +++ b/container/dispatcher_test.go @@ -238,8 +238,11 @@ func sliceAddr[S any](s []S) *[]S { return &s } func newCheckedFile(t *testing.T, name, wantData string, closeErr error) osFile { f := &checkedOsFile{t: t, name: name, want: wantData, closeErr: closeErr} - // check happens in Close, and cleanup is not guaranteed to run, so relying on it for sloppy implementations will cause sporadic test results - f.cleanup = runtime.AddCleanup(f, func(name string) { f.t.Fatalf("checkedOsFile %s became unreachable without a call to Close", name) }, f.name) + // check happens in Close, and cleanup is not guaranteed to run, so relying + // on it for sloppy implementations will cause sporadic test results + f.cleanup = runtime.AddCleanup(f, func(name string) { + panic("checkedOsFile " + name + " became unreachable without a call to Close") + }, name) return f } diff --git a/container/initplace_test.go b/container/initplace_test.go index afeddbe5..b1de5fbf 100644 --- a/container/initplace_test.go +++ b/container/initplace_test.go @@ -21,7 +21,7 @@ func TestTmpfileOp(t *testing.T) { Path: samplePath, Data: sampleData, }, nil, nil, []stub.Call{ - call("createTemp", stub.ExpectArgs{"/", "tmp.*"}, newCheckedFile(t, "tmp.32768", sampleDataString, nil), stub.UniqueError(5)), + call("createTemp", stub.ExpectArgs{"/", "tmp.*"}, (*checkedOsFile)(nil), stub.UniqueError(5)), }, stub.UniqueError(5)}, {"Write", &Params{ParentPerm: 0700}, &TmpfileOp{ @@ -35,14 +35,14 @@ func TestTmpfileOp(t *testing.T) { Path: samplePath, Data: sampleData, }, nil, nil, []stub.Call{ - call("createTemp", stub.ExpectArgs{"/", "tmp.*"}, newCheckedFile(t, "tmp.32768", sampleDataString, stub.UniqueError(3)), nil), + call("createTemp", stub.ExpectArgs{"/", "tmp.*"}, newCheckedFile(t, "tmp.Close", sampleDataString, stub.UniqueError(3)), nil), }, stub.UniqueError(3)}, {"ensureFile", &Params{ParentPerm: 0700}, &TmpfileOp{ Path: samplePath, Data: sampleData, }, nil, nil, []stub.Call{ - call("createTemp", stub.ExpectArgs{"/", "tmp.*"}, newCheckedFile(t, "tmp.32768", sampleDataString, nil), nil), + call("createTemp", stub.ExpectArgs{"/", "tmp.*"}, newCheckedFile(t, "tmp.ensureFile", sampleDataString, nil), nil), call("ensureFile", stub.ExpectArgs{"/sysroot/etc/passwd", os.FileMode(0444), os.FileMode(0700)}, nil, stub.UniqueError(2)), }, stub.UniqueError(2)}, @@ -50,29 +50,29 @@ func TestTmpfileOp(t *testing.T) { Path: samplePath, Data: sampleData, }, nil, nil, []stub.Call{ - call("createTemp", stub.ExpectArgs{"/", "tmp.*"}, newCheckedFile(t, "tmp.32768", sampleDataString, nil), nil), + call("createTemp", stub.ExpectArgs{"/", "tmp.*"}, newCheckedFile(t, "tmp.bindMount", sampleDataString, nil), nil), call("ensureFile", stub.ExpectArgs{"/sysroot/etc/passwd", os.FileMode(0444), os.FileMode(0700)}, nil, nil), - call("bindMount", stub.ExpectArgs{"tmp.32768", "/sysroot/etc/passwd", uintptr(0x5), false}, nil, stub.UniqueError(1)), + call("bindMount", stub.ExpectArgs{"tmp.bindMount", "/sysroot/etc/passwd", uintptr(0x5), false}, nil, stub.UniqueError(1)), }, stub.UniqueError(1)}, {"remove", &Params{ParentPerm: 0700}, &TmpfileOp{ Path: samplePath, Data: sampleData, }, nil, nil, []stub.Call{ - call("createTemp", stub.ExpectArgs{"/", "tmp.*"}, newCheckedFile(t, "tmp.32768", sampleDataString, nil), nil), + call("createTemp", stub.ExpectArgs{"/", "tmp.*"}, newCheckedFile(t, "tmp.remove", sampleDataString, nil), nil), call("ensureFile", stub.ExpectArgs{"/sysroot/etc/passwd", os.FileMode(0444), os.FileMode(0700)}, nil, nil), - call("bindMount", stub.ExpectArgs{"tmp.32768", "/sysroot/etc/passwd", uintptr(0x5), false}, nil, nil), - call("remove", stub.ExpectArgs{"tmp.32768"}, nil, stub.UniqueError(0)), + call("bindMount", stub.ExpectArgs{"tmp.remove", "/sysroot/etc/passwd", uintptr(0x5), false}, nil, nil), + call("remove", stub.ExpectArgs{"tmp.remove"}, nil, stub.UniqueError(0)), }, stub.UniqueError(0)}, {"success", &Params{ParentPerm: 0700}, &TmpfileOp{ Path: samplePath, Data: sampleData, }, nil, nil, []stub.Call{ - call("createTemp", stub.ExpectArgs{"/", "tmp.*"}, newCheckedFile(t, "tmp.32768", sampleDataString, nil), nil), + call("createTemp", stub.ExpectArgs{"/", "tmp.*"}, newCheckedFile(t, "tmp.success", sampleDataString, nil), nil), call("ensureFile", stub.ExpectArgs{"/sysroot/etc/passwd", os.FileMode(0444), os.FileMode(0700)}, nil, nil), - call("bindMount", stub.ExpectArgs{"tmp.32768", "/sysroot/etc/passwd", uintptr(0x5), false}, nil, nil), - call("remove", stub.ExpectArgs{"tmp.32768"}, nil, nil), + call("bindMount", stub.ExpectArgs{"tmp.success", "/sysroot/etc/passwd", uintptr(0x5), false}, nil, nil), + call("remove", stub.ExpectArgs{"tmp.success"}, nil, nil), }, nil}, }) |
