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" - } 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/* - - - - - - - - - - - - - - - - - - - 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 - - - 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']);