Skip to content

Coordination: Upgrade to PHP 8.2 - 8.4 and PHPUnit 11 #884

Open
@mk-mxp

Description

@mk-mxp

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)
  • 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.

FYI: @tomasnorre @homersimpsons

Metadata

Metadata

Assignees

No one assigned

    Labels

    x:action/improveImprove existing functionality/contentx:knowledge/elementaryLittle Exercism knowledge requiredx:module/concept-exerciseWork on Concept Exercisesx:module/generatorWork on Exercise generatorsx:module/practice-exerciseWork on Practice Exercisesx:module/representerWork on Representersx:module/test-runnerWork on Test Runnersx:type/ciWork on Continuous Integration (e.g. GitHub Actions workflows)x:type/codingWrite code that is not student-facing content (e.g. test-runners, generators, but not exercises)x:type/dockerWork on Dockerfilesx:type/docsWork on Documentation

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions