name: Tests on: push: branches: [main, develop] pull_request: branches: [main, develop] jobs: unit-tests: name: Unit Tests runs-on: ubuntu-latest steps: - uses: actions/checkout@v6 - name: Set up Go uses: actions/setup-go@v6 with: go-version: "1.24" - name: Run unit tests run: go test ./pkg/resolvespec ./pkg/restheadspec -v -cover - name: Generate coverage report run: | go test ./pkg/resolvespec ./pkg/restheadspec -coverprofile=coverage.out go tool cover -html=coverage.out -o coverage.html - name: Upload coverage uses: actions/upload-artifact@v5 with: name: coverage-report path: coverage.html integration-tests: name: Integration Tests runs-on: ubuntu-latest services: postgres: image: postgres:15-alpine env: POSTGRES_USER: postgres POSTGRES_PASSWORD: postgres POSTGRES_DB: postgres options: >- --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5 ports: - 5432:5432 steps: - uses: actions/checkout@v6 - name: Set up Go uses: actions/setup-go@v6 with: go-version: "1.24" - name: Create test databases env: PGPASSWORD: postgres run: | psql -h localhost -U postgres -c "CREATE DATABASE resolvespec_test;" psql -h localhost -U postgres -c "CREATE DATABASE restheadspec_test;" - name: Run resolvespec integration tests env: TEST_DATABASE_URL: "host=localhost user=postgres password=postgres dbname=resolvespec_test port=5432 sslmode=disable" run: go test -tags=integration ./pkg/resolvespec -v -coverprofile=coverage-resolvespec-integration.out - name: Run restheadspec integration tests env: TEST_DATABASE_URL: "host=localhost user=postgres password=postgres dbname=restheadspec_test port=5432 sslmode=disable" run: go test -tags=integration ./pkg/restheadspec -v -coverprofile=coverage-restheadspec-integration.out - name: Generate integration coverage env: TEST_DATABASE_URL: "host=localhost user=postgres password=postgres dbname=resolvespec_test port=5432 sslmode=disable" run: | go tool cover -html=coverage-resolvespec-integration.out -o coverage-resolvespec-integration.html go tool cover -html=coverage-restheadspec-integration.out -o coverage-restheadspec-integration.html - name: Upload resolvespec integration coverage uses: actions/upload-artifact@v5 with: name: resolvespec-integration-coverage-report path: coverage-resolvespec-integration.html - name: Upload restheadspec integration coverage uses: actions/upload-artifact@v5 with: name: integration-coverage-restheadspec-report path: coverage-restheadspec-integration