From c9904ce2c861b822ff5c6cc383819207e1f11d10 Mon Sep 17 00:00:00 2001 From: Eric Lippmann Date: Wed, 1 Oct 2025 11:04:57 +0200 Subject: [PATCH 1/4] GitHub Actions: Use new PHP workflow --- .github/workflows/php.yml | 110 +++------------------------------- .github/workflows/phpstan.yml | 15 ----- 2 files changed, 7 insertions(+), 118 deletions(-) delete mode 100644 .github/workflows/phpstan.yml diff --git a/.github/workflows/php.yml b/.github/workflows/php.yml index 6af868b..22bfa1e 100644 --- a/.github/workflows/php.yml +++ b/.github/workflows/php.yml @@ -1,113 +1,17 @@ -name: PHP Tests +name: CI on: push: branches: - main - - release/* pull_request: branches: - main jobs: - lint: - name: Static analysis for php ${{ matrix.php }} on ${{ matrix.os }} - runs-on: ${{ matrix.os }} - - strategy: - fail-fast: false - matrix: - php: ['8.2', '8.3', '8.4'] - os: ['ubuntu-latest'] - - steps: - - name: Checkout code base - uses: actions/checkout@v5 - - - name: Setup PHP - uses: shivammathur/setup-php@v2 - with: - php-version: ${{ matrix.php }} - tools: phpcs - - - name: Setup dependencies - run: composer require -n --no-progress overtrue/phplint - - - name: PHP Lint - if: ${{ ! cancelled() }} - run: ./vendor/bin/phplint -n --exclude={^vendor/.*} -- . - - - name: PHP CodeSniffer - if: ${{ ! cancelled() }} - run: phpcs -wps --colors - - test: - name: Unit tests with php ${{ matrix.php }} on ${{ matrix.os }} - runs-on: ${{ matrix.os }} - - env: - phpunit-version: 8.5 - - strategy: - fail-fast: false - matrix: - php: ['8.2', '8.3', '8.4'] - os: ['ubuntu-latest'] - - services: - mysql: - image: mariadb - env: - MYSQL_ROOT_PASSWORD: root - MYSQL_DATABASE: icinga_unittest - MYSQL_USER: icinga_unittest - MYSQL_PASSWORD: icinga_unittest - options: >- - --health-cmd "mariadb -s -uroot -proot -e'SHOW DATABASES;' 2> /dev/null | grep icinga_unittest > test" - --health-interval 10s - --health-timeout 5s - --health-retries 5 - ports: - - 3306/tcp - - pgsql: - image: postgres - env: - POSTGRES_USER: icinga_unittest - POSTGRES_PASSWORD: icinga_unittest - POSTGRES_DB: icinga_unittest - options: >- - --health-cmd pg_isready - --health-interval 10s - --health-timeout 5s - --health-retries 5 - ports: - - 5432/tcp - - steps: - - name: Checkout code base - uses: actions/checkout@v5 - - - name: Setup PHP - uses: shivammathur/setup-php@v2 - with: - php-version: ${{ matrix.php }} - tools: phpunit:${{ matrix.phpunit-version || env.phpunit-version }} - extensions: pdo, pdo-sqlite - - - name: Setup dependencies - run: composer install -n --no-progress - - - name: PHPUnit - env: - MYSQL_TESTDB: icinga_unittest - MYSQL_TESTDB_HOST: 127.0.0.1 - MYSQL_TESTDB_PORT: ${{ job.services.mysql.ports['3306'] }} - MYSQL_TESTDB_USER: icinga_unittest - MYSQL_TESTDB_PASSWORD: icinga_unittest - PGSQL_TESTDB: icinga_unittest - PGSQL_TESTDB_HOST: 127.0.0.1 - PGSQL_TESTDB_PORT: ${{ job.services.pgsql.ports['5432'] }} - PGSQL_TESTDB_USER: icinga_unittest - PGSQL_TESTDB_PASSWORD: icinga_unittest - run: phpunit --verbose + php: + name: PHP + uses: Icinga/github-actions/.github/workflows/php.yml@main + with: + php-extensions: pdo, pdo-sqlite + databases: true diff --git a/.github/workflows/phpstan.yml b/.github/workflows/phpstan.yml deleted file mode 100644 index 72f916d..0000000 --- a/.github/workflows/phpstan.yml +++ /dev/null @@ -1,15 +0,0 @@ -name: PHPStan - -on: - pull_request: - branches: - - main - -jobs: - phpstan: - uses: icinga/github-actions/.github/workflows/phpstan.yml@main - with: - dependencies: | - { - "/icingaweb2": "https://github.com/Icinga/icingaweb2.git" - } From 11773efc3a2d9225794d30dd068708a38a6df1a5 Mon Sep 17 00:00:00 2001 From: Eric Lippmann Date: Sun, 12 Oct 2025 15:46:00 -0400 Subject: [PATCH 2/4] Remove `phpcs.xml` Use defaults from new workflow. --- phpcs.xml | 25 ------------------------- 1 file changed, 25 deletions(-) delete mode 100644 phpcs.xml diff --git a/phpcs.xml b/phpcs.xml deleted file mode 100644 index 1457bf0..0000000 --- a/phpcs.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - ./ - - vendor/* - - - - - - - - - - - - - - - - - - - From 695244df93c5de944e0e78961e00b7db9025219a Mon Sep 17 00:00:00 2001 From: Eric Lippmann Date: Sun, 12 Oct 2025 15:46:48 -0400 Subject: [PATCH 3/4] Remove `phpunit.xml` Use defaults from new workflow. --- phpunit.xml | 17 ----------------- 1 file changed, 17 deletions(-) delete mode 100644 phpunit.xml diff --git a/phpunit.xml b/phpunit.xml deleted file mode 100644 index 2abc060..0000000 --- a/phpunit.xml +++ /dev/null @@ -1,17 +0,0 @@ - - - - - tests - - - From 4313ad0b4799402d03b4225259b31d58b99f7524 Mon Sep 17 00:00:00 2001 From: Eric Lippmann Date: Mon, 20 Oct 2025 13:46:46 +0200 Subject: [PATCH 4/4] Migrate deprecated `PHPUnit` `PHPDoc` tags to `PHPUnit` attributes --- tests/SharedDatabasesTest.php | 22 +++++++++------------- 1 file changed, 9 insertions(+), 13 deletions(-) diff --git a/tests/SharedDatabasesTest.php b/tests/SharedDatabasesTest.php index fafc0db..641db3a 100644 --- a/tests/SharedDatabasesTest.php +++ b/tests/SharedDatabasesTest.php @@ -5,6 +5,8 @@ use ipl\Sql\Connection; use ipl\Sql\Select; use ipl\Sql\Test\SharedDatabases; +use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\Depends; /** * A test for a test component! Yay! @@ -13,7 +15,7 @@ class SharedDatabasesTest extends TestCase { use SharedDatabases; - /** @dataProvider sharedDatabases */ + #[DataProvider('sharedDatabases')] public function testInsert(Connection $db) { // This is the first case, so the table must have been dropped and be empty @@ -24,10 +26,8 @@ public function testInsert(Connection $db) $db->insert('test', ['name' => 'test2']); } - /** - * @depends testInsert - * @dataProvider sharedDatabases - */ + #[Depends('testInsert')] + #[DataProvider('sharedDatabases')] public function testSelect(Connection $db) { // The previous case inserts "name=test" but tearDown removes it @@ -36,20 +36,16 @@ public function testSelect(Connection $db) $this->assertSame('test2', $result[0]['name']); } - /** - * @depends testSelect - * @dataProvider sharedDatabases - */ + #[Depends('testSelect')] + #[DataProvider('sharedDatabases')] public function testUpdate(Connection $db) { $stmt = $db->update('test', ['name' => 'test3'], ['name = ?' => 'test2']); $this->assertEquals(1, $stmt->rowCount()); } - /** - * @depends testUpdate - * @dataProvider sharedDatabases - */ + #[Depends('testUpdate')] + #[DataProvider('sharedDatabases')] public function testDelete(Connection $db) { $stmt = $db->delete('test', ['name = ?' => 'test3']);