fix: set DRIVER=sqlite in CI to prevent TestMain from spawning child processes

Problem:
- store/test/TestMain checks if DRIVER env var is set
- If not set, it runs tests for all 3 drivers (sqlite, mysql, postgres)
  by spawning child 'go test' processes
- This conflicts with t.Parallel() in individual tests
- CI workflow didn't set DRIVER, triggering multi-driver execution

Solution:
- Set DRIVER=sqlite in GitHub Actions workflow
- TestMain will run tests once with SQLite driver
- Tests run in parallel with t.Parallel() as intended
- Avoids spawning child processes and race conditions

Why SQLite:
- Fastest test execution (no container startup)
- Sufficient for CI validation
- MySQL/Postgres can be tested locally when needed

This fixes the 'table already exists' errors and test flakiness
in CI while maintaining parallel execution benefits.
This commit is contained in:
Johnny 2026-01-14 22:50:30 +08:00
parent 411e8fc5b0
commit e082adf7b6
1 changed files with 2 additions and 0 deletions

View File

@ -74,6 +74,8 @@ jobs:
./cmd/... ./internal/... ./proto/...
;;
esac
env:
DRIVER: sqlite # Use SQLite for fastest test execution
- name: Upload coverage
if: github.event_name == 'push' && github.ref == 'refs/heads/main'