name: Tests permissions: read-all on: pull_request: branches: - main workflow_dispatch: jobs: unit-tests: name: Unit Tests runs-on: ${{ matrix.os }} strategy: max-parallel: 4 matrix: os: [ubuntu-latest, windows-latest, macOS-latest] steps: - name: Checkout uses: actions/checkout@v5 - name: Set up Go uses: actions/setup-go@v6 with: go-version: stable - name: Run unit tests with coverage and race conditions checking if: matrix.os == 'ubuntu-latest' run: make test - name: Run unit tests without coverage and race conditions checking if: matrix.os != 'ubuntu-latest' run: go test ./... integration-tests: name: Integration Tests runs-on: ubuntu-latest services: postgres: image: postgres:9.5 env: POSTGRES_USER: postgres POSTGRES_PASSWORD: postgres POSTGRES_DB: postgres ports: - 5432:5432 options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5 steps: - name: Checkout uses: actions/checkout@v5 - name: Set up Go uses: actions/setup-go@v6 with: go-version: stable - name: Install Postgres client run: sudo apt update && sudo apt install -y postgresql-client - name: Run integration tests run: make integration-test env: PGHOST: 127.0.0.1 PGPASSWORD: postgres