veza/veza-backend-api/tests/transactions/main_test.go
senke f84dbf5c66 test(backend): gate testcontainers tests behind VEZA_SKIP_INTEGRATION
The Forgejo runner doesn't expose /var/run/docker.sock, so anything
relying on testcontainers-go panicked with "Cannot connect to the
Docker daemon". This caused internal/testutils, tests/transactions
and tests/integration to fail wholesale, plus internal/handlers
to hit the 5min hard timeout while waiting for container startup.

Approach (least invasive):
- testutils.GetTestContainerDB short-circuits when VEZA_SKIP_INTEGRATION=1
  is set, returning a sentinel error immediately instead of attempting
  three retries against a missing Docker socket.
- Add testutils.SkipIfNoIntegration helper for granular per-test skips.
- Add TestMain to internal/testutils, tests/transactions and
  tests/integration packages that os.Exit(0) when the env var is set,
  so the entire integration-only package is silently skipped in CI.
- Wire the helper into the three setupTestDB* functions in
  tests/transactions/ for local runs (where TestMain doesn't fire when
  using -run on individual tests).

Local nightly runs / dev workstations leave VEZA_SKIP_INTEGRATION unset
and exercise the full suite against testcontainers as before.
2026-04-14 11:45:19 +02:00

21 lines
617 B
Go

package transactions
import (
"fmt"
"os"
"testing"
)
// TestMain skips the entire transactions test suite when Docker is unavailable.
// All tests in this package rely on testcontainers-go to spin up a real Postgres
// container so transactional rollback semantics can be validated.
//
// Set by CI: VEZA_SKIP_INTEGRATION=1 on Forgejo runners that don't expose
// the Docker socket. Local dev / nightly jobs leave it unset.
func TestMain(m *testing.M) {
if os.Getenv("VEZA_SKIP_INTEGRATION") == "1" {
fmt.Println("transactions: skipping package (VEZA_SKIP_INTEGRATION=1)")
os.Exit(0)
}
os.Exit(m.Run())
}