feat: add integration test infra and bootstrapper updates

This commit is contained in:
2026-06-03 19:27:34 -05:00
parent 1392a503f1
commit 7f0176cbf5
45 changed files with 5751 additions and 589 deletions
+18 -3
View File
@@ -30,11 +30,8 @@ Tagged GitHub releases build and upload a precompiled `bootstrap_windows_env.exe
.\bootstrap_windows_env.exe --only wsl
.\bootstrap_windows_env.exe --no-ai
.\bootstrap_windows_env.exe --no-wsl
.\bootstrap_windows_env.exe --no-restore-points
```
`--no-restore-points` skips the two System Restore checkpoints in the `os` phase. Use this on Windows Server SKUs (including GitHub Actions `windows-latest` runners), where `Checkpoint-Computer` is not supported.
## Phases
`os` runs before any application installation. It invokes Windows Update/Microsoft Update, stops for reboot when required, creates a restore point, runs Chris Titus Tech WinUtil with the managed sane-default config, enables Developer Mode and Windows sudo, applies power/update/UI/store/taskbar defaults, then creates a second restore point before package installation.
@@ -49,6 +46,24 @@ Visual Studio Community 2026 is installed as `Microsoft.VisualStudio.Community`
`wsl` enables WSL prerequisites, installs the current official `FedoraLinux-*` distro reported by `wsl --list --online`, stops for reboot or first-launch username creation when needed, then invokes the latest Linux bootstrap release with `--wsl --headless --yes`.
## Tests
Unit tests run on every pull request via `.github/workflows/unit-test.yml`:
```powershell
go test ./...
```
End-to-end integration runs against a real Windows client VM through Vagrant +
Hyper-V. It is not run in CI (GitHub-hosted runners are Windows Server and have
no Hyper-V), so execute it locally:
```powershell
go run ./test/integration
```
See `test/integration/README.md` for prerequisites, flags, and tuning options.
## Current Deferrals
`Webcamoid` is deferred because no exact `winget` manifest was available during implementation. Native Docker Desktop, Podman Desktop, Buildah, Minikube, Firecracker, QEMU, virt-manager, Windows Terminal, and VS Code are also intentionally excluded from Windows v1.