@@ -184,6 +184,60 @@ jobs:
184184 INFECTION_BADGE_API_KEY : ${{ secrets.INFECTION_BADGE_API_KEY }}
185185 STRYKER_DASHBOARD_API_KEY : ${{ secrets.STRYKER_DASHBOARD_API_KEY }}
186186
187+ mutation-tests-phpstan :
188+ name : " Mutation tests with PHPStan"
189+
190+ runs-on : ${{ matrix.operating-system }}
191+
192+ strategy :
193+ matrix :
194+ dependencies :
195+ - " locked"
196+ php-version :
197+ - " 8.4"
198+ operating-system :
199+ - " ubuntu-latest"
200+
201+ steps :
202+ - name : " Checkout"
203+ uses : " actions/checkout@v4"
204+
205+ - name : " Install PHP"
206+ uses : " shivammathur/setup-php@2.33.0"
207+ with :
208+ coverage : " xdebug"
209+ php-version : " ${{ matrix.php-version }}"
210+ extensions : intl, sodium
211+ ini-values : memory_limit=-1, zend.assertions=1
212+
213+ - name : " Install dependencies"
214+ uses : " ramsey/composer-install@3.1.0"
215+ with :
216+ dependency-versions : " ${{ matrix.dependencies }}"
217+
218+ - name : " Install CI dependencies"
219+ uses : " ramsey/composer-install@3.1.0"
220+ with :
221+ dependency-versions : " ${{ matrix.dependencies }}"
222+ working-directory : " tools"
223+ custom-cache-suffix : " ci"
224+
225+ - name : " Warmup PHPStan"
226+ run : " tools/vendor/bin/phpstan analyse --memory-limit=-1"
227+
228+ - name : " Infection"
229+ run : " tools/vendor/bin/phpstan-mutant-killer-infection-runner --phpstan-config phpstan.neon --log log.txt --threads=$(nproc)"
230+ env :
231+ INFECTION_BADGE_API_KEY : ${{ secrets.INFECTION_BADGE_API_KEY }}
232+ STRYKER_DASHBOARD_API_KEY : ${{ secrets.STRYKER_DASHBOARD_API_KEY }}
233+
234+ - uses : actions/upload-artifact@v4
235+ if : ${{ !cancelled() }}
236+ with :
237+ name : log.txt
238+ path : log.txt
239+ if-no-files-found : error
240+
187241 compatibility :
188242 name : " Test Compatibility"
189243
0 commit comments