biurad/php-http-galaxy

View on GitHub
.github/workflows/tests.yml

Summary

Maintainability
Test Coverage
name: Tests
on: [push, pull_request]

jobs:
  build:
    strategy:
      matrix:
        os: [ubuntu-latest, windows-latest, macos-latest]
        php: ['7.2', '7.3', '7.4']
        coverage: ["true"]
        composer-flags: [""]
        include:
          - php: "8.0"
            coverage: "false"
            composer-flags: "--ignore-platform-req=php"
    runs-on: ubuntu-latest

    steps:
      - name: Checkout
        uses: actions/checkout@v2

      - name: Setup PHP, with composer and extensions
        uses: shivammathur/setup-php@v2
        with:
          php-version: ${{ matrix.php }}
          extensions: mbstring, curl
          coverage: xdebug
          tools: composer:v2

      - name: Get composer cache directory
        id: composercache
        run: echo "::set-output name=dir::$(composer config cache-files-dir)"

      - name: Cache composer dependencies
        uses: actions/cache@v2
        with:
          path: ${{ steps.composercache.outputs.dir }}
          # Use composer.json for key, if composer.lock is not committed.
          # key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.json') }}
          key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
          restore-keys: ${{ runner.os }}-composer-

      - name: Install dependencies
        run: composer update --no-progress --optimize-autoloader ${{ matrix.composer-flags }}

      - name: Check Coding Standard
        run: |
          if [ "${{ matrix.coverage }}" == "true" ]; then
            vendor/bin/phpcs
          fi

      - name: Test with Phpunit
        run: |
          if [ "${{ !matrix.coverage }}" == "false" ]; then
            vendor/bin/phpunit --no-coverage
          fi
          if [ "${{ matrix.coverage }}" == "true" ]; then
            vendor/bin/phpunit --coverage-text --coverage-clover=coverage.clover
            bash <(curl -s https://codecov.io/bash) -f coverage.clover
          fi

      - name: Test with Psalm
        run: vendor/bin/psalm