//go:build smoke // Package smoketest is the end-to-end smoke gate for banger's supported // two-service systemd model. It runs only when the build is tagged // `smoke`, which keeps it out of `go test ./...` on contributor // machines and CI. // // The suite touches global host state: it installs instrumented // bangerd.service + bangerd-root.service, drives real Firecracker/KVM // scenarios, copies covdata back out, then purges the smoke-owned // install on exit. It refuses to run if a non-smoke install is already // on the host (see the marker file under /etc/banger). // // The harness expects three env vars, normally set by `make smoke`: // // BANGER_SMOKE_BIN_DIR — instrumented banger / bangerd / vsock-agent // BANGER_SMOKE_COVER_DIR — coverage output directory (GOCOVERDIR) // BANGER_SMOKE_XDG_DIR — scratch root for fake homes, fake repos, etc. // // Coverage: the test binary itself is not instrumented, but every // banger / bangerd subprocess it spawns is, and writes covdata into // BANGER_SMOKE_COVER_DIR. Service-side covdata under /var/lib/banger // is copied out at teardown. package smoketest