name: Tests on: push: ~ pull_request: ~ permissions: contents: read jobs: phpcs: name: PHPCS runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - uses: shivammathur/setup-php@v2 with: php-version: 7.4 extensions: curl, mbstring, yaml 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 continue-on-error: ${{ !matrix.stable }} strategy: fail-fast: false matrix: php: ['7.4', '8.0', '8.1'] stable: [true] coverage: [true] composer-flags: [''] include: - php: '7.4' stable: true coverage: false composer-flags: '--prefer-lowest' - php: '8.2' stable: false coverage: false composer-flags: '--ignore-platform-req=php' steps: - uses: actions/checkout@v3 with: fetch-depth: 0 - uses: shivammathur/setup-php@v2 with: php-version: ${{ matrix.php }} extensions: curl, mbstring, yaml coverage: pcov tools: composer:v2 - run: echo "::add-matcher::${{ runner.tool_cache }}/phpunit.json" - 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 }} continue-on-error: true phpstan: name: PHPStan runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - uses: shivammathur/setup-php@v2 with: php-version: 7.4 extensions: curl, mbstring, yaml coverage: none tools: composer:v2 - run: composer update --no-progress - run: vendor/bin/phpstan analyse --no-progress psalm: name: Psalm runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - uses: shivammathur/setup-php@v2 with: php-version: 7.4 extensions: curl, mbstring, yaml coverage: none tools: composer:v2 - run: composer update --no-progress - run: vendor/bin/psalm --no-progress --stats --threads=$(nproc) --output-format=github --shepherd docs-lint: permissions: contents: read # for actions/checkout to fetch code statuses: write # for github/super-linter/slim to mark status of each linter run name: Markdownlint runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - uses: github/super-linter/slim@v5.0.0 env: DEFAULT_BRANCH: main GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} LINTER_RULES_PATH: '.' # From https://github.com/github/super-linter/pull/859#issuecomment-709625090 VALIDATE_MARKDOWN: true MARKDOWN_CONFIG_FILE: docs/.markdownlint.yml FILTER_REGEX_INCLUDE: '/docs/.*'