// Package testenv builds and tears down an end-to-end Galaxy stack
// (Postgres, Redis, mailpit, backend, gateway, optionally a game-engine
// container) for use by the integration test suite. Tests interact with
// the platform exclusively through the typed clients exposed here; no
// other package in this module reaches the underlying containers
// directly.
package testenv

import (
	"context"
	"testing"
	"time"

	"github.com/testcontainers/testcontainers-go"
)

// RequireDocker skips the test when no Docker daemon is reachable. Each
// scenario starts with this guard so a CI worker without Docker emits a
// clear SKIP rather than a confusing failure.
func RequireDocker(t *testing.T) {
	t.Helper()
	ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
	defer cancel()
	provider, err := testcontainers.NewDockerProvider()
	if err != nil {
		t.Skipf("docker provider unavailable: %v", err)
		return
	}
	defer provider.Close()
	if err := provider.Health(ctx); err != nil {
		t.Skipf("docker daemon unreachable: %v", err)
	}
}
