Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
110 changes: 7 additions & 103 deletions .github/workflows/php.yml
Original file line number Diff line number Diff line change
@@ -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
15 changes: 0 additions & 15 deletions .github/workflows/phpstan.yml

This file was deleted.

25 changes: 0 additions & 25 deletions phpcs.xml

This file was deleted.

17 changes: 0 additions & 17 deletions phpunit.xml

This file was deleted.

22 changes: 9 additions & 13 deletions tests/SharedDatabasesTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -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!
Expand All @@ -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
Expand All @@ -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
Expand All @@ -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']);
Expand Down
Loading