From 88d9a6163e9e91b55b6ebe71f335e7617c76b04e Mon Sep 17 00:00:00 2001 From: Ophestra Date: Tue, 17 Feb 2026 14:13:08 +0900 Subject: container/initplace: return nil for createTemp error injection This matches os package behaviour, and avoids adding the cleanup. Signed-off-by: Ophestra --- container/dispatcher_test.go | 7 +++++-- container/initplace_test.go | 22 +++++++++++----------- 2 files changed, 16 insertions(+), 13 deletions(-) (limited to 'container') 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}, }) -- cgit v1.3.1