Enhancement: Install phpunit/phpunit
for Phar tests with composer
#1581
Workflow file for this run
This file contains 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
# https://docs.github.com/en/actions | |
name: "Integrate" | |
on: # yamllint disable-line rule:truthy | |
pull_request: null | |
push: | |
branches: | |
- "main" | |
jobs: | |
code-coverage: | |
name: "Code Coverage" | |
runs-on: "ubuntu-latest" | |
timeout-minutes: 5 | |
strategy: | |
matrix: | |
phpunit-version: | |
- "7.5.0" | |
php-version: | |
- "7.4" | |
dependencies: | |
- "highest" | |
steps: | |
- name: "Checkout" | |
uses: "actions/checkout@v4.1.1" | |
- name: "Set up PHP" | |
uses: "shivammathur/setup-php@2.29.0" | |
with: | |
coverage: "xdebug" | |
extensions: "none, ctype, curl, dom, json, mbstring, phar, simplexml, tokenizer, xml, xmlwriter" | |
php-version: "${{ matrix.php-version }}" | |
- name: "Set up problem matchers for PHP" | |
run: "echo \"::add-matcher::${{ runner.tool_cache }}/php.json\"" | |
- name: "Set up problem matchers for phpunit/phpunit" | |
run: "echo \"::add-matcher::${{ runner.tool_cache }}/phpunit.json\"" | |
- name: "Validate composer.json and composer.lock" | |
run: "composer validate --ansi --strict" | |
- name: "Determine composer cache directory" | |
uses: "ergebnis/.github/actions/composer/determine-cache-directory@1.9.0" | |
- name: "Cache dependencies installed with composer" | |
uses: "actions/cache@v4.0.0" | |
with: | |
path: "${{ env.COMPOSER_CACHE_DIR }}" | |
key: "php-${{ matrix.php-version }}-composer-${{ matrix.dependencies }}-${{ hashFiles('composer.lock') }}" | |
restore-keys: "php-${{ matrix.php-version }}-composer-${{ matrix.dependencies }}-" | |
- name: "Remove incompatible dependencies with composer" | |
run: "composer remove ergebnis/php-cs-fixer-config psalm/plugin-phpunit vimeo/psalm --ansi --dev --no-interaction --no-progress" | |
- name: "Require phpunit/phpunit:^${{ matrix.phpunit-version }}" | |
run: "composer require phpunit/phpunit:^${{ matrix.phpunit-version }} --ansi --no-interaction --no-progress --update-with-all-dependencies" | |
- name: "Install ${{ matrix.dependencies }} dependencies with composer" | |
uses: "ergebnis/.github/actions/composer/install@1.9.0" | |
with: | |
dependencies: "${{ matrix.dependencies }}" | |
- name: "Collect code coverage with Xdebug and phpunit/phpunit" | |
env: | |
XDEBUG_MODE: "coverage" | |
run: "vendor/bin/phpunit --colors=always --configuration=test/Unit/phpunit.xml --coverage-clover=.build/phpunit/logs/clover.xml" | |
- name: "Send code coverage report to codecov.io" | |
uses: "codecov/codecov-action@v4.0.1" | |
with: | |
files: ".build/phpunit/logs/clover.xml" | |
token: "${{ secrets.CODECOV_TOKEN }}" | |
coding-standards: | |
name: "Coding Standards" | |
runs-on: "ubuntu-latest" | |
timeout-minutes: 5 | |
strategy: | |
matrix: | |
php-version: | |
- "7.4" | |
dependencies: | |
- "locked" | |
steps: | |
- name: "Checkout" | |
uses: "actions/checkout@v4.1.1" | |
- name: "Lint YAML files" | |
uses: "ibiqlik/action-yamllint@v3.1.1" | |
with: | |
config_file: ".yamllint.yaml" | |
file_or_dir: "." | |
strict: true | |
- name: "Set up PHP" | |
uses: "shivammathur/setup-php@2.29.0" | |
with: | |
coverage: "none" | |
extensions: "none, ctype, curl, dom, json, mbstring, phar, simplexml, tokenizer, xml, xmlwriter" | |
php-version: "${{ matrix.php-version }}" | |
- name: "Set up problem matchers for PHP" | |
run: "echo \"::add-matcher::${{ runner.tool_cache }}/php.json\"" | |
- name: "Validate composer.json and composer.lock" | |
run: "composer validate --ansi --strict" | |
- name: "Determine composer cache directory" | |
uses: "ergebnis/.github/actions/composer/determine-cache-directory@1.9.0" | |
- name: "Cache dependencies installed with composer" | |
uses: "actions/cache@v4.0.0" | |
with: | |
path: "${{ env.COMPOSER_CACHE_DIR }}" | |
key: "php-${{ matrix.php-version }}-composer-${{ matrix.dependencies }}-${{ hashFiles('composer.lock') }}" | |
restore-keys: "php-${{ matrix.php-version }}-composer-${{ matrix.dependencies }}-" | |
- name: "Install ${{ matrix.dependencies }} dependencies with composer" | |
uses: "ergebnis/.github/actions/composer/install@1.9.0" | |
with: | |
dependencies: "${{ matrix.dependencies }}" | |
- name: "Run ergebnis/composer-normalize" | |
run: "composer normalize --ansi --dry-run" | |
- name: "Cache cache directory for friendsofphp/php-cs-fixer" | |
uses: "actions/cache@v4.0.0" | |
with: | |
path: ".build/php-cs-fixer" | |
key: "php-${{ matrix.php-version }}-php-cs-fixer-${{ github.ref_name }}" | |
restore-keys: | | |
php-${{ matrix.php-version }}-php-cs-fixer-main | |
php-${{ matrix.php-version }}-php-cs-fixer- | |
- name: "Run friendsofphp/php-cs-fixer" | |
run: "vendor/bin/php-cs-fixer fix --ansi --config=.php-cs-fixer.php --diff --dry-run --show-progress=dots --verbose" | |
compile-phar: | |
name: "Compile Phar" | |
runs-on: "ubuntu-latest" | |
timeout-minutes: 5 | |
strategy: | |
matrix: | |
php-version: | |
- "8.1" | |
dependencies: | |
- "locked" | |
env: | |
PHPUNIT_SLOW_TEST_DETECTOR_PHAR: ".build/phar/phpunit-slow-test-detector.phar" | |
steps: | |
- name: "Checkout" | |
uses: "actions/checkout@v4.1.1" | |
- name: "Set up PHP" | |
uses: "shivammathur/setup-php@2.29.0" | |
with: | |
coverage: "none" | |
extensions: "none, ctype, curl, dom, json, mbstring, phar, simplexml, tokenizer, xml, xmlwriter" | |
ini-values: "memory_limit=-1, phar.readonly=0" | |
php-version: "${{ matrix.php-version }}" | |
tools: "phive" | |
- name: "Set up problem matchers for PHP" | |
run: "echo \"::add-matcher::${{ runner.tool_cache }}/php.json\"" | |
- name: "Determine composer cache directory" | |
uses: "ergebnis/.github/actions/composer/determine-cache-directory@1.9.0" | |
- name: "Cache dependencies installed with composer" | |
uses: "actions/cache@v4.0.0" | |
with: | |
path: "${{ env.COMPOSER_CACHE_DIR }}" | |
key: "php-${{ matrix.php-version }}-composer-${{ matrix.dependencies }}-${{ hashFiles('composer.lock') }}" | |
restore-keys: "php-${{ matrix.php-version }}-composer-${{ matrix.dependencies }}-" | |
- name: "Remove incompatible dependencies with composer" | |
run: "composer remove ergebnis/php-cs-fixer-config psalm/plugin-phpunit vimeo/psalm --ansi --dev --no-interaction --no-progress" | |
- name: "Remove phpunit/phpunit with composer" | |
run: "composer remove phpunit/phpunit --ansi --no-interaction --ignore-platform-reqs --no-progress" | |
- name: "Install ${{ matrix.dependencies }} dependencies with composer" | |
uses: "ergebnis/.github/actions/composer/install@1.9.0" | |
with: | |
dependencies: "${{ matrix.dependencies }}" | |
- name: "Remove git placeholder configuration with jq" | |
run: "echo $(cat box.json | jq 'del(.git)') > box.json" | |
- name: "Install dependencies with phive" | |
uses: "ergebnis/.github/actions/phive/install@1.9.0" | |
with: | |
trust-gpg-keys: "0x2DF45277AEF09A2F,0x033E5F8D801A2F8D" | |
- name: "Validate configuration for humbug/box" | |
run: ".phive/box validate box.json --ansi" | |
- name: "Compile phpunit-slow-test-detector.phar with humbug/box" | |
run: ".phive/box compile --ansi --config=box.json" | |
- name: "Show info about phpunit-slow-test-detector.phar with humbug/box" | |
run: ".phive/box info ${{ env.PHPUNIT_SLOW_TEST_DETECTOR_PHAR }} --ansi --list" | |
- name: "Install ${{ matrix.dependencies }} dependencies for running phar tests with composer" | |
uses: "ergebnis/.github/actions/composer/install@1.9.0" | |
with: | |
dependencies: "${{ matrix.dependencies }}" | |
working-directory: "test/Phar/Version10/" | |
- name: "Run phar tests with phpunit/phpunit" | |
run: "test/Phar/Version10/vendor/bin/phpunit --colors=always --configuration=test/Phar/Version10/phpunit.xml" | |
dependency-analysis: | |
name: "Dependency Analysis" | |
runs-on: "ubuntu-latest" | |
timeout-minutes: 5 | |
strategy: | |
matrix: | |
php-version: | |
- "7.4" | |
dependencies: | |
- "locked" | |
steps: | |
- name: "Checkout" | |
uses: "actions/checkout@v4.1.1" | |
- name: "Set up PHP" | |
uses: "shivammathur/setup-php@2.29.0" | |
with: | |
coverage: "none" | |
extensions: "none, ctype, curl, dom, json, mbstring, phar, simplexml, tokenizer, xml, xmlwriter" | |
php-version: "${{ matrix.php-version }}" | |
tools: "phive" | |
- name: "Set up problem matchers for PHP" | |
run: "echo \"::add-matcher::${{ runner.tool_cache }}/php.json\"" | |
- name: "Validate composer.json and composer.lock" | |
run: "composer validate --ansi --strict" | |
- name: "Determine composer cache directory" | |
uses: "ergebnis/.github/actions/composer/determine-cache-directory@1.9.0" | |
- name: "Cache dependencies installed with composer" | |
uses: "actions/cache@v4.0.0" | |
with: | |
path: "${{ env.COMPOSER_CACHE_DIR }}" | |
key: "php-${{ matrix.php-version }}-composer-${{ matrix.dependencies }}-${{ hashFiles('composer.lock') }}" | |
restore-keys: "php-${{ matrix.php-version }}-composer-${{ matrix.dependencies }}-" | |
- name: "Install ${{ matrix.dependencies }} dependencies with composer" | |
uses: "ergebnis/.github/actions/composer/install@1.9.0" | |
with: | |
dependencies: "${{ matrix.dependencies }}" | |
- name: "Install dependencies with phive" | |
uses: "ergebnis/.github/actions/phive/install@1.9.0" | |
with: | |
trust-gpg-keys: "0x2DF45277AEF09A2F,0x033E5F8D801A2F8D" | |
- name: "Run maglnet/composer-require-checker" | |
run: ".phive/composer-require-checker check --ansi --config-file=$(pwd)/composer-require-checker.json --verbose" | |
refactoring: | |
name: "Refactoring" | |
runs-on: "ubuntu-latest" | |
timeout-minutes: 5 | |
strategy: | |
matrix: | |
php-version: | |
- "7.4" | |
dependencies: | |
- "locked" | |
steps: | |
- name: "Checkout" | |
uses: "actions/checkout@v4.1.1" | |
- name: "Set up PHP" | |
uses: "shivammathur/setup-php@2.29.0" | |
with: | |
coverage: "none" | |
extensions: "none, ctype, curl, dom, json, mbstring, phar, simplexml, tokenizer, xml, xmlwriter" | |
php-version: "${{ matrix.php-version }}" | |
- name: "Set up problem matchers for PHP" | |
run: "echo \"::add-matcher::${{ runner.tool_cache }}/php.json\"" | |
- name: "Validate composer.json and composer.lock" | |
run: "composer validate --ansi --strict" | |
- name: "Determine composer cache directory" | |
uses: "ergebnis/.github/actions/composer/determine-cache-directory@1.9.0" | |
- name: "Cache dependencies installed with composer" | |
uses: "actions/cache@v4.0.0" | |
with: | |
path: "${{ env.COMPOSER_CACHE_DIR }}" | |
key: "php-${{ matrix.php-version }}-composer-${{ matrix.dependencies }}-${{ hashFiles('composer.lock') }}" | |
restore-keys: "php-${{ matrix.php-version }}-composer-${{ matrix.dependencies }}-" | |
- name: "Install ${{ matrix.dependencies }} dependencies with composer" | |
uses: "ergebnis/.github/actions/composer/install@1.9.0" | |
with: | |
dependencies: "${{ matrix.dependencies }}" | |
- name: "Cache cache directory for rector/rector" | |
uses: "actions/cache@v4.0.0" | |
with: | |
path: ".build/rector" | |
key: "php-${{ matrix.php-version }}-rector-${{ github.ref_name }}" | |
restore-keys: | | |
php-${{ matrix.php-version }}-rector-main | |
php-${{ matrix.php-version }}-rector- | |
- name: "Run automated refactoring with rector/rector" | |
run: "vendor/bin/rector --ansi --config=rector.php --dry-run" | |
security-analysis: | |
name: "Security Analysis" | |
runs-on: "ubuntu-latest" | |
timeout-minutes: 5 | |
strategy: | |
matrix: | |
php-version: | |
- "7.4" | |
dependencies: | |
- "locked" | |
steps: | |
- name: "Checkout" | |
uses: "actions/checkout@v4.1.1" | |
- name: "Set up PHP" | |
uses: "shivammathur/setup-php@2.29.0" | |
with: | |
coverage: "none" | |
extensions: "none, ctype, curl, dom, json, mbstring, phar, simplexml, tokenizer, xml, xmlwriter" | |
php-version: "${{ matrix.php-version }}" | |
- name: "Set up problem matchers for PHP" | |
run: "echo \"::add-matcher::${{ runner.tool_cache }}/php.json\"" | |
- name: "Validate composer.json and composer.lock" | |
run: "composer validate --ansi --strict" | |
- name: "Determine composer cache directory" | |
uses: "ergebnis/.github/actions/composer/determine-cache-directory@1.9.0" | |
- name: "Cache dependencies installed with composer" | |
uses: "actions/cache@v4.0.0" | |
with: | |
path: "${{ env.COMPOSER_CACHE_DIR }}" | |
key: "php-${{ matrix.php-version }}-composer-${{ matrix.dependencies }}-${{ hashFiles('composer.lock') }}" | |
restore-keys: "php-${{ matrix.php-version }}-composer-${{ matrix.dependencies }}-" | |
- name: "Install ${{ matrix.dependencies }} dependencies with composer" | |
uses: "ergebnis/.github/actions/composer/install@1.9.0" | |
with: | |
dependencies: "${{ matrix.dependencies }}" | |
- name: "Check installed packages for security vulnerability advisories" | |
run: "composer audit --ansi" | |
static-code-analysis: | |
name: "Static Code Analysis" | |
runs-on: "ubuntu-latest" | |
timeout-minutes: 5 | |
strategy: | |
matrix: | |
php-version: | |
- "7.4" | |
dependencies: | |
- "locked" | |
steps: | |
- name: "Checkout" | |
uses: "actions/checkout@v4.1.1" | |
- name: "Set up PHP" | |
uses: "shivammathur/setup-php@2.29.0" | |
with: | |
coverage: "none" | |
extensions: "none, ctype, curl, dom, json, mbstring, opcache, pcntl, phar, posix, simplexml, tokenizer, xml, xmlwriter" | |
php-version: "${{ matrix.php-version }}" | |
- name: "Set up problem matchers for PHP" | |
run: "echo \"::add-matcher::${{ runner.tool_cache }}/php.json\"" | |
- name: "Validate composer.json and composer.lock" | |
run: "composer validate --ansi --strict" | |
- name: "Determine composer cache directory" | |
uses: "ergebnis/.github/actions/composer/determine-cache-directory@1.9.0" | |
- name: "Cache dependencies installed with composer" | |
uses: "actions/cache@v4.0.0" | |
with: | |
path: "${{ env.COMPOSER_CACHE_DIR }}" | |
key: "php-${{ matrix.php-version }}-composer-${{ matrix.dependencies }}-${{ hashFiles('composer.lock') }}" | |
restore-keys: "php-${{ matrix.php-version }}-composer-${{ matrix.dependencies }}-" | |
- name: "Install ${{ matrix.dependencies }} dependencies with composer" | |
uses: "ergebnis/.github/actions/composer/install@1.9.0" | |
with: | |
dependencies: "${{ matrix.dependencies }}" | |
- name: "Run vimeo/psalm" | |
run: "vendor/bin/psalm --config=psalm.xml --output-format=github --shepherd --show-info=false --stats --threads=4" | |
tests: | |
name: "Tests" | |
runs-on: "ubuntu-latest" | |
timeout-minutes: 5 | |
strategy: | |
fail-fast: false | |
matrix: | |
phpunit-version: | |
- "8.5.19" | |
- "9.0.0" | |
php-version: | |
- "7.4" | |
- "8.0" | |
- "8.1" | |
- "8.2" | |
- "8.3" | |
dependencies: | |
- "lowest" | |
- "highest" | |
include: | |
- phpunit-version: "7.5.0" | |
php-version: "7.4" | |
dependencies: "lowest" | |
- phpunit-version: "7.5.0" | |
php-version: "7.4" | |
dependencies: "highest" | |
- phpunit-version: "10.0.0" | |
php-version: "8.1" | |
dependencies: "lowest" | |
- phpunit-version: "10.0.0" | |
php-version: "8.1" | |
dependencies: "highest" | |
- phpunit-version: "10.0.0" | |
php-version: "8.2" | |
dependencies: "lowest" | |
- phpunit-version: "10.0.0" | |
php-version: "8.2" | |
dependencies: "highest" | |
- phpunit-version: "10.0.0" | |
php-version: "8.3" | |
dependencies: "lowest" | |
- phpunit-version: "10.0.0" | |
php-version: "8.3" | |
dependencies: "highest" | |
- phpunit-version: "11.0.x-dev" | |
php-version: "8.2" | |
dependencies: "highest" | |
- phpunit-version: "11.0.x-dev" | |
php-version: "8.3" | |
dependencies: "highest" | |
steps: | |
- name: "Checkout" | |
uses: "actions/checkout@v4.1.1" | |
- name: "Set up PHP" | |
uses: "shivammathur/setup-php@2.29.0" | |
with: | |
coverage: "none" | |
extensions: "none, ctype, curl, dom, json, mbstring, phar, simplexml, tokenizer, xml, xmlwriter" | |
php-version: "${{ matrix.php-version }}" | |
- name: "Set up problem matchers for PHP" | |
run: "echo \"::add-matcher::${{ runner.tool_cache }}/php.json\"" | |
- name: "Set up problem matchers for phpunit/phpunit" | |
run: "echo \"::add-matcher::${{ runner.tool_cache }}/phpunit.json\"" | |
- name: "Validate composer.json and composer.lock" | |
run: "composer validate --ansi --strict" | |
- name: "Determine composer cache directory" | |
uses: "ergebnis/.github/actions/composer/determine-cache-directory@1.9.0" | |
- name: "Cache dependencies installed with composer" | |
uses: "actions/cache@v4.0.0" | |
with: | |
path: "${{ env.COMPOSER_CACHE_DIR }}" | |
key: "php-${{ matrix.php-version }}-composer-${{ matrix.dependencies }}-phpunit-${{ matrix.phpunit-version }}-${{ hashFiles('composer.lock') }}" | |
restore-keys: "php-${{ matrix.php-version }}-composer-${{ matrix.dependencies }}-phpunit-${{ matrix.phpunit-version }}-" | |
- name: "Remove platform configuration with composer" | |
if: "matrix.dependencies != 'locked'" | |
run: "composer config platform.php --ansi --unset" | |
- name: "Remove incompatible dependencies with composer" | |
if: "matrix.dependencies != 'locked'" | |
run: "composer remove ergebnis/php-cs-fixer-config psalm/plugin-phpunit vimeo/psalm --ansi --dev --no-interaction --no-progress" | |
- name: "Require phpunit/phpunit:^${{ matrix.phpunit-version }}" | |
if: "matrix.dependencies != 'locked' && matrix.phpunit-version != '11.0.x-dev'" | |
run: "composer require phpunit/phpunit:^${{ matrix.phpunit-version }} --ansi --no-interaction --no-progress --update-with-all-dependencies" | |
- name: "Require phpunit/phpunit:${{ matrix.phpunit-version }}" | |
if: "matrix.dependencies != 'locked' && matrix.phpunit-version == '11.0.x-dev'" | |
run: "composer require phpunit/phpunit:${{ matrix.phpunit-version }} --ansi --no-interaction --no-progress --update-with-all-dependencies" | |
- name: "Install ${{ matrix.dependencies }} dependencies with composer" | |
uses: "ergebnis/.github/actions/composer/install@1.9.0" | |
with: | |
dependencies: "${{ matrix.dependencies }}" | |
- name: "Run unit tests with phpunit/phpunit:7.5.0" | |
if: "matrix.phpunit-version == '7.5.0'" | |
run: "vendor/bin/phpunit --colors=always --configuration=test/Unit/phpunit.xml" | |
- name: "Apply patch from https://github.com/sebastianbergmann/phpunit/pull/4486 for phpunit/phpunit:9.0.0" | |
if: "matrix.php-version == '8.3' && matrix.phpunit-version == '9.0.0' && matrix.dependencies == 'lowest'" | |
run: | | |
cd vendor/phpunit/phpunit | |
wget -O gh-4486.patch https://github.com/sebastianbergmann/phpunit/commit/0a488f22925b3c8732338ef0fbfe7f13cb4cf1d2.patch | |
patch -p1 < gh-4486.patch | |
- name: "Run end-to-end tests with phpunit/phpunit:7.5.0" | |
if: "matrix.phpunit-version == '7.5.0'" | |
run: "vendor/bin/phpunit --colors=always --configuration=test/EndToEnd/Version07/phpunit.xml" | |
- name: "Run end-to-end tests with phpunit/phpunit:8.5.19" | |
if: "matrix.phpunit-version == '8.5.19'" | |
run: "vendor/bin/phpunit --colors=always --configuration=test/EndToEnd/Version08/phpunit.xml" | |
- name: "Run end-to-end tests with phpunit/phpunit:9.0.0" | |
if: "matrix.phpunit-version == '9.0.0'" | |
run: "vendor/bin/phpunit --colors=always --configuration=test/EndToEnd/Version09/phpunit.xml" | |
- name: "Run end-to-end tests with phpunit/phpunit:10.0.0" | |
if: "matrix.phpunit-version == '10.0.0'" | |
run: "vendor/bin/phpunit --colors=always --configuration=test/EndToEnd/Version10/phpunit.xml" | |
- name: "Run end-to-end tests with phpunit/phpunit:11.0.x-dev" | |
if: "matrix.phpunit-version == '11.0.x-dev'" | |
run: "vendor/bin/phpunit --colors=always --configuration=test/EndToEnd/Version11/phpunit.xml" |