feat: add PHPStan level 8 static analysis with full type coverage #70
This file contains hidden or 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: | |
| pull_request: | |
| jobs: | |
| phpstan: | |
| name: PHPStan Static Analysis | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: shivammathur/setup-php@v2 | |
| with: | |
| php-version: '8.4' | |
| extensions: pdo, pdo_mysql, pdo_pgsql, pdo_sqlite | |
| coverage: none | |
| - run: composer install --no-interaction --prefer-dist | |
| - run: composer phpstan | |
| mysql: | |
| runs-on: ubuntu-latest | |
| services: | |
| mysql: | |
| image: mysql:8.0 | |
| env: | |
| MYSQL_DATABASE: testdb | |
| MYSQL_USER: testuser | |
| MYSQL_PASSWORD: testpass | |
| MYSQL_ROOT_PASSWORD: root | |
| ports: | |
| - 3306:3306 | |
| options: >- | |
| --health-cmd="mysqladmin ping -h 127.0.0.1 -uroot -proot" | |
| --health-interval=10s | |
| --health-timeout=5s | |
| --health-retries=3 | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: shivammathur/setup-php@v2 | |
| with: | |
| php-version: '8.4' | |
| extensions: pdo_mysql | |
| coverage: xdebug | |
| - run: composer install --no-interaction --prefer-dist | |
| - run: | | |
| DB_DSN="mysql:host=127.0.0.1;port=3306;dbname=testdb;charset=utf8mb4" \ | |
| DB_USER="testuser" \ | |
| DB_PASS="testpass" \ | |
| vendor/bin/phpunit tests/PdoDbMySQLTest.php --coverage-clover coverage-mysql.xml | |
| - name: Upload MySQL coverage to Codecov | |
| uses: codecov/codecov-action@v4 | |
| with: | |
| token: ${{ secrets.CODECOV_TOKEN }} | |
| files: ./coverage-mysql.xml | |
| flags: mysql | |
| name: mysql-coverage | |
| postgres: | |
| runs-on: ubuntu-latest | |
| services: | |
| postgres: | |
| image: postgres:16 | |
| env: | |
| POSTGRES_DB: testdb | |
| POSTGRES_USER: testuser | |
| POSTGRES_PASSWORD: testpass | |
| ports: | |
| - 5433:5432 | |
| options: >- | |
| --health-cmd="pg_isready -U testuser -d testdb" | |
| --health-interval=10s | |
| --health-timeout=5s | |
| --health-retries=5 | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: shivammathur/setup-php@v2 | |
| with: | |
| php-version: '8.4' | |
| extensions: pdo_pgsql | |
| coverage: xdebug | |
| - run: composer install --no-interaction --prefer-dist | |
| - run: | | |
| DB_DSN="pgsql:host=localhost;port=5433;dbname=testdb" \ | |
| DB_USER="testuser" \ | |
| DB_PASS="testpass" \ | |
| vendor/bin/phpunit tests/PdoDbPostgreSQLTest.php --coverage-clover coverage-postgres.xml | |
| - name: Upload PostgreSQL coverage to Codecov | |
| uses: codecov/codecov-action@v4 | |
| with: | |
| token: ${{ secrets.CODECOV_TOKEN }} | |
| files: ./coverage-postgres.xml | |
| flags: postgres | |
| name: postgres-coverage | |
| sqlite: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: shivammathur/setup-php@v2 | |
| with: | |
| php-version: '8.4' | |
| extensions: pdo_sqlite | |
| coverage: xdebug | |
| - run: composer install --no-interaction --prefer-dist | |
| - run: | | |
| DB_DSN="sqlite::memory:" \ | |
| vendor/bin/phpunit tests/PdoDbSqliteTest.php --coverage-clover coverage-sqlite.xml | |
| - name: Upload SQLite coverage to Codecov | |
| uses: codecov/codecov-action@v4 | |
| with: | |
| token: ${{ secrets.CODECOV_TOKEN }} | |
| files: ./coverage-sqlite.xml | |
| flags: sqlite | |
| name: sqlite-coverage | |
| shared-coverage: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: shivammathur/setup-php@v2 | |
| with: | |
| php-version: '8.4' | |
| extensions: pdo_sqlite | |
| coverage: xdebug | |
| - run: composer install --no-interaction --prefer-dist | |
| - run: vendor/bin/phpunit tests/SharedCoverageTest.php --coverage-clover coverage-shared.xml | |
| - name: Upload Shared coverage to Codecov | |
| uses: codecov/codecov-action@v4 | |
| with: | |
| token: ${{ secrets.CODECOV_TOKEN }} | |
| files: ./coverage-shared.xml | |
| flags: shared | |
| name: shared-coverage |