Fix LocalReleaseMirror cache invalidation on StageBinary (test-fixture bug)
Summary
Root cause was misdiagnosed. The InstallScript_ReRun_OverExistingInstall_Succeeds test was failing because the mirror fixture's per-URL cache kept serving stale v1 content for the second install — production install-tentacle.ps1 was working correctly all along.
Real fix: invalidate _archiveBytesCache in StageBinary so re-staged content takes effect. The original install-tentacle.ps1 Expand-Archive -Force is restored unchanged.
Why this matters
The test was claiming a production regression (Expand-Archive -Force isn't overwriting?) but the bytes the script extracted on the second install were CORRECTLY v1's bytes — because that's what the cached zip was. The test's StageBinary(v2, ...) between calls didn't invalidate the cache, so the second install got the same v1 zip the first install had.
Test-discipline value: this is a great example of why deeper investigation matters — the surface symptom looked like a production bug, but careful tracing of the data flow revealed the test fixture as the actual culprit.
Files changed
| File | Change |
|---|---|
tests/Squid.WindowsUpgradeE2ETests/Infrastructure/LocalReleaseMirror.cs |
StageBinary now clears _archiveBytesCache
|
deploy/scripts/install-tentacle.ps1 |
(No actual change — restored to original) |
Test plan
-
dotnet buildgreen -
Windows CI: InstallScript_ReRun_OverExistingInstall_Succeedsturns green -
Existing 4+ consecutive failures on main are caused by this same cache issue