GH Actions: run tests also on Windows OS #306
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
name: Run unit and style tests | |
on: | |
pull_request: | |
push: | |
branches: | |
- develop | |
- master | |
# Allow manually triggering the workflow. | |
workflow_dispatch: | |
# Cancels all previous workflow runs for the same branch that have not yet completed. | |
concurrency: | |
# The concurrency group contains the workflow name and the branch name. | |
group: ${{ github.workflow }}-${{ github.ref }} | |
cancel-in-progress: true | |
jobs: | |
lint: | |
name: Run style linter | |
runs-on: ubuntu-latest | |
steps: | |
- name: Setup PHP | |
uses: shivammathur/setup-php@v2 | |
with: | |
php-version: 'latest' | |
coverage: none | |
tools: cs2pr | |
- name: Checkout code | |
uses: actions/checkout@v4 | |
- name: Install Composer dependencies | |
uses: ramsey/composer-install@v3 | |
with: | |
# Bust the cache at least once a month - output format: YYYY-MM. | |
custom-cache-suffix: $(date -u "+%Y-%m") | |
- name: Run code sniffer | |
id: phpcs | |
run: vendor/bin/phpcs --report-full --report-checkstyle=./phpcs-report.xml | |
- name: Show PHPCS results in PR | |
if: ${{ always() && steps.phpcs.outcome == 'failure' }} | |
run: cs2pr ./phpcs-report.xml | |
bundle: | |
name: Bundle binary | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v4 | |
- name: Setup PHP | |
uses: shivammathur/setup-php@v2 | |
with: | |
php-version: 8.2 | |
extensions: exif, phar, openssl, sodium | |
coverage: none | |
ini-values: phar.readonly=Off, error_reporting=-1, display_errors=On, zend.assertions=1 | |
# Autoload files generated with Composer 2.3 are not compatible with PHP < 7.0. | |
tools: composer:2.2 | |
env: | |
fail-fast: true | |
- name: Install Composer dependencies | |
uses: ramsey/composer-install@v3 | |
with: | |
composer-options: "--no-dev" | |
# Bust the cache at least once a month - output format: YYYY-MM. | |
custom-cache-suffix: $(date -u "+%Y-%m") | |
# Note: do NOT turn on the requirement checker in the box config as it is no longer | |
# compatible with PHP < 7.2. | |
- name: Install Box | |
run: wget https://github.com/box-project/box/releases/latest/download/box.phar -O box.phar && chmod 0755 box.phar && pwd | |
- name: Validate configuration | |
run: php box.phar validate -i box.json | |
- name: Building binary... | |
run: php box.phar compile -v --config=box.json | |
- name: Show info about the build phar with box-project/box | |
run: php box.phar info -l parallel-lint.phar | |
- uses: actions/upload-artifact@v4 | |
with: | |
name: parallel-lint-phar | |
path: ./parallel-lint.phar | |
test: | |
name: Run tests on PHP ${{ matrix.php }} (${{ matrix.os }}) | |
runs-on: "${{ matrix.os }}" | |
continue-on-error: ${{ matrix.php == '8.4' }} | |
needs: | |
- bundle | |
strategy: | |
matrix: | |
php: | |
- '5.3' | |
- '5.4' | |
- '5.5' | |
- '5.6' | |
- '7.0' | |
- '7.1' | |
- '7.2' | |
- '7.3' | |
- '7.4' | |
- '8.0' | |
- '8.1' | |
- '8.2' | |
- '8.3' | |
- '8.4' | |
os: | |
- 'ubuntu-latest' | |
include: | |
# Also run the tests against Windows on a few PHP versions. | |
- php: '5.5' | |
os: 'windows-latest' | |
- php: '7.0' | |
os: 'windows-latest' | |
- php: '8.0' | |
os: 'windows-latest' | |
- php: '8.3' | |
os: 'windows-latest' | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v4 | |
- name: Setup PHP | |
uses: shivammathur/setup-php@v2 | |
with: | |
php-version: ${{ matrix.php }} | |
ini-values: error_reporting=-1, display_errors=On, zend.assertions=1 | |
coverage: none | |
# Remove the PHPCS standard as it has a minimum PHP requirements of PHP 5.4 and would block install on PHP 5.3. | |
- name: 'Composer: remove PHPCS' | |
if: ${{ matrix.php < 5.4 }} | |
run: composer remove --dev php-parallel-lint/php-code-style --no-update --no-interaction | |
- name: Install Composer dependencies | |
if: ${{ matrix.php != '8.4' }} | |
uses: ramsey/composer-install@v3 | |
with: | |
# Bust the cache at least once a month - output format: YYYY-MM. | |
custom-cache-suffix: $(date -u "+%Y-%m") | |
- name: "Install Composer dependencies (PHP 8.4, ignore PHP reqs)" | |
if: ${{ matrix.php == '8.4' }} | |
uses: ramsey/composer-install@v3 | |
with: | |
composer-options: --ignore-platform-req=php | |
custom-cache-suffix: $(date -u "+%Y-%m") | |
- name: 'Integration test 1 - linting own code, no colors' | |
continue-on-error: true | |
run: ./parallel-lint --exclude vendor --exclude tests/fixtures --no-colors . | |
- name: 'Integration test 2 - linting own code' | |
run: ./parallel-lint --exclude vendor --exclude tests/fixtures . | |
- name: Grab PHPUnit version | |
id: phpunit_version | |
run: echo "VERSION=$(php "vendor/bin/phpunit" --version | grep --only-matching --max-count=1 --extended-regexp '\b[0-9]+\.[0-9]+')" >> $GITHUB_OUTPUT | |
- name: "Run unit tests (PHPUnit < 10)" | |
if: ${{ ! startsWith( steps.phpunit_version.outputs.VERSION, '10.' ) }} | |
run: composer test | |
- name: "Run unit tests (PHPUnit < 10)" | |
if: ${{ startsWith( steps.phpunit_version.outputs.VERSION, '10.' ) }} | |
run: composer test10 | |
- uses: actions/download-artifact@v4 | |
with: | |
name: parallel-lint-phar | |
- name: Run linter against codebase using the phar | |
run: php "parallel-lint.phar" --exclude vendor --exclude tests/fixtures . |