From 75bb6fa393dc847e79243c3ac1a6a3b8e9899cae Mon Sep 17 00:00:00 2001 From: Alexey Kopytko Date: Wed, 17 Oct 2018 08:00:08 +0900 Subject: [PATCH 1/2] Update Psalm to 2.0 and sort packages --- composer.json | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/composer.json b/composer.json index 6ffc0eb..cdaaa07 100644 --- a/composer.json +++ b/composer.json @@ -13,16 +13,16 @@ "symfony/polyfill-php71": "^1.7" }, "require-dev": { - "phpunit/phpunit": ">=6", - "php-coveralls/php-coveralls": "^2.0", - "friendsofphp/php-cs-fixer": "^2.11", "codacy/coverage": "^1.4", + "friendsofphp/php-cs-fixer": "^2.11", + "infection/infection": "~0.8", "league/pipeline": "^1.0|^0.3", + "mockery/mockery": "^1.0", "phan/phan": "^0.12", - "infection/infection": "~0.8", + "php-coveralls/php-coveralls": "^2.0", "phpstan/phpstan": "~0.9", - "mockery/mockery": "^1.0", - "vimeo/psalm": ">=1.1" + "phpunit/phpunit": ">=6", + "vimeo/psalm": "^2.0" }, "license": "Apache-2.0", "minimum-stability": "dev", @@ -40,5 +40,8 @@ "dev-master": "2.x-dev", "dev-future": "3.x-dev" } + }, + "config": { + "sort-packages": true } } From ab45b7a09d72714146c999c5782e54f50ce7ab53 Mon Sep 17 00:00:00 2001 From: Alexey Kopytko Date: Wed, 17 Oct 2018 17:05:59 +0900 Subject: [PATCH 2/2] A switch to a multi-stage CI build --- .coveralls.yml | 2 ++ .travis.yml | 33 ++++++++++++++++++++++++++------- Makefile | 33 ++++++++++++++++++++++++--------- 3 files changed, 52 insertions(+), 16 deletions(-) create mode 100644 .coveralls.yml diff --git a/.coveralls.yml b/.coveralls.yml new file mode 100644 index 0000000..d7f4b3c --- /dev/null +++ b/.coveralls.yml @@ -0,0 +1,2 @@ +coverage_clover: + - build/logs/clover.xml diff --git a/.travis.yml b/.travis.yml index 6d02eef..e658cf1 100644 --- a/.travis.yml +++ b/.travis.yml @@ -8,8 +8,27 @@ php: - nightly matrix: + fast_finish: true allow_failures: - - php: nightly + - nightly + +stages: + - analyze + - test + +jobs: + exclude: + - php: 7.2 + include: + - stage: analyze + php: 7.2 + install: + - pecl install ast + - phpenv config-rm xdebug.ini + - composer install --prefer-dist + script: + - make ci-analyze --keep-going + - composer validate cache: directories: @@ -17,14 +36,14 @@ cache: - build/cache install: - - pecl install ast - - if [[ "$TRAVIS_PHP_VERSION" == "nightly" ]]; then COMPOSER_ARGS='--ignore-platform-reqs'; fi - - composer install --prefer-dist $COMPOSER_ARGS + - phpenv config-rm xdebug.ini || true + - composer remove --no-update --dev + phan/phan phpstan/phpstan vimeo/psalm + infection/infection friendsofphp/php-cs-fixer + - composer install --prefer-dist script: - - if [[ "$TRAVIS_PHP_VERSION" == "nightly" ]]; then vendor/bin/phpunit; else make ci --keep-going COMPOSER='/bin/sh -c composer'; fi - - composer validate + - make ci-test --keep-going after_success: - travis_retry php vendor/bin/php-coveralls - - travis_retry php vendor/bin/codacycoverage clover build/logs/clover.xml diff --git a/Makefile b/Makefile index 67e24db..9845e9f 100644 --- a/Makefile +++ b/Makefile @@ -2,6 +2,7 @@ # Use any most recent PHP version PHP=$(shell which php7.2 || which php7.1 || which php) +PHPDBG=phpdbg -qrr # Default parallelism JOBS=$(shell nproc) @@ -16,7 +17,9 @@ export PHP_CS_FIXER_IGNORE_ENV=1 # PHPUnit PHPUNIT=vendor/bin/phpunit -PHPUNIT_ARGS=--coverage-xml=coverage/coverage-xml --log-junit=coverage/phpunit.junit.xml +PHPUNIT_COVERAGE_CLOVER=--coverage-clover=build/logs/clover.xml +PHPUNIT_GROUP=default +PHPUNIT_ARGS=--coverage-xml=build/logs/coverage-xml --log-junit=build/logs/phpunit.junit.xml $(PHPUNIT_COVERAGE_CLOVER) # Phan PHAN=vendor/bin/phan @@ -39,7 +42,7 @@ COMPOSER=$(PHP) $(shell which composer) INFECTION=vendor/bin/infection MIN_MSI=90 MIN_COVERED_MSI=100 -INFECTION_ARGS=--min-msi=$(MIN_MSI) --min-covered-msi=$(MIN_COVERED_MSI) --threads=$(JOBS) --coverage=coverage +INFECTION_ARGS=--min-msi=$(MIN_MSI) --min-covered-msi=$(MIN_COVERED_MSI) --threads=$(JOBS) --coverage=build/logs --log-verbosity=default --show-mutations all: test @@ -47,17 +50,26 @@ all: test # Continuous Integration # ############################################################## -ci: SILENT= -ci: prerequisites ci-phpunit ci-analyze - $(SILENT) $(COMPOSER) validate --strict +ci-test: SILENT= +ci-test: prerequisites + $(SILENT) $(PHPDBG) $(PHPUNIT) $(PHPUNIT_COVERAGE_CLOVER) --group=$(PHPUNIT_GROUP) + +ci-analyze: SILENT= +ci-analyze: prerequisites ci-phpunit ci-infection ci-phan ci-phpstan ci-psalm ci-phpunit: ci-cs - $(SILENT) $(PHP) $(PHPUNIT) $(PHPUNIT_ARGS) + $(SILENT) $(PHPDBG) $(PHPUNIT) $(PHPUNIT_ARGS) + +ci-infection: ci-phpunit $(SILENT) $(PHP) $(INFECTION) $(INFECTION_ARGS) -ci-analyze: ci-cs +ci-phan: ci-cs $(SILENT) $(PHP) $(PHAN) $(PHAN_ARGS) + +ci-phpstan: ci-cs $(SILENT) $(PHP) $(PHPSTAN) $(PHPSTAN_ARGS) --no-progress + +ci-psalm: ci-cs $(SILENT) $(PHP) $(PSALM) $(PSALM_ARGS) --no-cache ci-cs: prerequisites @@ -67,14 +79,17 @@ ci-cs: prerequisites # Development Workflow # ############################################################## -test: phpunit analyze +test: phpunit analyze composer-validate + +.PHONY: composer-validate +composer-validate: test-prerequisites $(SILENT) $(COMPOSER) validate --strict test-prerequisites: prerequisites composer.lock phpunit: cs $(SILENT) $(PHP) $(PHPUNIT) $(PHPUNIT_ARGS) --verbose - $(SILENT) $(PHP) $(INFECTION) $(INFECTION_ARGS) --log-verbosity=2 --show-mutations + $(SILENT) $(PHP) $(INFECTION) $(INFECTION_ARGS) analyze: cs $(SILENT) $(PHP) $(PHAN) $(PHAN_ARGS) --color