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']);