package buildstep 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) } } }