diff --git a/.github/workflows/php.yml b/.github/workflows/php.yml
index e1db00d..22bfa1e 100644
--- a/.github/workflows/php.yml
+++ b/.github/workflows/php.yml
@@ -1,114 +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@v4
-
- - name: Setup PHP
- uses: shivammathur/setup-php@v2
- with:
- php-version: ${{ matrix.php }}
- extensions: pdo, pdo_sqlite
- 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/.*} ${{ matrix.phplint_options }} -- .
-
- - 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: 9.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@v4
-
- - name: Setup PHP
- uses: shivammathur/setup-php@v2
- with:
- php-version: ${{ matrix.php }}
- extensions: pdo, pdo_sqlite
- tools: phpunit:${{ matrix.phpunit-version || env.phpunit-version }}
-
- - 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 a4430d9..0000000
--- a/.github/workflows/phpstan.yml
+++ /dev/null
@@ -1,10 +0,0 @@
-name: PHPStan
-
-on:
- pull_request:
- branches:
- - main
-
-jobs:
- phpstan:
- uses: icinga/github-actions/.github/workflows/phpstan.yml@main
diff --git a/phpcs.xml b/phpcs.xml
deleted file mode 100644
index 8cca26f..0000000
--- a/phpcs.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-
-
- Sniff our code a while
-
- src/
- tests/
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/phpstan.neon b/phpstan.neon
index 62fe8a6..c0d5d10 100644
--- a/phpstan.neon
+++ b/phpstan.neon
@@ -10,9 +10,6 @@ parameters:
paths:
- src
- scanDirectories:
- - /usr/share/icinga-php
-
ignoreErrors:
-
messages:
diff --git a/phpunit.xml b/phpunit.xml
deleted file mode 100644
index 973b2ab..0000000
--- a/phpunit.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-
-
-
-
- tests
-
-
-
diff --git a/src/Query.php b/src/Query.php
index 0428068..bba87a7 100644
--- a/src/Query.php
+++ b/src/Query.php
@@ -45,7 +45,7 @@ class Query implements Filterable, LimitOffsetInterface, OrderByInterface, Pagin
* });
* ```
*/
- const ON_SELECT_ASSEMBLED = 'selectAssembled';
+ public const ON_SELECT_ASSEMBLED = 'selectAssembled';
/** @var int Count cache */
protected $count;
diff --git a/tests/FilterProcessorTest.php b/tests/FilterProcessorTest.php
index 6049e0d..3f977da 100644
--- a/tests/FilterProcessorTest.php
+++ b/tests/FilterProcessorTest.php
@@ -9,6 +9,7 @@
use ipl\Stdlib\Filter;
use ipl\Tests\Orm\Lib\Model\Employee;
use ipl\Tests\Orm\Lib\Model\Office;
+use PHPUnit\Framework\Attributes\DataProvider;
class FilterProcessorTest extends \PHPUnit\Framework\TestCase
{
@@ -80,9 +81,8 @@ public function testUnequalDoesNotOverrideUnlike()
* optional other relation, is built by the ORM in a way that coincidental matches are ignored
*
* This will fail if the ORM generates a NOT IN which uses a subquery that produces NULL values.
- *
- * @dataProvider databases
*/
+ #[DataProvider('databases')]
public function testUnequalTargetingAnOptionalToManyRelationIgnoresFalsePositives(Connection $db)
{
$db->insert('office', ['id' => 1, 'city' => 'London']);
@@ -117,7 +117,7 @@ public function testUnequalTargetingAnOptionalToManyRelationIgnoresFalsePositive
$this->assertSame('London', $results[0]['city'] ?? 'not found');
}
- /** @dataProvider databases */
+ #[DataProvider('databases')]
public function testNegationOfAToManyRelationWorksAcrossDatabaseAdapters(Connection $db): void
{
$db->insert('employee', ['id' => 1, 'department_id' => 1, 'name' => 'Minnie', 'role' => 'CEO']);