wiki.techinc.nl/tests/phpunit
Aaron Schulz 4659cbcccc rdbms: fix table prefixing in "FOR UPDATE" clause generation in Postgres
Make SqlPlatform::tableNameWithAlias() include the unqualified table
name as an alias if doing so is not redundant. This assures that the
default alias from JoinGroupBase::addJoin(), equal to the unqualified
table name, will be usable in SQL (regardless of table prefixes).

Clean up use of identifier quotes for sqlite_master tables. The called
methods expect unqualified names and a passthrough exception already
exists for sqlite_* tables.

Use "block_target.bt_user" directly in ApiQueryBlocks and BlockPager,
instead of using addIdentifierQuotes(). The "block_target" alias is
automatically added to the SQL by the rdbms layer when it's not clearly
redundant, so it is always safe to use block_target.bt_user. Also, there
is no reason for aliases to include quote characters. They are supposed
to be simple alphanumerics like column names. This makes it easy for
tableNameWithAlias() to avoid redundant aliases by checking tableName().

Avoid unneeded quotes around pg_catalog.* table names in the Postgres
installer. The relevant documentation of methods like selectField() is
that the table names be unqualified (no quotes nor dots), though dots
are still supported internally for compatibility reasons and ease of
querying schemas like pg_catalog and information_schema.

Change-Id: Ic7d7826da31f49915141692cb3bd84ed1e872e96
2025-06-24 22:33:30 +01:00
..
data Merge "Add namespace to maintenance/includes classes" 2024-10-15 22:50:33 +00:00
docs Add namespace to maintenance/includes classes 2024-10-09 11:02:09 -04:00
includes rdbms: fix table prefixing in "FOR UPDATE" clause generation in Postgres 2025-06-24 22:33:30 +01:00
integration/includes REST: Remove unused setUseParserCache() as potential footgun 2025-04-05 11:35:48 +00:00
maintenance tests: Use namespaced classes 2024-10-21 18:53:02 +02:00
mocks logger: Make log() methods return void 2025-06-18 02:21:42 +00:00
structure structure tests: allow PHP 8.1 syntax and autoload enums 2025-06-18 10:55:15 +01:00
suites tests: Use namespaced classes 2024-10-21 18:53:02 +02:00
tests tests: Add missing documentation to class properties 2024-09-18 17:25:42 +00:00
unit rdbms: fix table prefixing in "FOR UPDATE" clause generation in Postgres 2025-06-24 22:33:30 +01:00
bootstrap.common.php
bootstrap.integration.php
bootstrap.maintenance.php
bootstrap.php phpunit: Fix bootstrap script when no extensions are installed 2025-02-21 22:24:30 +00:00
DynamicPropertyTestHelper.php Drop PHP 7.4/8.0 support from master (forward-port from MW 1.42) 2025-06-18 10:53:22 +01:00
getPHPUnitExtensionsAndSkins.php phpunit: Fix bootstrap script when no extensions are installed 2025-02-21 22:24:30 +00:00
HamcrestPHPUnitIntegration.php
JsonSchemaAssertionTrait.php REST: validate JSON in tests 2024-09-20 15:42:32 +00:00
MediaWikiCoversValidator.php
MediaWikiDeprecatedConfigPHPUnitExtension.php
MediaWikiGroupValidator.php
MediaWikiIntegrationTestCase.php title: Reset cached Title objects between tests 2025-05-27 12:35:10 +00:00
MediaWikiLangTestCase.php
MediaWikiLoggerPHPUnitExtension.php
MediaWikiPHPUnitResultPrinter.php
MediaWikiTeardownPHPUnitExtension.php
MediaWikiTestCaseTrait.php Use explicit nullable type on parameter arguments 2024-10-16 20:58:33 +02:00
MediaWikiUnitTestCase.php tests: Add missing documentation to class properties 2024-09-18 17:25:42 +00:00
MWTestDox.php
phpunit.php phpunit: Don't override --bootstrap if supplied 2025-01-13 15:14:27 +00:00
README.md
ResourceLoaderTestCase.php Use explicit nullable type on parameter arguments 2024-10-16 20:58:33 +02:00
suite.xml
TestSelectQueryBuilder.php Expand tests for rename user maintenance scripts 2024-10-08 21:51:59 +01:00

MediaWiki PHPUnit tests

WARNING: Integration tests may be destructive and alter or remove parts of your local database. We try to use temporary tables where possible, but you must never run tests on a production server or on a wiki where you don't want to lose data.

Running tests

If you haven't already, run composer update (specifically without --no-dev) in the MediaWiki core directory. This will install PHPUnit.

To read about how to run specific tests, refer to:

https://www.mediawiki.org/wiki/Manual:PHP_unit_testing/Running_the_tests

Writing tests

A guide to writing PHPUnit tests for MediaWiki can be found at:

https://www.mediawiki.org/wiki/Manual:PHP_unit_testing