#24 and #25 #28
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: Tests | |
on: | |
push: | |
branches: | |
- main | |
- master | |
pull_request: | |
schedule: | |
- cron: '0 2 * * 0' # Weekly on Sundays at 02:00 | |
jobs: | |
format: | |
name: Format | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
- name: Set Up Cache | |
uses: actions/cache@v3 | |
with: | |
path: | | |
vendor | |
key: php-cs-fixer-${{ hashFiles('composer.lock') }} | |
- name: Validate composer.json and composer.lock | |
run: composer validate | |
- name: Install PHP dependencies | |
run: composer install --prefer-dist --no-progress | |
- name: Set up PHP | |
uses: shivammathur/setup-php@master | |
with: | |
php-version: 8.3 | |
- name: Format | |
run: ./vendor/bin/php-cs-fixer fix && git diff --exit-code | |
static: | |
name: Static Analysis | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
with: | |
fetch-depth: 2 | |
- name: Set Up Cache | |
uses: actions/cache@v3 | |
with: | |
path: | | |
vendor | |
key: phpstan-${{ hashFiles('composer.lock') }} | |
- name: Install PHP dependencies | |
run: composer install --prefer-dist --no-progress | |
- name: PHPStan | |
uses: php-actions/phpstan@v3 | |
with: | |
configuration: tests/phpstan.neon | |
memory_limit: 1G | |
test: | |
name: PHP ${{ matrix.php }} / DB ${{ matrix.database }} | |
strategy: | |
fail-fast: false | |
matrix: | |
php: ['8.1', '8.2', '8.3'] | |
database: ['pgsql', 'mysql', 'sqlite'] | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
with: | |
fetch-depth: 2 | |
- name: Set Up Cache | |
uses: actions/cache@v3 | |
with: | |
path: | | |
vendor | |
key: vendor-${{ matrix.php }}-${{ hashFiles('composer.lock') }} | |
- name: Set up PHP | |
uses: shivammathur/setup-php@master | |
with: | |
php-version: ${{ matrix.php }} | |
coverage: pcov | |
extensions: mbstring | |
- name: Set up database | |
run: ./tests/setup-db.sh "${{ matrix.database }}" | |
- name: Check versions | |
run: php -v && composer -V | |
- name: Validate composer.json and composer.lock | |
run: composer validate | |
- name: Install PHP dependencies | |
run: composer update && composer install --prefer-dist --no-progress | |
- name: Run test suite | |
run: | | |
if [[ "${{ matrix.php }}" == "8.3" ]]; then | |
vendor/bin/phpunit --configuration tests/phpunit.xml --coverage-clover=data/coverage.clover | |
else | |
vendor/bin/phpunit --configuration tests/phpunit.xml | |
fi | |
- name: Upload coverage | |
if: matrix.php == '8.3' | |
run: | | |
vendor/bin/ocular code-coverage:upload --format=php-clover data/coverage.clover |