diff --git a/.github/workflows/php.yml b/.github/workflows/php.yml
index ef5c9f8..7c366c3 100644
--- a/.github/workflows/php.yml
+++ b/.github/workflows/php.yml
@@ -14,50 +14,61 @@ on: # yamllint disable-line rule:truthy
workflow_dispatch:
jobs:
+ phplinter:
+ name: 'PHP-Linter'
+ strategy:
+ fail-fast: false
+ matrix:
+ php-version: ['8.1', '8.2', '8.3', '8.4']
+
+ uses: simplesamlphp/simplesamlphp-test-framework/.github/workflows/reusable_phplinter.yml@v1.9.2
+ with:
+ php-version: ${{ matrix.php-version }}
+
linter:
- name: Linter
- runs-on: ['ubuntu-latest']
+ name: 'Linter'
+ strategy:
+ fail-fast: false
- steps:
- - uses: actions/checkout@v4
- with:
- fetch-depth: 0
-
- - name: Lint Code Base
- uses: super-linter/super-linter/slim@v7
- env:
- SAVE_SUPER_LINTER_OUTPUT: false
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- LINTER_RULES_PATH: 'tools/linters'
- LOG_LEVEL: NOTICE
- VALIDATE_ALL_CODEBASE: true
- VALIDATE_CSS: true
- VALIDATE_JAVASCRIPT_ES: true
- VALIDATE_JSON: true
- VALIDATE_PHP_BUILTIN: true
- VALIDATE_YAML: true
- VALIDATE_XML: true
- VALIDATE_GITHUB_ACTIONS: true
+ uses: simplesamlphp/simplesamlphp-test-framework/.github/workflows/reusable_linter.yml@v1.9.2
+ with:
+ enable_eslinter: false
+ enable_jsonlinter: true
+ enable_stylelinter: false
+ enable_yamllinter: true
- quality:
- name: Quality control
- runs-on: [ubuntu-latest]
+ unit-tests-linux:
+ name: "Unit tests, PHP ${{ matrix.php-versions }}, ${{ matrix.operating-system }}"
+ runs-on: ${{ matrix.operating-system }}
+ needs: [phplinter, linter]
+ strategy:
+ fail-fast: false
+ matrix:
+ operating-system: [ubuntu-latest]
+ php-versions: ['8.1', '8.2', '8.3', '8.4']
steps:
- name: Setup PHP, with composer and extensions
- id: setup-php
# https://github.com/shivammathur/setup-php
uses: shivammathur/setup-php@v2
with:
- # Should be the higest supported version, so we can use the newest tools
- php-version: '8.3'
- tools: composer, composer-require-checker, composer-unused, phpcs, psalm
- # optional performance gain for psalm: opcache
- extensions: ctype, date, dom, fileinfo, filter, hash, intl, mbstring, opcache, openssl, pcre, posix, sockets, spl, xml
+ php-version: ${{ matrix.php-versions }}
+ extensions: ctype, date, dom, fileinfo, filter, hash, intl, mbstring, openssl, pcre, posix, sockets, spl, xml
+ tools: composer
+ ini-values: error_reporting=E_ALL
+ coverage: pcov
- name: Setup problem matchers for PHP
run: echo "::add-matcher::${{ runner.tool_cache }}/php.json"
+ - name: Setup problem matchers for PHPUnit
+ run: echo "::add-matcher::${{ runner.tool_cache }}/phpunit.json"
+
+ - name: Set git to use LF
+ run: |
+ git config --global core.autocrlf false
+ git config --global core.eol lf
+
- uses: actions/checkout@v4
- name: Get composer cache directory
@@ -70,64 +81,60 @@ jobs:
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
restore-keys: ${{ runner.os }}-composer-
- - name: Validate composer.json and composer.lock
- run: composer validate
-
- name: Install Composer dependencies
run: composer install --no-progress --prefer-dist --optimize-autoloader
- - name: Check code for hard dependencies missing in composer.json
- run: composer-require-checker check --config-file=tools/composer-require-checker.json composer.json
-
- - name: Check code for unused dependencies in composer.json
- run: composer-unused
-
- - name: PHP Code Sniffer
- run: phpcs
+ - name: Run unit tests with coverage
+ if: ${{ matrix.php-versions == '8.4' }}
+ run: vendor/bin/phpunit
- - name: Psalm
- continue-on-error: true
- run: |
- psalm -c psalm.xml \
- --show-info=true \
- --shepherd \
- --php-version=${{ steps.setup-php.outputs.php-version }}
+ - name: Run unit tests (no coverage)
+ if: ${{ matrix.php-versions != '8.4' }}
+ run: vendor/bin/phpunit --no-coverage
- - name: Psalm (testsuite)
- run: |
- psalm -c psalm-dev.xml \
- --show-info=true \
- --shepherd \
- --php-version=${{ steps.setup-php.outputs.php-version }}
+ - name: Save coverage data
+ if: ${{ matrix.php-versions == '8.4' }}
+ uses: actions/upload-artifact@v4
+ with:
+ name: coverage-data
+ path: ${{ github.workspace }}/build
- - name: Psalter
- run: |
- psalm --alter \
- --issues=UnnecessaryVarAnnotation \
- --dry-run \
- --php-version=${{ steps.setup-php.outputs.php-version }}
+ unit-tests-windows:
+ name: "Unit tests, PHP ${{ matrix.php-versions }}, ${{ matrix.operating-system }}"
+ runs-on: ${{ matrix.operating-system }}
+ needs: [phplinter, linter]
+ strategy:
+ fail-fast: true
+ matrix:
+ operating-system: [windows-latest]
+ php-versions: ['8.1', '8.2', '8.3', '8.4']
- security:
- name: Security checks
- runs-on: [ubuntu-latest]
steps:
- name: Setup PHP, with composer and extensions
# https://github.com/shivammathur/setup-php
uses: shivammathur/setup-php@v2
with:
- # Should be the lowest supported version
- php-version: '8.1'
+ php-version: ${{ matrix.php-versions }}
extensions: ctype, date, dom, fileinfo, filter, hash, intl, mbstring, openssl, pcre, posix, sockets, spl, xml
tools: composer
+ ini-values: error_reporting=E_ALL
coverage: none
- name: Setup problem matchers for PHP
run: echo "::add-matcher::${{ runner.tool_cache }}/php.json"
+ - name: Setup problem matchers for PHPUnit
+ run: echo "::add-matcher::${{ runner.tool_cache }}/phpunit.json"
+
+ - name: Set git to use LF
+ run: |
+ git config --global core.autocrlf false
+ git config --global core.eol lf
+
- uses: actions/checkout@v4
- name: Get composer cache directory
- run: echo COMPOSER_CACHE="$(composer config cache-files-dir)" >> "$GITHUB_ENV"
+ run: echo COMPOSER_CACHE="$(composer config cache-files-dir)" >> "$env:GITHUB_ENV"
- name: Cache composer dependencies
uses: actions/cache@v4
@@ -137,49 +144,31 @@ jobs:
restore-keys: ${{ runner.os }}-composer-
- name: Install Composer dependencies
- run: composer install --no-progress --prefer-dist --optimize-autoloader
-
- - name: Security check for locked dependencies
- run: composer audit
-
- - name: Update Composer dependencies
- run: composer update --no-progress --prefer-dist --optimize-autoloader
+ run: composer install --no-progress --prefer-dist --optimize-autoloader --ignore-platform-req=ext-posix
- - name: Security check for updated dependencies
- run: composer audit
+ - name: Run unit tests
+ run: vendor/bin/phpunit --no-coverage
- unit-tests-linux:
- name: "Unit tests, PHP ${{ matrix.php-versions }}, ${{ matrix.operating-system }}"
- runs-on: ${{ matrix.operating-system }}
- needs: [linter, quality, security]
- strategy:
- fail-fast: false
- matrix:
- operating-system: [ubuntu-latest]
- php-versions: ['8.1', '8.2', '8.3']
+ quality:
+ name: Quality control
+ runs-on: [ubuntu-latest]
steps:
- name: Setup PHP, with composer and extensions
+ id: setup-php
# https://github.com/shivammathur/setup-php
uses: shivammathur/setup-php@v2
with:
- php-version: ${{ matrix.php-versions }}
- extensions: ctype, date, dom, fileinfo, filter, hash, intl, mbstring, openssl, pcre, posix, sockets, spl, xml
- tools: composer
- ini-values: error_reporting=E_ALL
- coverage: pcov
+ # Should be the higest supported version, so we can use the newest tools
+ php-version: '8.4'
+ tools: composer, composer-require-checker, composer-unused, phpcs, psalm
+ # optional performance gain for psalm: opcache
+ extensions: ctype, date, dom, fileinfo, filter, hash, intl, mbstring, opcache, openssl, \
+ pcre, posix, sockets, spl, xml
- name: Setup problem matchers for PHP
run: echo "::add-matcher::${{ runner.tool_cache }}/php.json"
- - name: Setup problem matchers for PHPUnit
- run: echo "::add-matcher::${{ runner.tool_cache }}/phpunit.json"
-
- - name: Set git to use LF
- run: |
- git config --global core.autocrlf false
- git config --global core.eol lf
-
- uses: actions/checkout@v4
- name: Get composer cache directory
@@ -192,60 +181,64 @@ jobs:
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
restore-keys: ${{ runner.os }}-composer-
+ - name: Validate composer.json and composer.lock
+ run: composer validate
+
- name: Install Composer dependencies
run: composer install --no-progress --prefer-dist --optimize-autoloader
- - name: Run unit tests with coverage
- if: ${{ matrix.php-versions == '8.3' }}
- run: vendor/bin/phpunit
+ - name: Check code for hard dependencies missing in composer.json
+ run: composer-require-checker check --config-file=tools/composer-require-checker.json composer.json
- - name: Run unit tests (no coverage)
- if: ${{ matrix.php-versions != '8.3' }}
- run: vendor/bin/phpunit --no-coverage
+ - name: Check code for unused dependencies in composer.json
+ run: composer-unused
- - name: Save coverage data
- if: ${{ matrix.php-versions == '8.3' }}
- uses: actions/upload-artifact@v4
- with:
- name: coverage-data
- path: ${{ github.workspace }}/build
+ - name: PHP Code Sniffer
+ run: phpcs
- unit-tests-windows:
- name: "Unit tests, PHP ${{ matrix.php-versions }}, ${{ matrix.operating-system }}"
- runs-on: ${{ matrix.operating-system }}
- needs: [linter, quality, security]
- strategy:
- fail-fast: true
- matrix:
- operating-system: [windows-latest]
- php-versions: ['8.1', '8.2', '8.3']
+ - name: Psalm
+ continue-on-error: true
+ run: |
+ psalm -c psalm.xml \
+ --show-info=true \
+ --shepherd \
+ --php-version=${{ steps.setup-php.outputs.php-version }}
+ - name: Psalm (testsuite)
+ run: |
+ psalm -c psalm-dev.xml \
+ --show-info=true \
+ --shepherd \
+ --php-version=${{ steps.setup-php.outputs.php-version }}
+
+ - name: Psalter
+ run: |
+ psalm --alter \
+ --issues=UnnecessaryVarAnnotation \
+ --dry-run \
+ --php-version=${{ steps.setup-php.outputs.php-version }}
+
+ security:
+ name: Security checks
+ runs-on: [ubuntu-latest]
steps:
- name: Setup PHP, with composer and extensions
# https://github.com/shivammathur/setup-php
uses: shivammathur/setup-php@v2
with:
- php-version: ${{ matrix.php-versions }}
+ # Should be the lowest supported version
+ php-version: '8.1'
extensions: ctype, date, dom, fileinfo, filter, hash, intl, mbstring, openssl, pcre, posix, sockets, spl, xml
tools: composer
- ini-values: error_reporting=E_ALL
coverage: none
- name: Setup problem matchers for PHP
run: echo "::add-matcher::${{ runner.tool_cache }}/php.json"
- - name: Setup problem matchers for PHPUnit
- run: echo "::add-matcher::${{ runner.tool_cache }}/phpunit.json"
-
- - name: Set git to use LF
- run: |
- git config --global core.autocrlf false
- git config --global core.eol lf
-
- uses: actions/checkout@v4
- name: Get composer cache directory
- run: echo COMPOSER_CACHE="$(composer config cache-files-dir)" >> "$env:GITHUB_ENV"
+ run: echo COMPOSER_CACHE="$(composer config cache-files-dir)" >> "$GITHUB_ENV"
- name: Cache composer dependencies
uses: actions/cache@v4
@@ -255,10 +248,16 @@ jobs:
restore-keys: ${{ runner.os }}-composer-
- name: Install Composer dependencies
- run: composer install --no-progress --prefer-dist --optimize-autoloader --ignore-platform-req=ext-posix
+ run: composer install --no-progress --prefer-dist --optimize-autoloader
- - name: Run unit tests
- run: vendor/bin/phpunit --no-coverage
+ - name: Security check for locked dependencies
+ run: composer audit
+
+ - name: Update Composer dependencies
+ run: composer update --no-progress --prefer-dist --optimize-autoloader
+
+ - name: Security check for updated dependencies
+ run: composer audit
coverage:
name: Code coverage
diff --git a/codecov.yml b/codecov.yml
index d01dd7d..66cf7b9 100644
--- a/codecov.yml
+++ b/codecov.yml
@@ -1,16 +1,18 @@
+---
+
coverage:
status:
project:
default:
target: 0%
threshold: 2%
- patch: off
+ patch: false
comment:
layout: "diff"
behavior: once
require_changes: true
- require_base: no
- require_head: yes
+ require_base: false
+ require_head: true
branches: null
github_checks:
diff --git a/psalm-dev.xml b/psalm-dev.xml
index 6116331..95c5632 100644
--- a/psalm-dev.xml
+++ b/psalm-dev.xml
@@ -15,13 +15,4 @@
-
-
-
-
-
-
-
-
-
diff --git a/tests/src/Auth/Process/FticksTest.php b/tests/src/Auth/Process/FticksTest.php
index 97a28d3..3fae91f 100644
--- a/tests/src/Auth/Process/FticksTest.php
+++ b/tests/src/Auth/Process/FticksTest.php
@@ -15,7 +15,7 @@
use function array_merge;
use function preg_quote;
-class FticksTest extends TestCase
+final class FticksTest extends TestCase
{
/** @var array minimal request */
private static $minRequest = [
@@ -412,8 +412,8 @@ public function testFilteringString(): void
public function testInvalidConfig(): void
{
$this->expectException(Error\Exception::class);
- $result = self::processFilter([], self::$minRequest);
- $result = self::processFilter(['federation' => 'ACME', 'logdest' => 'invalid'], self::$minRequest);
+ self::processFilter([], self::$minRequest);
+ self::processFilter(['federation' => 'ACME', 'logdest' => 'invalid'], self::$minRequest);
}
/**
@@ -422,7 +422,7 @@ public function testInvalidConfig(): void
public function testRiskyLogSettings(): void
{
Logger::setCaptureLog();
- $result = self::processFilter(
+ self::processFilter(
['federation' => 'ACME', 'logdest' => 'local', 'logconfig' => ['processname' => 'phpunit']],
self::$minRequest,
);
diff --git a/tools/linters/.yaml-lint.yml b/tools/linters/.yaml-lint.yml
new file mode 100644
index 0000000..630095a
--- /dev/null
+++ b/tools/linters/.yaml-lint.yml
@@ -0,0 +1,7 @@
+---
+
+extends: default
+
+rules:
+ line-length:
+ max: 120