Repository navigation
LSP and PhpStorm MVP: minimum features and performance #20
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Core CI | |
| on: | |
| pull_request: | |
| push: | |
| branches: [main] | |
| # Cancel superseded runs on the same branch (e.g. when a PR gets a new push) | |
| # so we don't pay for stale-commit mutation runs. The concurrency group is | |
| # keyed on the workflow name + ref, so this is per-workflow — the LSP CI | |
| # can run concurrently with this one without queueing. | |
| concurrency: | |
| group: ci-${{ github.workflow }}-${{ github.ref }} | |
| cancel-in-progress: true | |
| jobs: | |
| phpunit: | |
| name: PHPUnit | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Setup PHP 8.4 | |
| uses: shivammathur/setup-php@v2 | |
| with: | |
| php-version: '8.4' | |
| extensions: dom, json, mbstring, tokenizer | |
| coverage: none | |
| tools: composer:v2 | |
| - name: Install dependencies | |
| uses: ramsey/composer-install@v3 | |
| with: | |
| working-directory: core | |
| - name: Run PHPUnit | |
| run: make -C core test/unit | |
| infection: | |
| name: Mutation testing | |
| runs-on: ubuntu-latest | |
| needs: phpunit | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Setup PHP 8.4 (with Xdebug for coverage) | |
| uses: shivammathur/setup-php@v2 | |
| with: | |
| php-version: '8.4' | |
| extensions: dom, json, mbstring, tokenizer | |
| coverage: xdebug | |
| tools: composer:v2 | |
| - name: Install dependencies | |
| uses: ramsey/composer-install@v3 | |
| with: | |
| working-directory: core | |
| - name: Run Infection | |
| # --min-covered-msi=95 fails CI if the mutation score drops below | |
| # the gate. Threads=max parallelises mutant runs. | |
| run: make -C core test/mutation | |
| - name: Upload Infection report | |
| if: always() | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: infection-report | |
| path: | | |
| core/var/infection.log | |
| core/var/infection.html | |
| if-no-files-found: ignore | |
| retention-days: 14 |