v0.285.0 — a box keeps two controller versions (decision 56, R-745); the update clean-up's nil-stack crash (R-751)
gates / gates (push) Successful in 25s

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0159rPz1ZhFKsS53msqPYxtS
This commit is contained in:
2026-10-01 07:36:26 +02:00
parent a70c398dee
commit ac8ea72025
11 changed files with 473 additions and 4 deletions
+10 -1
View File
@@ -9,4 +9,13 @@ import (
// TestMain puts a silent docker stub on PATH for every test in this package: R-650, the fixtures
// here build a real stacks.Manager, and on the build host (DooPlex) that reached production Docker.
func TestMain(m *testing.M) { os.Exit(dockerexec.RunWithStub(m)) }
//
// R-751: the retention after an update or a remove runs in a GOROUTINE that outlives the test that triggered it — it
// wrote into a test's temp dir while the dir was being removed ("directory not empty") and once panicked on the
// vanished stack. No test here may leave one running: both seams are no-ops by default; the retention tests call
// RetainImagesAfter* directly, and the wiring tests swap the seams themselves.
func TestMain(m *testing.M) {
retainAfterUpdateFn = func(*Manager, string, map[string]InstalledImage) {}
retainAfterRemoveFn = func(*Manager, string, map[string]bool) {}
os.Exit(dockerexec.RunWithStub(m))
}