Page MenuHomePhabricator

Stop using internal PHPUnit code in Scribunto
Closed, ResolvedPublic

Description

PHPUnit 10 no longer invokes a static method called suite on test classes. Also, paratest (T50217) doesn't seem to work well with test classes that dynamically add more tests. For these reasons, Scribunto needs to stop relying on the suite method to define its test suites.

In general, the Scribunto test suite is quite "creative" and uses PHPUnit features that are marked as @internal in PHPUnit 10. An example issue this caused is T418217. All these should be avoided, in favour of a suite configuration that is supported by upstream.

Related: T345481 for removing the same deprecated pattern from core.

Details

Related Changes in Gerrit:
SubjectAuthorRepoBranchLines +/-
SomeRandomDevelopermediawiki/coreREL1_43+1 -14
SomeRandomDevelopermediawiki/coreREL1_44+1 -14
SomeRandomDevelopermediawiki/extensions/ProofreadPageREL1_45+4 -0
SomeRandomDevelopermediawiki/extensions/ProofreadPageREL1_45+77 -2
SomeRandomDevelopermediawiki/coreREL1_45+1 -14
Arendpietermediawiki/coremaster+0 -63
Lucas Werkmeister (WMDE)mediawiki/extensions/WikibaseLexememaster+173 -49
Arendpietermediawiki/extensions/Scribuntomaster+567 -208
Arendpietermediawiki/extensions/JsonConfigmaster+31 -59
Arendpietermediawiki/extensions/WikibaseMediaInfomaster+29 -1
Arendpietermediawiki/extensions/ProofreadPagemaster+77 -2
Arendpietermediawiki/extensions/ProofreadPagemaster+4 -0
Arendpietermediawiki/coremaster+1 -14
Arendpietermediawiki/extensions/JsonConfigmaster+54 -33
Show related patches Customize query in gerrit

Related Objects

Event Timeline

Daimona renamed this task from Stop using PHPUnit's TestSuite in Scribunto to Stop using internal PHPUnit code in Scribunto.Feb 25 2026, 12:02 PM
Daimona updated the task description. (Show Details)

Change #1243878 had a related patch set uploaded (by Arendpieter; author: Arendpieter):

[mediawiki/extensions/Scribunto@master] tests: Replace dynamic suite building with standard class hierarchy

https://gerrit.wikimedia.org/r/1243878

Change #1243910 had a related patch set uploaded (by Arendpieter; author: Arendpieter):

[mediawiki/core@master] PhpUnitSplitter: Remove Scribunto dynamic suite workarounds

https://gerrit.wikimedia.org/r/1243910

Change #1243928 had a related patch set uploaded (by Arendpieter; author: Arendpieter):

[mediawiki/extensions/JsonConfig@master] tests: Replace dynamic suite building with standard class hierarchy

https://gerrit.wikimedia.org/r/1243928

@Jdforrester-WMF The merge order needs to be: CoreJsonConfigScribunto. I’m not very familiar with Gerrit’s Depends-On feature yet, but that was my plan.

[Conversation moved from gerrit.]

@Jdforrester-WMF The merge order needs to be: CoreJsonConfigScribunto. I’m not very familiar with Gerrit’s Depends-On feature yet, but that was my plan.

OK, so the core change won't actually break CI for Scribunto? If it did the CI wouldn't currently be passing for the core change, as it and any extension that depends on Scribunto (currently 16) have Scribunto's tests run for any change. Hmm, OK, that's plausible.

Change #1243956 had a related patch set uploaded (by Arendpieter; author: Arendpieter):

[mediawiki/extensions/ProofreadPage@master] tests: Adapt Scribunto test for LuaEngineTestBase getEngineName()

https://gerrit.wikimedia.org/r/1243956

Change #1243910 merged by jenkins-bot:

[mediawiki/core@master] PhpUnitSplitter: Remove Scribunto dynamic suite workarounds

https://gerrit.wikimedia.org/r/1243910

Change #1243928 merged by jenkins-bot:

[mediawiki/extensions/JsonConfig@master] tests: Replace dynamic suite building with standard class hierarchy

https://gerrit.wikimedia.org/r/1243928

Change #1243956 merged by jenkins-bot:

[mediawiki/extensions/ProofreadPage@master] tests: Adapt Scribunto test for LuaEngineTestBase getEngineName()

https://gerrit.wikimedia.org/r/1243956

Change #1244568 had a related patch set uploaded (by Arendpieter; author: Arendpieter):

[mediawiki/extensions/ProofreadPage@master] tests: Rename abstract *Test classes to *TestBase for PHPUnit 9.6

https://gerrit.wikimedia.org/r/1244568

Change #1244590 had a related patch set uploaded (by Arendpieter; author: Arendpieter):

[mediawiki/extensions/WikibaseMediaInfo@master] tests: Rename abstract *Test classes to *TestBase for PHPUnit 9.6

https://gerrit.wikimedia.org/r/1244590

Change #1244568 merged by jenkins-bot:

[mediawiki/extensions/ProofreadPage@master] tests: Rename abstract *Test classes to *TestBase for PHPUnit 9.6

https://gerrit.wikimedia.org/r/1244568

Change #1244711 had a related patch set uploaded (by Arendpieter; author: Arendpieter):

[mediawiki/extensions/JsonConfig@master] Remove temporary suite() workaround for old Scribunto

https://gerrit.wikimedia.org/r/1244711

Change #1244590 merged by jenkins-bot:

[mediawiki/extensions/WikibaseMediaInfo@master] tests: Rename abstract *Test classes to *TestBase for PHPUnit 9.6

https://gerrit.wikimedia.org/r/1244590

@Jdforrester-WMF I finally fixed all CI errors. The merge order is now ScribuntuJsonConfig. The latter removes the temporary suite() workaround for the old Scribunto, which was needed because of a dependency cycle.

Change #1243878 merged by jenkins-bot:

[mediawiki/extensions/Scribunto@master] tests: Replace dynamic suite building with standard class hierarchy

https://gerrit.wikimedia.org/r/1243878

Change #1244711 merged by jenkins-bot:

[mediawiki/extensions/JsonConfig@master] Remove temporary suite() workaround for old Scribunto

https://gerrit.wikimedia.org/r/1244711

Jdforrester-WMF assigned this task to Arendpieter.

Superb work, thank you!

Change #1247121 had a related patch set uploaded (by Lucas Werkmeister (WMDE); author: Lucas Werkmeister (WMDE)):

[mediawiki/extensions/WikibaseLexeme@master] Adapt to Scribunto test changes (split tests, no more suite())

https://gerrit.wikimedia.org/r/1247121

Change #1247121 merged by Jforrester:

[mediawiki/extensions/WikibaseLexeme@master] Adapt to Scribunto test changes (split tests, no more suite())

https://gerrit.wikimedia.org/r/1247121

Change #1251027 had a related patch set uploaded (by Arendpieter; author: Arendpieter):

[mediawiki/core@master] Drop obsolete LuaEngineTestSkip splitter workaround

https://gerrit.wikimedia.org/r/1251027

Change #1251027 merged by jenkins-bot:

[mediawiki/core@master] Drop obsolete LuaEngineTestSkip splitter workaround

https://gerrit.wikimedia.org/r/1251027

Change #1282056 had a related patch set uploaded (by SomeRandomDeveloper; author: Arendpieter):

[mediawiki/extensions/ProofreadPage@REL1_45] tests: Adapt Scribunto test for LuaEngineTestBase getEngineName()

https://gerrit.wikimedia.org/r/1282056

Change #1282057 had a related patch set uploaded (by SomeRandomDeveloper; author: Arendpieter):

[mediawiki/extensions/ProofreadPage@REL1_45] tests: Rename abstract *Test classes to *TestBase for PHPUnit 9.6

https://gerrit.wikimedia.org/r/1282057

Change #1282063 had a related patch set uploaded (by SomeRandomDeveloper; author: Arendpieter):

[mediawiki/core@REL1_45] PhpUnitSplitter: Remove Scribunto dynamic suite workarounds

https://gerrit.wikimedia.org/r/1282063

Change #1282063 merged by jenkins-bot:

[mediawiki/core@REL1_45] PhpUnitSplitter: Remove Scribunto dynamic suite workarounds

https://gerrit.wikimedia.org/r/1282063

Change #1282057 abandoned by SomeRandomDeveloper:

[mediawiki/extensions/ProofreadPage@REL1_45] tests: Rename abstract *Test classes to *TestBase for PHPUnit 9.6

https://gerrit.wikimedia.org/r/1282057

Change #1282056 abandoned by SomeRandomDeveloper:

[mediawiki/extensions/ProofreadPage@REL1_45] tests: Adapt Scribunto test for LuaEngineTestBase getEngineName()

https://gerrit.wikimedia.org/r/1282056

Change #1282064 had a related patch set uploaded (by SomeRandomDeveloper; author: Arendpieter):

[mediawiki/core@REL1_44] PhpUnitSplitter: Remove Scribunto dynamic suite workarounds

https://gerrit.wikimedia.org/r/1282064

Change #1282066 had a related patch set uploaded (by SomeRandomDeveloper; author: Arendpieter):

[mediawiki/core@REL1_43] PhpUnitSplitter: Remove Scribunto dynamic suite workarounds

https://gerrit.wikimedia.org/r/1282066

Change #1282064 merged by jenkins-bot:

[mediawiki/core@REL1_44] PhpUnitSplitter: Remove Scribunto dynamic suite workarounds

https://gerrit.wikimedia.org/r/1282064

Change #1282066 merged by jenkins-bot:

[mediawiki/core@REL1_43] PhpUnitSplitter: Remove Scribunto dynamic suite workarounds

https://gerrit.wikimedia.org/r/1282066