name: Tests

on:
  push: ~
  pull_request: ~

jobs:
  phpcs:
    name: PHPCS
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v2

      - uses: shivammathur/setup-php@v2
        with:
          php-version: 5.4
          extensions: curl, mbstring
          coverage: none
          tools: composer:v2, cs2pr

      - run: composer update --no-progress
      - run: vendor/bin/phpcs -q --report=checkstyle | cs2pr

  phpunit:
    name: PHPUnit on ${{ matrix.php }} ${{ matrix.composer-flags }}
    runs-on: ubuntu-latest
    strategy:
      matrix:
        php: ['5.4', '5.5', '5.6']
        coverage: [true]
        composer-flags: ['']
        include:
          - php: '5.4'
            coverage: false
            composer-flags: '--prefer-lowest'

    steps:
      - uses: actions/checkout@v2

      - uses: shivammathur/setup-php@v2
        with:
          php-version: ${{ matrix.php }}
          extensions: curl, mbstring
          coverage: pcov
          tools: composer:v2

      - run: echo "::add-matcher::${{ runner.tool_cache }}/phpunit.json"

      - name: "Use PHPUnit 5.0+ on PHP 5.6"
        run: composer require --no-update --dev phpunit/phpunit:^5.0
        if: "matrix.php == '5.6'"

      - run: composer update --no-progress ${{ matrix.composer-flags }}

      - run: vendor/bin/phpunit --no-coverage
        if: ${{ !matrix.coverage }}

      - run: vendor/bin/phpunit --coverage-text --coverage-clover=coverage.clover
        if: ${{ matrix.coverage }}

      - run: php vendor/bin/ocular code-coverage:upload --format=php-clover coverage.clover
        if: ${{ matrix.coverage }}
