name: Tests

permissions:
  contents: read
  packages: write

on:
  workflow_call:
  workflow_dispatch:
  push:
    branches:
      - main
  schedule:
    - cron: "0 14 * * 2" # 2pm Patch Tuesday

concurrency:
  group: ${{ github.head_ref || github.run_id }}
  cancel-in-progress: true

jobs:
  phpcsfixer:
    name: PHP-CS-Fixer
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: PHP-CS-Fixer
        uses: docker://oskarstark/php-cs-fixer-ga

  phpunit:
    name: PHPUnit
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: shivammathur/setup-php@v2
        with:
          coverage: xdebug
          extensions: apcu, redis, sockets, zip
      - run: composer install
      - uses: php-actions/phpunit@v3

  phpstan:
    name: PHPStan
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: shivammathur/setup-php@v2
        with:
          coverage: xdebug
          extensions: apcu, redis, sockets, zip
      - run: composer install
      - uses: php-actions/phpstan@v3
        with:
          path: src/