test(forge): add the forge-test VM runner (gate step for #678) #760

Merged
hexajon merged 5 commits from feat/forge-test-runner into main 2026-10-14 16:31:25 +00:00
Owner

Summary

Adds scripts/forge-vm/run-forge-tests.sh, the gate step that ADR 0052 and #678 call for. It resets the forge-test VM to its base snapshot, pushes the committed tree into the VM with git archive of HEAD, and runs the forge-tagged go test as the non-root test user over incus exec. Pushing rather than mounting means the VM holds no live handle on the host tree, there is no disk-device mount to linger or go resource-busy, and the run is always the frozen committed state. Also hardens provision.sh to remove stray devices and assert the device set (the old abandoned cache mount was breaking a clean start), and documents the runner in the forge-vm README. The run passes green against real throwaway Forgejo and Gitea servers. Refs #678. The remaining #678 work, wiring this into CI and migrating the fake-server tests, stays open.

## Summary Adds scripts/forge-vm/run-forge-tests.sh, the gate step that ADR 0052 and #678 call for. It resets the forge-test VM to its base snapshot, pushes the committed tree into the VM with git archive of HEAD, and runs the forge-tagged go test as the non-root test user over incus exec. Pushing rather than mounting means the VM holds no live handle on the host tree, there is no disk-device mount to linger or go resource-busy, and the run is always the frozen committed state. Also hardens provision.sh to remove stray devices and assert the device set (the old abandoned cache mount was breaking a clean start), and documents the runner in the forge-vm README. The run passes green against real throwaway Forgejo and Gitea servers. Refs #678. The remaining #678 work, wiring this into CI and migrating the fake-server tests, stays open.
refactor(forge): push the committed tree into the VM instead of mounting it
Some checks failed
drift / surface-diff (pull_request) Successful in 41s
drift / forgejo-smoke (pull_request) Has been skipped
ci / mcp-conformance (pull_request) Successful in 1m27s
ci / mcp-conformance (push) Successful in -26s
drift / govulncheck (push) Has been skipped
drift / surface-diff (push) Successful in -34s
drift / forgejo-smoke (push) Has been skipped
ci / gate (pull_request) Failing after 3m51s
ci / gate (push) Successful in 12m22s
drift / govulncheck (pull_request) Has been skipped
655929b8a1
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
sixfold-space/madtea!760
No description provided.