---
name: Tests
on:
  pull_request:
    branches:
      - main
    paths-ignore:
      - 'docs/**'
  push:
    branches:
      - main
    paths-ignore:
      - 'docs/**'
jobs:
  tests:
    runs-on: ubuntu-latest
    strategy:
      fail-fast: false
      matrix:
        php-versions: ['8.2', '8.3']
    env:
      GOEXPERIMENT: cgocheck2
      GOMAXPROCS: 10
    steps:
      -
        uses: actions/checkout@v4
      -
        uses: actions/setup-go@v5
        with:
          go-version: '1.22'
          cache-dependency-path: |
            go.sum 
            caddy/go.sum
      -
        uses: shivammathur/setup-php@v2
        with:
          php-version: ${{ matrix.php-versions }}
          ini-file: development
          coverage: none
          tools: none
        env:
          phpts: ts
          debug: true
      -
        name: Set CGO flags
        run: |
          echo "CGO_CFLAGS=$(php-config --includes)" >> "$GITHUB_ENV"
      -
        name: Build
        run: go build          
      -
        name: Build testcli binary
        working-directory: internal/testcli/
        run: go build
      -
        name: Run library tests
        run: go test -race -v ./...
      -
        name: Run Caddy module tests
        working-directory: caddy/
        run: go test -race -v ./...
      -
        name: Build the server
        working-directory: caddy/frankenphp/
        run: go build
      -
        name: Start the server
        working-directory: testdata/
        run: sudo ../caddy/frankenphp/frankenphp start
      -
        name: Run integrations tests
        run: ./reload_test.sh
      -
        name: Lint Go code
        uses: golangci/golangci-lint-action@v6
        if: matrix.php-versions == '8.3'
        with:
          version: latest
