name: CI

on: [push, pull_request]

jobs:
  old:
    name: PHP ${{ matrix.php-versions }} Test on ${{ matrix.operating-system }}
    runs-on: ${{ matrix.operating-system }}
    strategy:
      matrix:
        operating-system: ['ubuntu-latest']
        php-versions: ['7.0']
        phpunit-versions: ['6.5.14']
    steps:
      - name: Checkout
        uses: actions/checkout@v2

      - name: Setup PHP
        uses: shivammathur/setup-php@v2
        with:
          php-version: ${{ matrix.php-versions }}
          extensions: mbstring, intl
          ini-values: post_max_size=256M, max_execution_time=180
          tools: phpunit:${{ matrix.phpunit-versions }}

      - name: Install dependencies
        run: composer self-update --1; composer install

      - name: PHPUnit tests
        run: phpunit

  moderate:
    name: PHP ${{ matrix.php-versions }} Test on ${{ matrix.operating-system }}
    runs-on: ${{ matrix.operating-system }}
    strategy:
      matrix:
        operating-system: ['ubuntu-latest']
        php-versions: ['7.1', '7.2', '7.3']
        phpunit-versions: ['7.5.20']
    steps:
      - name: Checkout
        uses: actions/checkout@v2

      - name: Setup PHP
        uses: shivammathur/setup-php@v2
        with:
          php-version: ${{ matrix.php-versions }}
          extensions: mbstring, intl, sodium
          ini-values: post_max_size=256M, max_execution_time=180
          tools: psalm:4, phpunit:${{ matrix.phpunit-versions }}

      - name: Install dependencies
        run: composer install

      - name: PHPUnit tests
        run: phpunit

      - name: Static Analysis
        run: psalm --output-format=github

  modern:
    name: PHP ${{ matrix.php-versions }} Test on ${{ matrix.operating-system }}
    runs-on: ${{ matrix.operating-system }}
    strategy:
      matrix:
        operating-system: ['ubuntu-latest']
        php-versions: ['7.4', '8.0', '8.1']
        phpunit-versions: ['latest']
    steps:
      - name: Checkout
        uses: actions/checkout@v2

      - name: Setup PHP
        uses: shivammathur/setup-php@v2
        with:
          php-version: ${{ matrix.php-versions }}
          extensions: mbstring, intl, sodium
          ini-values: post_max_size=256M, max_execution_time=180
          tools: psalm:4, phpunit:${{ matrix.phpunit-versions }}

      - name: Install dependencies
        run: composer install

      - name: PHPUnit tests
        run: phpunit

      - name: Static Analysis
        run: psalm --output-format=github
