--- name: Tests on: pull_request: branches: - main paths-ignore: - "docs/**" push: branches: - main paths-ignore: - "docs/**" permissions: contents: read env: GOTOOLCHAIN: local GOEXPERIMENT: cgocheck2 jobs: tests-linux: name: Tests (Linux, PHP ${{ matrix.php-versions }}) runs-on: ubuntu-latest strategy: fail-fast: false matrix: php-versions: ["8.2", "8.3", "8.4"] env: GOMAXPROCS: 10 LIBRARY_PATH: ${{ github.workspace }}/watcher/target/lib steps: - uses: actions/checkout@v4 - uses: actions/setup-go@v5 with: go-version: "1.24" 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: Install e-dant/watcher uses: ./.github/actions/watcher - name: Set CGO flags run: echo "CGO_CFLAGS=-I${PWD}/watcher/target/include $(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 -tags nobadger,nomysql,nopgx -race -v ./... - name: Run Fuzzing Tests working-directory: caddy/ run: go test -fuzz FuzzRequest -fuzztime 20s - 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@v8 if: matrix.php-versions == '8.4' with: version: latest tests-mac: name: Tests (macOS, PHP 8.4) runs-on: macos-latest env: HOMEBREW_NO_AUTO_UPDATE: 1 steps: - uses: actions/checkout@v4 - uses: actions/setup-go@v5 with: go-version: "1.24" cache-dependency-path: | go.sum caddy/go.sum - uses: shivammathur/setup-php@v2 with: php-version: 8.4 ini-file: development coverage: none tools: none env: phpts: ts debug: true - name: Set Set CGO flags run: | { echo "CGO_CFLAGS=-I/opt/homebrew/include/ $(php-config --includes)" echo "CGO_LDFLAGS=-L/opt/homebrew/lib/ $(php-config --ldflags) $(php-config --libs)" } >> "${GITHUB_ENV}" - name: Build run: go build -tags nowatcher - name: Run library tests run: go test -tags nowatcher -race -v ./... - name: Run Caddy module tests working-directory: caddy/ run: go test -tags nowatcher,nobadger,nomysql,nopgx -race -v ./...