🐛 fix: BDD tests PostgreSQL connection using DLC_* environment variables
- Add getPostgresHost() function to use DLC_DATABASE_HOST env var - Default to dance-lessons-coach-postgres container name - Update local CI/CD script to set proper DLC_* environment variables - Fix Docker Compose test execution to pass correct database config - Ensure BDD tests can connect to PostgreSQL in both Docker and native modes Generated by Mistral Vibe. Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
This commit is contained in:
@@ -5,6 +5,7 @@ import (
|
|||||||
"database/sql"
|
"database/sql"
|
||||||
"fmt"
|
"fmt"
|
||||||
"net/http"
|
"net/http"
|
||||||
|
"os"
|
||||||
"strings"
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
@@ -15,6 +16,17 @@ import (
|
|||||||
"github.com/rs/zerolog/log"
|
"github.com/rs/zerolog/log"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// getPostgresHost returns the appropriate PostgreSQL host based on environment
|
||||||
|
// Uses DLC_DATABASE_HOST environment variable or defaults to container name
|
||||||
|
func getPostgresHost() string {
|
||||||
|
host := os.Getenv("DLC_DATABASE_HOST")
|
||||||
|
if host != "" {
|
||||||
|
return host
|
||||||
|
}
|
||||||
|
// Default to container name for Docker environments
|
||||||
|
return "dance-lessons-coach-postgres"
|
||||||
|
}
|
||||||
|
|
||||||
type Server struct {
|
type Server struct {
|
||||||
httpServer *http.Server
|
httpServer *http.Server
|
||||||
port int
|
port int
|
||||||
@@ -260,7 +272,7 @@ func createTestConfig(port int) *config.Config {
|
|||||||
AdminMasterPassword: "admin123",
|
AdminMasterPassword: "admin123",
|
||||||
},
|
},
|
||||||
Database: config.DatabaseConfig{
|
Database: config.DatabaseConfig{
|
||||||
Host: "localhost",
|
Host: getPostgresHost(), // Use container name in Docker, localhost otherwise
|
||||||
Port: 5432,
|
Port: 5432,
|
||||||
User: "postgres",
|
User: "postgres",
|
||||||
Password: "postgres",
|
Password: "postgres",
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
# Simulates the CI/CD pipeline but builds Docker image locally
|
# Simulates the CI/CD pipeline but builds Docker image locally
|
||||||
# Use this for local development and testing without Gitea
|
# Use this for local development and testing without Gitea
|
||||||
|
|
||||||
set -e
|
set -eu
|
||||||
|
|
||||||
echo "🚀 Local CI/CD Testing"
|
echo "🚀 Local CI/CD Testing"
|
||||||
echo "======================"
|
echo "======================"
|
||||||
@@ -34,7 +34,7 @@ echo ""
|
|||||||
|
|
||||||
# 2. Calculate dependency hash (match CI workflow)
|
# 2. Calculate dependency hash (match CI workflow)
|
||||||
echo "2. Calculating dependency hash..."
|
echo "2. Calculating dependency hash..."
|
||||||
DEPS_HASH=$(sha256sum go.mod go.sum | sha256sum | cut -d' ' -f1 | head -c 12)
|
export DEPS_HASH=$(sha256sum go.mod go.sum | sha256sum | cut -d' ' -f1 | head -c 12)
|
||||||
echo "Dependency hash: $DEPS_HASH"
|
echo "Dependency hash: $DEPS_HASH"
|
||||||
echo "✅ Dependency hash calculated"
|
echo "✅ Dependency hash calculated"
|
||||||
echo ""
|
echo ""
|
||||||
@@ -74,12 +74,13 @@ if [ "$HAS_DOCKER" = true ]; then
|
|||||||
sleep 2
|
sleep 2
|
||||||
done
|
done
|
||||||
|
|
||||||
# Set PostgreSQL environment variables
|
# Set PostgreSQL environment variables for BDD tests
|
||||||
export PGHOST="dance-lessons-coach-postgres"
|
export DLC_DATABASE_HOST="dance-lessons-coach-postgres"
|
||||||
export PGPORT=5432
|
export DLC_DATABASE_PORT=5432
|
||||||
export PGUSER=postgres
|
export DLC_DATABASE_USER=postgres
|
||||||
export PGPASSWORD=postgres
|
export DLC_DATABASE_PASSWORD=postgres
|
||||||
export PGDATABASE=dance_lessons_coach_bdd_test
|
export DLC_DATABASE_NAME=dance_lessons_coach_bdd_test
|
||||||
|
export DLC_DATABASE_SSL_MODE=disable
|
||||||
else
|
else
|
||||||
echo "⚠️ Docker not available - PostgreSQL tests will be skipped"
|
echo "⚠️ Docker not available - PostgreSQL tests will be skipped"
|
||||||
fi
|
fi
|
||||||
@@ -101,7 +102,7 @@ echo ""
|
|||||||
echo "6. Generating Swagger documentation..."
|
echo "6. Generating Swagger documentation..."
|
||||||
if [ "$USE_DOCKER_CACHE" = true ]; then
|
if [ "$USE_DOCKER_CACHE" = true ]; then
|
||||||
echo "Running in Docker Compose container..."
|
echo "Running in Docker Compose container..."
|
||||||
docker compose -f docker-compose.build.yml exec -w /workspace/pkg/server build-cache sh -c "go generate"
|
docker compose -f docker-compose.build.yml run -w /workspace/pkg/server build-cache sh -c "go generate"
|
||||||
else
|
else
|
||||||
echo "Running natively..."
|
echo "Running natively..."
|
||||||
cd pkg/server && go generate
|
cd pkg/server && go generate
|
||||||
@@ -114,7 +115,7 @@ echo ""
|
|||||||
echo "7. Building and testing..."
|
echo "7. Building and testing..."
|
||||||
if [ "$USE_DOCKER_CACHE" = true ]; then
|
if [ "$USE_DOCKER_CACHE" = true ]; then
|
||||||
echo "Running in Docker Compose container..."
|
echo "Running in Docker Compose container..."
|
||||||
docker compose -f docker-compose.build.yml exec -w /workspace build-cache sh -c "go build ./..."
|
docker compose -f docker-compose.build.yml run -w /workspace build-cache sh -c "go build ./..."
|
||||||
else
|
else
|
||||||
echo "Running natively..."
|
echo "Running natively..."
|
||||||
go build ./...
|
go build ./...
|
||||||
@@ -123,18 +124,26 @@ echo "✅ Code compiled successfully"
|
|||||||
|
|
||||||
if [ "$USE_DOCKER_CACHE" = true ]; then
|
if [ "$USE_DOCKER_CACHE" = true ]; then
|
||||||
echo "Running in Docker Compose container with PostgreSQL..."
|
echo "Running in Docker Compose container with PostgreSQL..."
|
||||||
docker compose -f docker-compose.build.yml exec \
|
docker compose -f docker-compose.build.yml run \
|
||||||
-e PGHOST=dance-lessons-coach-postgres \
|
-e DLC_DATABASE_HOST=dance-lessons-coach-postgres \
|
||||||
-e PGPORT=5432 \
|
-e DLC_DATABASE_PORT=5432 \
|
||||||
-e PGUSER=postgres \
|
-e DLC_DATABASE_USER=postgres \
|
||||||
-e PGPASSWORD=postgres \
|
-e DLC_DATABASE_PASSWORD=postgres \
|
||||||
-e PGDATABASE=dance_lessons_coach_bdd_test \
|
-e DLC_DATABASE_NAME=dance_lessons_coach_bdd_test \
|
||||||
|
-e DLC_DATABASE_SSL_MODE=disable \
|
||||||
-w /workspace \
|
-w /workspace \
|
||||||
build-cache \
|
build-cache \
|
||||||
sh -c "go test ./... -coverprofile=coverage.out -v && go tool cover -func=coverage.out > coverage.txt"
|
sh -c "go test ./... -coverprofile=coverage.out -v && go tool cover -func=coverage.out > coverage.txt"
|
||||||
else
|
else
|
||||||
echo "Running natively..."
|
echo "Running natively with Docker Compose PostgreSQL..."
|
||||||
go test ./... -cover -v
|
export DLC_DATABASE_HOST=dance-lessons-coach-postgres
|
||||||
|
export DLC_DATABASE_PORT=5432
|
||||||
|
export DLC_DATABASE_USER=postgres
|
||||||
|
export DLC_DATABASE_PASSWORD=postgres
|
||||||
|
export DLC_DATABASE_NAME=dance_lessons_coach_bdd_test
|
||||||
|
export DLC_DATABASE_SSL_MODE=disable
|
||||||
|
go test ./... -coverprofile=coverage.out -v
|
||||||
|
go tool cover -func=coverage.out > coverage.txt
|
||||||
fi
|
fi
|
||||||
echo "✅ Tests passed"
|
echo "✅ Tests passed"
|
||||||
echo ""
|
echo ""
|
||||||
@@ -143,7 +152,7 @@ echo ""
|
|||||||
echo "8. Building binaries..."
|
echo "8. Building binaries..."
|
||||||
if [ "$USE_DOCKER_CACHE" = true ]; then
|
if [ "$USE_DOCKER_CACHE" = true ]; then
|
||||||
echo "Running in Docker Compose container..."
|
echo "Running in Docker Compose container..."
|
||||||
docker compose -f docker-compose.build.yml exec -w /workspace build-cache sh -c "./scripts/build.sh"
|
docker compose -f docker-compose.build.yml run -w /workspace build-cache sh -c "./scripts/build.sh"
|
||||||
else
|
else
|
||||||
echo "Running natively..."
|
echo "Running natively..."
|
||||||
./scripts/build.sh
|
./scripts/build.sh
|
||||||
|
|||||||
Reference in New Issue
Block a user