name: Backend Tests description: Runs Go tests with PostgreSQL for all backend packages. on: push: branches: - main - develop pull_request: jobs: test: runs-on: ubuntu-latest defaults: run: shell: sh services: postgres: image: postgres:16-alpine env: POSTGRES_USER: myuser POSTGRES_PASSWORD: mypassword POSTGRES_DB: mydb options: >- --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5 steps: - name: Checkout uses: actions/checkout@v4 - name: Setup Go uses: actions/setup-go@v5 with: go-version: "1.25" cache: false - name: Install system deps run: apk add --no-cache postgresql-client - name: Wait for PostgreSQL run: | for i in $(seq 1 30); do pg_isready -h postgres -U myuser && break sleep 1 done - name: Build working-directory: backend run: go build ./... - name: Vet working-directory: backend run: go vet ./... - name: Test (all packages) working-directory: backend run: go test -tags "test,dev" -count=1 -v -timeout 120s ./handlers/... ./auth/... ./mw/... ./internal/... ./db/... env: PGHOST: postgres PGUSER: myuser PGPASSWORD: mypassword PGDATABASE: mydb