Skip to content

Add Phase 13 PR-2: WindowsTentacleBinaryFixture (real binary build)

Summary

  • New WindowsTentacleBinaryFixture mirroring Linux's LinuxTentacleBinaryFixture — publishes real Squid.Tentacle.exe (self-contained win-x64) via dotnet publish, caches it, exposes EnsureBuilt/EnsureBuiltV2/Run/StartLongRunning for downstream tests
  • New TentacleWindowsBinarySmokeE2ETests smoke layer (Tier 🔵) — pins build pipeline contract before Phase 13 PR-3 (real-binary-as-polling-agent) lands
  • New WindowsUpgradeE2ECategories.TentacleBinary = "WindowsTentacleBinaryE2E" constant
  • CI: tentacle-windows-e2e.yml filter now includes WindowsTentacleBinaryE2E so the smoke test runs on both manual + nightly + push-to-main triggers

Why this matters

Existing Windows tests call into production command classes directly via the public seam (RegisterCommand.ExecuteAsync, ServiceCommand.ExecuteAsync — Rule 12.9). That's the right pattern for unit-of-CLI testing, but can't catch publish-pipeline regressions:

  • PublishSingleFile target produces a different output layout
  • RID drift (win-x64 vs portable)
  • Self-contained bundle missing a native dependency

Phase 13 PR-3 will be the first Windows test that needs the actual exe at the path stamped into the SCM binPath (mirroring Linux PR-1's systemd ExecStart pattern). The in-process production class won't suffice for that.

Convention parity with Linux

Aspect Linux fixture Windows fixture
BuildVersion 99.99.99 99.99.99 (same — proves cross-OS AssemblyVersion.Canonical consistency)
BuildVersionV2 100.0.0 100.0.0
Publish flags -r linux-x64 --self-contained true -p:PublishSingleFile=true -r win-x64 --self-contained true -p:PublishSingleFile=true
EnsureBuilt bin/squid-tentacle-binary-fixture/linux-x64/Squid.Tentacle bin/squid-tentacle-binary-fixture/win-x64/Squid.Tentacle.exe
Cold build budget 5 min 5 min

Coverage tier

  • Fixture itself: 🔵 Fixture-only (Rule 12)
  • Smoke tests: 🔵 Fixture-only — proves the build pipeline works before downstream tests consume it
  • Downstream PR-3 test: 🟢 High-fidelity (real binary + real polling channel + real script dispatch)

Test plan

  • CI on windows-latest runs Category=WindowsTentacleBinaryE2E:
    • Binary_Version_PrintsBuildVersionStamp passes — proves cold publish + version subcommand contract
    • Binary_Help_ProducesUsageOutput passes — sanity that Program.cs's command-resolver doesn't crash
  • dotnet build tests/Squid.WindowsTentacleE2ETests/Squid.WindowsTentacleE2ETests.csproj — 0 errors

Phase 13 follow-ups

  • PR-3 (next): Windows real-binary as polling agent (mirror Linux R1h)
  • PR-4: Keep-alive / soak — multi-second probe stability for both OSes

🤖 Generated with Claude Code

Merge request reports

Loading