Open
Description
This is what I think must be done:
- Add PHP 8.4 to the CI of the track and allow it to fail
- Add PHPUnit 11 to the CI of the track and allow it to fail
- Use PHPUnit attributes, not annotations (annotations are deprecated, but still available)
- Update test generator to produce attributes not annotations
- Convert tests from annotations to attributes. Use
rector/rector
for that
- Fix the problems that occur with PHP 8.4 and PHPUnit 11
- Measure performance when using PHP 8.4 (look at
alphametics
!) - Check the CI test to catch tests that would fail due to the runtime limit set by Exercism infrastructure. Uses
timeout 54s <command>
as a process based limit per exercise (3x 18 seconds, see forum for calculation details)
- Measure performance when using PHP 8.4 (look at
- Prepare the PHP test-runner to upgrade to PHP 8.4 / PHPUnit11: Coordination: Prepare for students code using PHP 8.4 php-test-runner#150
- Prepare the PHP representer to upgrade to PHP 8.4: Coordination: Prepare for students code using PHP 8.4 php-representer#297
- Do the actual switch to PHP 8.2 - 8.4 and PHPUnit 11 as the production versions
- Merge test runner upgrade PR
- Update student facing documentation
- Remove PHP 8.1 / PHPUnit 10 from CI, add PHP8.2/8.3 to PHPUnit11 workflow
- Revert performance workaround in "robot-name" exercise (requires PHPUnit >= 11)
In the whole process, try to avoid re-running the representer and not to trigger re-testing all community solutions. These are very costly to Exercism.
Metadata
Metadata
Assignees
Labels
Improve existing functionality/contentLittle Exercism knowledge requiredWork on Concept ExercisesWork on Exercise generatorsWork on Practice ExercisesWork on RepresentersWork on Test RunnersWork on Continuous Integration (e.g. GitHub Actions workflows)Write code that is not student-facing content (e.g. test-runners, generators, but not exercises)Work on DockerfilesWork on Documentation