From c1589e228fe8dfd1f8ba5e643d078e0a55dc4448 Mon Sep 17 00:00:00 2001 From: Nicolas PHILIPPE Date: Sat, 14 Dec 2024 13:24:38 +0100 Subject: [PATCH] tests: add CI permutation with windows --- .github/workflows/ci.yml | 486 +++++++++++----------- src/ORM/ResetDatabase/BaseOrmResetter.php | 1 + 2 files changed, 246 insertions(+), 241 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 936e3c13..f093daa0 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -9,13 +9,13 @@ on: jobs: tests: name: P:${{ matrix.php }}, S:${{ matrix.symfony }}, D:${{ matrix.database }}, PU:${{ matrix.phpunit || 9 }}${{ matrix.deps == 'lowest' && ' (lowest)' || '' }}${{ matrix.without-dama == 0 && contains(matrix.database, 'sql') && ' (dama)' || '' }}${{ matrix.use-phpunit-extension == 1 && ' (phpunit extension)' || '' }} - runs-on: ubuntu-latest + runs-on: windows-latest strategy: fail-fast: false matrix: - php: [ 8.1, 8.2, 8.3, 8.4 ] - symfony: [ 6.4.*, 7.1.*, 7.2.* ] - database: [ mysql, mongo ] + php: [ 8.3 ] + symfony: [ 7.2.* ] + database: [ sqlite ] # default values: # deps: [ highest ] @@ -23,21 +23,21 @@ jobs: # use-phpunit-extension: [ 0 ] # phpunit: [ 9 ] - exclude: - - {php: 8.1, symfony: 7.1.*} - - {php: 8.1, symfony: 7.2.*} - include: - - {php: 8.3, symfony: '*', database: none} - - {php: 8.3, symfony: '*', database: mysql|mongo} - - {php: 8.3, symfony: '*', database: pgsql|mongo} - - {php: 8.3, symfony: '*', database: pgsql, without-dama: 1} - - {php: 8.3, symfony: '*', database: sqlite, without-dama: 1} - - {php: 8.3, symfony: '*', database: sqlite, without-dama: 1, deps: lowest} - - {php: 8.3, symfony: '*', database: mysql, deps: lowest} - - {php: 8.3, symfony: '*', database: mysql|mongo, phpunit: 10} - - {php: 8.3, symfony: '*', database: mysql|mongo, phpunit: 11} - - {php: 8.3, symfony: '*', database: mysql|mongo, use-phpunit-extension: 1, phpunit: 11} - - {php: 8.3, symfony: '*', database: mysql|mongo, use-phpunit-extension: 1, phpunit: 11, without-dama: 1} +# exclude: +# - {php: 8.1, symfony: 7.1.*} +# - {php: 8.1, symfony: 7.2.*} +# include: +# - {php: 8.3, symfony: '*', database: none} +# - {php: 8.3, symfony: '*', database: mysql|mongo} +# - {php: 8.3, symfony: '*', database: pgsql|mongo} +# - {php: 8.3, symfony: '*', database: pgsql, without-dama: 1} +# - {php: 8.3, symfony: '*', database: sqlite, without-dama: 1} +# - {php: 8.3, symfony: '*', database: sqlite, without-dama: 1, deps: lowest} +# - {php: 8.3, symfony: '*', database: mysql, deps: lowest} +# - {php: 8.3, symfony: '*', database: mysql|mongo, phpunit: 10} +# - {php: 8.3, symfony: '*', database: mysql|mongo, phpunit: 11} +# - {php: 8.3, symfony: '*', database: mysql|mongo, use-phpunit-extension: 1, phpunit: 11} +# - {php: 8.3, symfony: '*', database: mysql|mongo, use-phpunit-extension: 1, phpunit: 11, without-dama: 1} env: DATABASE_URL: ${{ contains(matrix.database, 'mysql') && 'mysql://root:root@localhost:3306/foundry?serverVersion=5.7.42' || contains(matrix.database, 'pgsql') && 'postgresql://root:root@localhost:5432/foundry?serverVersion=15' || contains(matrix.database, 'sqlite') && 'sqlite:///%kernel.project_dir%/var/data.db' || '' }} MONGO_URL: ${{ contains(matrix.database, 'mongo') && 'mongodb://127.0.0.1:27017/dbName?compressors=disabled&gssapiServiceName=mongodb' || '' }} @@ -58,10 +58,10 @@ jobs: --health-interval 10s --health-timeout 5s --health-retries 5 - mongo: - image: ${{ contains(matrix.database, 'mongo') && 'mongo:4' || '' }} - ports: - - 27017:27017 +# mongo: +# image: ${{ contains(matrix.database, 'mongo') && 'mongo:4' || '' }} +# ports: +# - 27017:27017 steps: - name: Checkout code uses: actions/checkout@v3 @@ -72,6 +72,7 @@ jobs: php-version: ${{ matrix.php }} coverage: none tools: flex + extensions: mongodb, sqlite3, pdo_sqlite - name: Install dependencies uses: ramsey/composer-install@v2 @@ -89,221 +90,224 @@ jobs: run: ./phpunit shell: bash - test-reset-database-with-migration: - name: Test migration - D:${{ matrix.database }} ${{ matrix.use-dama == 1 && ' (dama)' || '' }} ${{ contains(matrix.with-migration-configuration-file, 'transactional') && '(configuration file transactional)' || contains(matrix.with-migration-configuration-file, 'configuration') && '(configuration file)' || '' }} - runs-on: ubuntu-latest - strategy: - fail-fast: false - matrix: - database: [ mysql, pgsql, sqlite ] - use-dama: [ 0, 1 ] - with-migration-configuration-file: - - '' - - 'tests/Fixture/MigrationTests/configs/migration-configuration.php' - - 'tests/Fixture/MigrationTests/configs/migration-configuration-transactional.php' - exclude: - # there is currently a bug with MySQL and transactional migrations - - database: mysql - with-migration-configuration-file: 'tests/Fixture/MigrationTests/configs/migration-configuration-transactional.php' - env: - DATABASE_URL: ${{ contains(matrix.database, 'mysql') && 'mysql://root:root@localhost:3306/foundry?serverVersion=5.7.42' || contains(matrix.database, 'pgsql') && 'postgresql://root:root@localhost:5432/foundry?serverVersion=15' || 'sqlite:///%kernel.project_dir%/var/data.db' }} - MONGO_URL: '' - USE_DAMA_DOCTRINE_TEST_BUNDLE: ${{ matrix.use-dama == 1 && 1 || 0 }} - WITH_MIGRATION_CONFIGURATION_FILE: ${{ matrix.with-migration-configuration-file }} - PHPUNIT_VERSION: 9 - services: - postgres: - image: ${{ contains(matrix.database, 'pgsql') && 'postgres:15' || '' }} - env: - POSTGRES_USER: root - POSTGRES_PASSWORD: root - POSTGRES_DB: foundry - ports: - - 5432:5432 - options: >- - --health-cmd pg_isready - --health-interval 10s - --health-timeout 5s - --health-retries 5 - steps: - - name: Checkout code - uses: actions/checkout@v3 - - - name: Setup PHP - uses: shivammathur/setup-php@v2 - with: - php-version: 8.3 - coverage: none - tools: flex - - - name: Install dependencies - uses: ramsey/composer-install@v2 - with: - dependency-versions: highest - composer-options: --prefer-dist - env: - SYMFONY_REQUIRE: 7.1.* - - - name: Set up MySQL - if: contains(matrix.database, 'mysql') - run: sudo /etc/init.d/mysql start - - - name: Test - run: ./phpunit --testsuite migrate --bootstrap tests/bootstrap-migrate.php - shell: bash - - test-with-paratest: - name: Test with paratest - runs-on: ubuntu-latest - env: - DATABASE_URL: 'mysql://root:root@localhost:3306/foundry?serverVersion=5.7.42' - MONGO_URL: '' - USE_DAMA_DOCTRINE_TEST_BUNDLE: 1 - steps: - - name: Checkout code - uses: actions/checkout@v3 - - - name: Setup PHP - uses: shivammathur/setup-php@v2 - with: - php-version: 8.4 - coverage: none - tools: flex - - - name: Install dependencies - uses: ramsey/composer-install@v2 - with: - dependency-versions: highest - composer-options: --prefer-dist - env: - SYMFONY_REQUIRE: 7.2.* - - - name: Set up MySQL - run: sudo /etc/init.d/mysql start - - - name: Test - run: vendor/bin/paratest --processes 1 --configuration phpunit-paratest.xml.dist - shell: bash - - code-coverage: - name: Code Coverage - runs-on: ubuntu-latest - env: - DATABASE_URL: postgresql://root:root@localhost:5432/foundry?serverVersion=15 - MONGO_URL: mongodb://127.0.0.1:27017/dbName?compressors=disabled&gssapiServiceName=mongodb - USE_DAMA_DOCTRINE_TEST_BUNDLE: 1 - USE_FOUNDRY_PHPUNIT_EXTENSION: 1 - PHPUNIT_VERSION: 11 - services: - mongo: - image: mongo:4 - ports: - - 27017:27017 - postgres: - image: postgres:15 - env: - POSTGRES_USER: root - POSTGRES_PASSWORD: root - POSTGRES_DB: foundry - ports: - - 5432:5432 - options: >- - --health-cmd pg_isready - --health-interval 10s - --health-timeout 5s - --health-retries 5 - steps: - - name: Checkout code - uses: actions/checkout@v3 - - - name: Setup PHP - uses: shivammathur/setup-php@v2 - with: - php-version: 8.2 - coverage: xdebug - ini-values: xdebug.mode=coverage - - - name: Install dependencies - uses: ramsey/composer-install@v2 - with: - composer-options: --prefer-dist - - - name: Test with coverage - run: ./phpunit --coverage-text --coverage-clover coverage.xml - shell: bash - env: - SYMFONY_DEPRECATIONS_HELPER: disabled - - - name: Publish coverage report to Codecov - uses: codecov/codecov-action@v3 - with: - file: ./coverage.xml - - composer-validate: - uses: zenstruck/.github/.github/workflows/php-composer-validate.yml@main - - lint-docs: - name: Lint Documentation - runs-on: ubuntu-latest - steps: - - name: "Checkout code" - uses: actions/checkout@v3 - - - name: DOCtor-RST - uses: docker://oskarstark/doctor-rst - with: - args: --short --error-format=github - env: - DOCS_DIR: 'docs/' - - static-analysis: - name: Static Analysis - runs-on: ubuntu-latest - steps: - - name: Checkout code - uses: actions/checkout@v3 - - - name: Setup PHP - uses: shivammathur/setup-php@v2 - with: - php-version: 8.3 - coverage: none - - - name: Install dependencies - uses: ramsey/composer-install@v2 - with: - composer-options: --prefer-dist - - - name: Install PHPStan - run: composer bin phpstan install - - - name: Run static analysis - run: bin/tools/phpstan/vendor/phpstan/phpstan/phpstan analyse - - - name: Install Psalm - run: composer bin psalm install - - - name: Run Psalm on factories generated with maker - run: bin/tools/psalm/vendor/vimeo/psalm/psalm - - fixcs: - name: Run php-cs-fixer - needs: sync-with-template - if: (github.event_name == 'push' || github.event_name == 'schedule') && !startsWith(github.ref, 'refs/tags') && github.repository_owner == 'zenstruck' - runs-on: ubuntu-latest - steps: - - uses: zenstruck/.github/actions/php-cs-fixer@main - with: - php: 8 - key: ${{ secrets.GPG_PRIVATE_KEY }} - token: ${{ secrets.COMPOSER_TOKEN }} - - sync-with-template: - name: Sync meta files - if: (github.event_name == 'push' || github.event_name == 'schedule') && !startsWith(github.ref, 'refs/tags') && github.repository_owner == 'zenstruck' - runs-on: ubuntu-latest - steps: - - uses: zenstruck/.github/actions/sync-with-template@main - with: - key: ${{ secrets.GPG_PRIVATE_KEY }} - token: ${{ secrets.COMPOSER_TOKEN }} +# test-reset-database-with-migration: +# name: Test migration - D:${{ matrix.database }} ${{ matrix.use-dama == 1 && ' (dama)' || '' }} ${{ contains(matrix.with-migration-configuration-file, 'transactional') && '(configuration file transactional)' || contains(matrix.with-migration-configuration-file, 'configuration') && '(configuration file)' || '' }} +# runs-on: ubuntu-latest +# strategy: +# fail-fast: false +# matrix: +# database: [ mysql, pgsql, sqlite ] +# use-dama: [ 0, 1 ] +# with-migration-configuration-file: +# - '' +# - 'tests/Fixture/MigrationTests/configs/migration-configuration.php' +# - 'tests/Fixture/MigrationTests/configs/migration-configuration-transactional.php' +# exclude: +# # there is currently a bug with MySQL and transactional migrations +# - database: mysql +# with-migration-configuration-file: 'tests/Fixture/MigrationTests/configs/migration-configuration-transactional.php' +# env: +# DATABASE_URL: ${{ contains(matrix.database, 'mysql') && 'mysql://root:root@localhost:3306/foundry?serverVersion=5.7.42' || contains(matrix.database, 'pgsql') && 'postgresql://root:root@localhost:5432/foundry?serverVersion=15' || 'sqlite:///%kernel.project_dir%/var/data.db' }} +# MONGO_URL: '' +# USE_DAMA_DOCTRINE_TEST_BUNDLE: ${{ matrix.use-dama == 1 && 1 || 0 }} +# WITH_MIGRATION_CONFIGURATION_FILE: ${{ matrix.with-migration-configuration-file }} +# PHPUNIT_VERSION: 9 +# services: +# postgres: +# image: ${{ contains(matrix.database, 'pgsql') && 'postgres:15' || '' }} +# env: +# POSTGRES_USER: root +# POSTGRES_PASSWORD: root +# POSTGRES_DB: foundry +# ports: +# - 5432:5432 +# options: >- +# --health-cmd pg_isready +# --health-interval 10s +# --health-timeout 5s +# --health-retries 5 +# steps: +# - name: Checkout code +# uses: actions/checkout@v3 +# +# - name: Setup PHP +# uses: shivammathur/setup-php@v2 +# with: +# php-version: 8.3 +# coverage: none +# tools: flex +# +# - name: Install dependencies +# uses: ramsey/composer-install@v2 +# with: +# dependency-versions: highest +# composer-options: --prefer-dist +# env: +# SYMFONY_REQUIRE: 7.1.* +# +# - name: Set up MySQL +# if: contains(matrix.database, 'mysql') +# run: sudo /etc/init.d/mysql start +# +# - name: Set up MySQL +# run: sudo /etc/init.d/mysql start +# +# - name: Test +# run: ./phpunit --testsuite migrate --bootstrap tests/bootstrap-migrate.php +# shell: bash +# +# test-with-paratest: +# name: Test with paratest +# runs-on: ubuntu-latest +# env: +# DATABASE_URL: 'mysql://root:root@localhost:3306/foundry?serverVersion=5.7.42' +# MONGO_URL: '' +# USE_DAMA_DOCTRINE_TEST_BUNDLE: 1 +# steps: +# - name: Checkout code +# uses: actions/checkout@v3 +# +# - name: Setup PHP +# uses: shivammathur/setup-php@v2 +# with: +# php-version: 8.4 +# coverage: none +# tools: flex +# +# - name: Install dependencies +# uses: ramsey/composer-install@v2 +# with: +# dependency-versions: highest +# composer-options: --prefer-dist +# env: +# SYMFONY_REQUIRE: 7.2.* +# +# - name: Set up MySQL +# run: sudo /etc/init.d/mysql start +# +# - name: Test +# run: vendor/bin/paratest --processes 1 --configuration phpunit-paratest.xml.dist +# shell: bash +# +# code-coverage: +# name: Code Coverage +# runs-on: ubuntu-latest +# env: +# DATABASE_URL: postgresql://root:root@localhost:5432/foundry?serverVersion=15 +# MONGO_URL: mongodb://127.0.0.1:27017/dbName?compressors=disabled&gssapiServiceName=mongodb +# USE_DAMA_DOCTRINE_TEST_BUNDLE: 1 +# USE_FOUNDRY_PHPUNIT_EXTENSION: 1 +# PHPUNIT_VERSION: 11 +# services: +# mongo: +# image: mongo:4 +# ports: +# - 27017:27017 +# postgres: +# image: postgres:15 +# env: +# POSTGRES_USER: root +# POSTGRES_PASSWORD: root +# POSTGRES_DB: foundry +# ports: +# - 5432:5432 +# options: >- +# --health-cmd pg_isready +# --health-interval 10s +# --health-timeout 5s +# --health-retries 5 +# steps: +# - name: Checkout code +# uses: actions/checkout@v3 +# +# - name: Setup PHP +# uses: shivammathur/setup-php@v2 +# with: +# php-version: 8.2 +# coverage: xdebug +# ini-values: xdebug.mode=coverage +# +# - name: Install dependencies +# uses: ramsey/composer-install@v2 +# with: +# composer-options: --prefer-dist +# +# - name: Test with coverage +# run: ./phpunit --coverage-text --coverage-clover coverage.xml +# shell: bash +# env: +# SYMFONY_DEPRECATIONS_HELPER: disabled +# +# - name: Publish coverage report to Codecov +# uses: codecov/codecov-action@v3 +# with: +# file: ./coverage.xml +# +# composer-validate: +# uses: zenstruck/.github/.github/workflows/php-composer-validate.yml@main +# +# lint-docs: +# name: Lint Documentation +# runs-on: ubuntu-latest +# steps: +# - name: "Checkout code" +# uses: actions/checkout@v3 +# +# - name: DOCtor-RST +# uses: docker://oskarstark/doctor-rst +# with: +# args: --short --error-format=github +# env: +# DOCS_DIR: 'docs/' +# +# static-analysis: +# name: Static Analysis +# runs-on: ubuntu-latest +# steps: +# - name: Checkout code +# uses: actions/checkout@v3 +# +# - name: Setup PHP +# uses: shivammathur/setup-php@v2 +# with: +# php-version: 8.3 +# coverage: none +# +# - name: Install dependencies +# uses: ramsey/composer-install@v2 +# with: +# composer-options: --prefer-dist +# +# - name: Install PHPStan +# run: composer bin phpstan install +# +# - name: Run static analysis +# run: bin/tools/phpstan/vendor/phpstan/phpstan/phpstan analyse +# +# - name: Install Psalm +# run: composer bin psalm install +# +# - name: Run Psalm on factories generated with maker +# run: bin/tools/psalm/vendor/vimeo/psalm/psalm +# +# fixcs: +# name: Run php-cs-fixer +# needs: sync-with-template +# if: (github.event_name == 'push' || github.event_name == 'schedule') && !startsWith(github.ref, 'refs/tags') && github.repository_owner == 'zenstruck' +# runs-on: ubuntu-latest +# steps: +# - uses: zenstruck/.github/actions/php-cs-fixer@main +# with: +# php: 8 +# key: ${{ secrets.GPG_PRIVATE_KEY }} +# token: ${{ secrets.COMPOSER_TOKEN }} +# +# sync-with-template: +# name: Sync meta files +# if: (github.event_name == 'push' || github.event_name == 'schedule') && !startsWith(github.ref, 'refs/tags') && github.repository_owner == 'zenstruck' +# runs-on: ubuntu-latest +# steps: +# - uses: zenstruck/.github/actions/sync-with-template@main +# with: +# key: ${{ secrets.GPG_PRIVATE_KEY }} +# token: ${{ secrets.COMPOSER_TOKEN }} diff --git a/src/ORM/ResetDatabase/BaseOrmResetter.php b/src/ORM/ResetDatabase/BaseOrmResetter.php index 8f2bf840..db6930d4 100644 --- a/src/ORM/ResetDatabase/BaseOrmResetter.php +++ b/src/ORM/ResetDatabase/BaseOrmResetter.php @@ -62,6 +62,7 @@ final protected function dropAndResetDatabase(Application $application): void $dbPath = $connection->getParams()['path'] ?? null; $fs = new Filesystem(); if (DoctrineOrmVersionGuesser::isOrmV3() && $dbPath && $fs->exists($dbPath)) { + var_dump('removing db file'); (new Filesystem())->remove($dbPath); }