Files
roundcubemail/.github/workflows/message_rendering.yml
Pablo Zmdl a03221041e Run test with PHP 8.5-rc (#9970)
* Allow to inject composer arguments into testing scripts

* Run unit tests with PHP v8.5, too

* Run browser tests with PHP 8.5, too

* Depend on php-cs-fixer v3.8, which supports PHP v8.4

* Run code style checks in CI on PHP v8.4

* Check for vars being set and not null before using them as array keys

* Use generic tag name in container image build script

The script is meant for locally building images (the CI workflow runs
other code), so we now use localhost/ as namespace.

* Check that variable is usable before using it as array key

This includes proper type declarations for the method arguments and its return value.

* Ensure that the input to chr() is between 0 and 255.

* Require guzzle v7.10.0, which supports PHP 8.5

* Update phpunit a little to decide when to fail on deprecations

PHPUnit 10.5.47 and later know the flag `--do-not-fail-on-deprecation`, which allows us to make it not exit with code 1
in case of deprecations on the second run of the script. That second run uses the lowest valid dependencies, which might
contain deprecations when used with newer versions of PHP, but still are acceptable versions, and should not make our
tests fail.

* Run message rendering tests with PHP v8.4 and v8.5, too

* Check explicitly for null-ness

0 would be a valid value here.

* Replace chr() by mb_chr() and remove the workaround
2025-09-14 11:33:38 +02:00

47 lines
1.5 KiB
YAML

name: Message Rendering
on:
push:
pull_request:
permissions:
contents: read
jobs:
message_rendering:
runs-on: ubuntu-latest
if: "!contains(github.event.head_commit.message, '[skip ci]') && !contains(github.event.head_commit.message, '[ci skip]')"
strategy:
fail-fast: false
matrix:
php: ["8.3", "8.4", "8.5"]
name: Linux / PHP ${{ matrix.php }}
steps:
- name: Checkout code
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
# Run via docker compose because we can't run greenmail in a server here
# (it requires the testing emails to be present when starting but
# services are started before the repo is cloned). And instead of
# re-building what our compose-file contains we can just use it.
- name: Run tests via docker compose
if: ${{ matrix.php != '8.5' }}
run: docker compose -f .ci/compose.yaml run test_message_rendering
- name: Run tests via docker compose
if: ${{ matrix.php == '8.5' }}
env:
ROUNDCUBEMAIL_IMAGE_MESSAGE_RENDERING: ghcr.io/roundcube/roundcubemail:php8.5-rc
COMPOSE_ARGS: '--ignore-platform-reqs'
run: docker compose -f .ci/compose.yaml run test_message_rendering
- name: Upload artifacts
uses: actions/upload-artifact@4cec3d8aa04e39d1a68397de0c4cd6fb9dce8ec1 # v4.6.1
if: failure()
with:
name: Logs
path: logs/errors.log