aboutsummaryrefslogtreecommitdiffhomepage
path: root/internal/rosa
diff options
context:
space:
mode:
authorOphestra <cat@gensokyo.uk>2026-02-17 14:13:08 +0900
committerOphestra <cat@gensokyo.uk>2026-02-17 14:16:54 +0900
commit88d9a6163e9e91b55b6ebe71f335e7617c76b04e (patch)
treef52b7da1651409120ee6add658204ea29cde39da /internal/rosa
parent47860b038750864b8346e4d0594a272ba3fc2b2f (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 'internal/rosa')
-rw-r--r--internal/rosa/hakurei.go43
1 files changed, 38 insertions, 5 deletions
diff --git a/internal/rosa/hakurei.go b/internal/rosa/hakurei.go
index a494fd5f..be184302 100644
--- a/internal/rosa/hakurei.go
+++ b/internal/rosa/hakurei.go
@@ -44,11 +44,44 @@ chmod -R +w /usr/src/hakurei
cd /usr/src/hakurei
HAKUREI_VERSION='v`+version+`'
-`+script, pkg.Path(AbsUsrSrc.Append("hakurei"), true, pkg.NewHTTPGetTar(
- nil, "https://git.gensokyo.uk/security/hakurei/archive/"+
- "v"+version+".tar.gz",
- mustDecode(checksum),
- pkg.TarGzip,
+`+script, pkg.Path(AbsUsrSrc.Append("hakurei"), true, t.NewPatchedSource(
+ "hakurei", version, pkg.NewHTTPGetTar(
+ nil, "https://git.gensokyo.uk/security/hakurei/archive/"+
+ "v"+version+".tar.gz",
+ mustDecode(checksum),
+ pkg.TarGzip,
+ ), true, [2]string{"createTemp-error-injection", `diff --git a/container/dispatcher_test.go b/container/dispatcher_test.go
+index 5de37fc..fe0c4db 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 afeddbe..1c2f20b 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{
+`},
)), pkg.Path(AbsUsrSrc.Append("hostname", "main.go"), false, pkg.NewFile(
"hostname.go",
[]byte(`