chore: bump base image to php 8.5 and update dev tool versions#229
Conversation
- Update base image to appwrite/utopia-base:php-8.5-2.0.0 - Bump PHP requirement to 8.5 - Update rector to 2.4.3 with PHP 8.5 sets - Update phpstan to 2.1.54 - Update phpunit to 13.1.9 - Update swoole/ide-helper to 6.0.2 - Update CI swoole image to phpswoole/swoole:6.2.0-php8.5-alpine - Apply rector refactors and fix new phpstan findings Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Greptile SummaryThis PR upgrades the executor to PHP 8.5, Swoole 6.x, PHPUnit 13, Rector 2.4, and PHPStan 2.1.54, switching the base image to
Confidence Score: 4/5Safe to merge for most scenarios, but the silent removal of OPEN_RUNTIMES_BUILD_COMPRESSION=none support warrants confirmation that no callers depend on it. The tooling, dependency, and PHP version changes are all well-executed and internally consistent. The one unresolved question is whether existing callers pass OPEN_RUNTIMES_BUILD_COMPRESSION=none to opt into uncompressed tarballs — Docker.php now ignores that variable and always produces code.tar.gz, while testBuildUncompressed still passes the variable but was updated to expect the compressed filename. src/Executor/Runner/Docker.php — verify that removal of the OPEN_RUNTIMES_BUILD_COMPRESSION=none code path is intentional and no existing callers rely on it. Important Files Changed
Reviews (10): Last reviewed commit: "test: use named keys for null body in sc..." | Re-trigger Greptile |
…raints - Make data providers static for PHPUnit 10+ compatibility - Bind closures with $this for assertions invoked from static providers - Switch dev tool versions to ^ caret constraints Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Drop phpstan ignore by passing \$this as a parameter to scenario closures instead of relying on Closure::bindTo. Also set WORKDIR to /usr/local in Dockerfile since the new utopia-base image defaults to /usr/src/code. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
The new utopia-base image does not include docker-cli, which is required for the executor to inspect and manage runtime containers. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Adapt to new Console::execute signature which now requires $stderr. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Runtime images (after-build.sh) always write build output to code.tar.gz regardless of OPEN_RUNTIMES_BUILD_COMPRESSION. Drop the executor's mismatched code.tar expectation and update testBuildUncompressed to copy code.tar.gz on start. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Picks up the curl_close removal that fixes PHP 8.5 deprecation noise during e2e test runs. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
| convertErrorsToExceptions="true" | ||
| convertNoticesToExceptions="true" | ||
| convertWarningsToExceptions="true" | ||
| processIsolation="false" |
There was a problem hiding this comment.
processIsolation dropped in PHPUnit 10+
The processIsolation attribute was removed from the root <phpunit> element in PHPUnit 10. The PR already cleaned up four other attributes that were removed at the same time (backupStaticAttributes, convertErrorsToExceptions, convertNoticesToExceptions, convertWarningsToExceptions), but processIsolation was left in. With PHPUnit 13.1.9 enforcing the XML schema strictly, this attribute may generate an unrecognised-attribute error that prevents the test suite from running at all. The stopOnFailure attribute (line 6) was also moved in PHPUnit 10 — it may be worth verifying both are still accepted by PHPUnit 13.
PHPUnit 13's --debug verbose event log returns exit code 2 even on green test runs. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
PHPUnit 10+ removed support for @dataProvider docblock annotations. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
PHP errors when unpacking arrays with positional args after named keys. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Summary
appwrite/utopia-base:php-8.5-2.0.0and PHP requirement to 8.5phpswoole/swoole:6.2.0-php8.5-alpineTest plan
🤖 Generated with Claude Code