---
name: Quality Assurance
on:
  push:
    paths:
      - src/**/*.php
      - .github/workflows/quality-assurance.yml
    branches:
      - main
  pull_request:
    paths:
      - src/**/*.php
      - .github/workflows/quality-assurance.yml
    branches:
      - main

jobs:
  phpunit:
    name: PHPUnit tests on ${{ matrix.php }} ${{ matrix.composer-flags }}
    runs-on: ubuntu-latest
    strategy:
      matrix:
        php: [ '7.4', '8.0', '8.1', '8.2' ]
        composer-flags: [ '' ]
        upgrade-aws-sdk: [ 'no' ]
        phpunit-flags: [ '--coverage-text' ]
        include:
          - php: '7.4'
            composer-flags: '--prefer-lowest'
            phpunit-flags: '--no-coverage'
    steps:
      - uses: actions/checkout@v2
      - uses: shivammathur/setup-php@v2
        with:
          php-version: ${{ matrix.php }}
          coverage: pcov
          tools: composer:v2
      - run: composer update --no-progress ${{ matrix.composer-flags }}
      - run: COMPOSER_OPTS='${{ matrix.composer-flags }}' vendor/bin/phpunit ${{ matrix.phpunit-flags }}
      - run: vendor/bin/phpstan analyse -l 6 src
        if: ${{ matrix.php == '7.4' }}
      - run: vendor/bin/php-cs-fixer fix --diff --dry-run
        if: ${{ matrix.php == '7.4' }}

