All of mesh-build-go's buildstep Go module leaves mesh-catalog for modules/mesh-delivery-sdk: the step run, fetch and release and the regenerate-and-compare step as the package steprun, the CPU share as steprun/buildcpu, the conformance kit as steprun/conformance, the seat generator as seatgen with cmd/seatgen, and cmd/mesh-pack. The three build modules and the builder's and checker's tests import the SDK and keep no copy; the SDK requires nothing of mesh-catalog. Code the build modules share is the delivery domain's SDK, not one module's package. It carries the build-module round's two new files of that package (dropdetected.go 247c422f, storedbuilds.go 904b8aed). Builds: design 47 G §464, §680, §327, §420, §495 Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h
31 lines
1.0 KiB
Go
31 lines
1.0 KiB
Go
package steprun
|
|
|
|
import "testing"
|
|
|
|
// The shared warm caches are read under a throwaway writable layer (novox/hq ADR 0448; issue 1309): a candidate's step
|
|
// writes into them as a build does, and nothing it writes outlives it or reaches a later build; only a trunk build
|
|
// writes them.
|
|
func TestACandidatesStepWritesTheCachesOnlyIntoAThrowawayLayer(t *testing.T) {
|
|
fixedSystem(t)
|
|
iso := Isolation{Workspace: "/w", Caches: []string{"/var/cache/go-build", "/var/cache/npm"}}
|
|
argv, err := iso.Command("go", "test")
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
for _, c := range iso.Caches {
|
|
if !holds(argv, "--overlay-src", c, "--tmp-overlay", c) {
|
|
t.Errorf("the cache %s is not under a throwaway layer: %v", c, argv)
|
|
}
|
|
if holds(argv, "--bind", c, c) {
|
|
t.Errorf("a candidate's step writes the cache %s: %v", c, argv)
|
|
}
|
|
}
|
|
iso.WriteCaches = true
|
|
argv, _ = iso.Command("go", "build")
|
|
for _, c := range iso.Caches {
|
|
if !holds(argv, "--bind", c, c) || holds(argv, "--tmp-overlay", c) {
|
|
t.Errorf("a trunk build does not write the cache %s: %v", c, argv)
|
|
}
|
|
}
|
|
}
|