Skip to content

Integration Tests

Integration Tests #22

name: Integration Tests
on:
pull_request:
workflow_dispatch:
schedule:
- cron: '0 0 * * *'
jobs:
phpunit:
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os:
- ubuntu-latest
- windows-latest
php:
- 8.3
database:
- sqlite
- mysql
- postgres
stability:
- prefer-stable
- prefer-lowest
name: "Run Tests: PHP ${{ matrix.php }} - ${{ matrix.database }} - ${{ matrix.stability }} - ${{ matrix.os }}"
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: ${{ matrix.php }}
extensions: dom, curl, libxml, mbstring, pcntl, fileinfo, pdo, sqlite, pdo_sqlite, pdo_mysql
coverage: pcov
- name: Setup problem matchers
run: |
echo "::add-matcher::${{ runner.tool_cache }}/php.json"
echo "::add-matcher::${{ runner.tool_cache }}/phpunit.json"
- name: Install dependencies
run: composer update --${{ matrix.stability }} --prefer-dist --no-interaction
- name: 'Setup MySQL'
if: ${{ matrix.database == 'mysql' }}
uses: ankane/setup-mysql@v1
with:
mysql-version: 8.0
database: 'app'
- name: 'Setup PostgreSQL'
if: ${{ matrix.database == 'postgres' }}
uses: ankane/setup-postgres@v1
- name: Set database config - ${{ matrix.database }}
run: php -r "file_exists('tests/Fixtures/Config/database.config.php') || copy('tests/Fixtures/Config/database.${{ matrix.database }}.php', 'tests/Fixtures/Config/database.config.php');"
- name: List Discovered Locations
run: php ./tempest discovery:status
- name: Execute tests
run: vendor/bin/phpunit --coverage-clover build/reports/clover.xml
# Only upload coverage once.
- if: matrix.php == '8.3' && matrix.database == 'sqlite' && matrix.os == 'ubuntu-latest' && matrix.stability == 'prefer-stable'
name: Coveralls
uses: coverallsapp/github-action@v2
with:
github-token: '${{ secrets.GITHUB_TOKEN }}'
file: build/reports/clover.xml