name: PHP tests
on: [push, pull_request]
jobs:
  php-linter:
    name: PHP Syntax check 5.6|7.2|7.3|8.0|8.1
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v2

      - name: PHP syntax checker 5.6
        uses: prestashop/github-action-php-lint/5.6@master
        with:
          folder-to-exclude: '! -path "./src/Guzzle7/*"'

      - name: PHP syntax checker 7.2
        uses: prestashop/github-action-php-lint/7.2@master

      - name: PHP syntax checker 8.0
        uses: prestashop/github-action-php-lint/8.0@master

      - name: PHP syntax checker 8.1
        uses: prestashop/github-action-php-lint/8.1@master

  php-cs-fixer:
    name: PHP-CS-Fixer
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v2

      - name: Cache vendor folder
        uses: actions/cache@v2
        with:
          path: vendor
          key: ${{ runner.os }}-${{ hashFiles('**/composer.lock') }}

      - name: Cache composer folder
        uses: actions/cache@v2
        with:
          path: ~/.composer/cache
          key: php-composer-cache

      - run: composer install

      - name: Run PHP-CS-Fixer
        run: vendor/bin/php-cs-fixer fix --config .php_cs.dist.php --diff --dry-run

  phpstan:
    name: PHPStan
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v2

      - name: Cache vendor folder
        uses: actions/cache@v2
        with:
          path: vendor
          key: ${{ runner.os }}-${{ hashFiles('**/composer.lock') }}

      - name: Cache composer folder
        uses: actions/cache@v2
        with:
          path: ~/.composer/cache
          key: php-composer-cache

      - run: composer install

      - run: composer install
        working-directory: tests/Guzzle5

      - run: composer install
        working-directory: tests/Guzzle7

      - name: Run PHPStan for Guzzle 5
        run: vendor/bin/phpstan analyse -c tests/Guzzle5/phpstan.neon

      - name: Run PHPStan for Guzzle 7
        run: vendor/bin/phpstan analyse -c tests/Guzzle7/phpstan.neon

  phpunit:
    name: PHPUnit
    strategy:
      matrix:
        version: [5.6, 7.2, 7.4, 8.1]
    runs-on: ubuntu-latest
    steps:
      - name: Setup PHP with tools
        uses: shivammathur/setup-php@v2
        with:
          php-version: ${{ matrix.version }}

      - name: Checkout
        uses: actions/checkout@v2

      - name: Cache vendor folder
        uses: actions/cache@v2
        with:
          path: vendor
          key: ${{ runner.os }}-${{ hashFiles('**/composer.lock') }}

      - name: Cache composer folder
        uses: actions/cache@v2
        with:
          path: ~/.composer/cache
          key: php-composer-cache

      - run: COMPOSER=composer-legacy.json composer install

      - name: Run PHPUnit
        if: ${{ matrix.version == '5.6' }}
        run: vendor/bin/phpunit tests/unit/Guzzle5ConfigTest.php

      - name: Run PHPUnit
        if: ${{ matrix.version == '7.2' || matrix.version == '7.4' || matrix.version == '8.1' }}
        run: vendor/bin/phpunit tests/unit
