diff --git a/.gitignore b/.gitignore index c4d0656bfb..be1ba83abe 100644 --- a/.gitignore +++ b/.gitignore @@ -3,6 +3,9 @@ /compiler/vendor /conf/config.local.yml /build-cs +/build-infection +/infection.json5 +/infection.phar /vendor /.idea/* !.idea/icon.png diff --git a/Makefile b/Makefile index f5476d6067..6386b03efe 100644 --- a/Makefile +++ b/Makefile @@ -163,3 +163,23 @@ name-collision: composer-dependency-analyser: php vendor/bin/composer-dependency-analyser --config build/composer-dependency-analyser.php + +.PHONY: infection +infection: + git -C build-infection pull || git clone https://github.com/phpstan/build-infection.git + git -C build-infection fetch origin && git -C build-infection reset --hard origin/1.x + composer install --working-dir build-infection --no-interaction --no-progress + php build-infection/bin/infection-config.php --source-directory='build/PHPStan/Build'> infection.json5 + XDEBUG_MODE=coverage php tests/vendor/bin/paratest \ + --coverage-xml=tmp/coverage/coverage-xml \ + --log-junit=tmp/coverage/junit.xml + version=$(shell jq -r '.packages[] | select(.name == "infection/infection") | .version' build-infection/composer.lock); \ + wget https://github.com/infection/infection/releases/download/$$version/infection.phar --timestamping; + php infection.phar \ + --configuration=infection.json5 \ + --git-diff-base=origin/2.1.x \ + --git-diff-lines \ + --coverage=tmp/coverage \ + --skip-initial-tests \ + --ignore-msi-with-no-mutations \ + --logger-text=php://stdout;