wiki.techinc.nl/tests/phpunit
Daimona Eaytoy 485e47ff10 tests: Avoid database usage when possible
We would like to remove DB access in non-database PHPUnit tests. As a
first step, avoid database usage in tested code when possible. In
particular:
- In NameTableStoreFactory, avoid domain ID normalization if the
  provided ID is already false.
- In SpecialDoubleRedirects, do not acquire a DB connection until it's
  needed (which is just one place).
- Use editPage() in TitleDefTest instead of a DIY implementation, and
  add `@group Database` accordingly.
- Avoid parsing titles in ContentHandler tests that don't need to parse
  titles. Among the many dependencies of parsing titles is the interwiki
  lookup, which requires DB access.
- Also remove test cases that used the "Gadget" namespace; it doesn't
  exist in core, so these pages were actually in the mainspace.
- Mock the database in CategoriesRdfTest. The only two methods that use
  the database were already being mocked.
- Add `@group Database` to test classes that are intentionally using the
  Database, mainly via getTestUser().

Bug: T155147
Change-Id: I9385fe14cfeb6b7b7378cc322d510034c4ee0711
2023-07-31 00:46:13 +00:00
..
data Add 1.40 snapshot to sqlite db tests 2023-05-26 11:34:55 +02:00
docs
includes tests: Avoid database usage when possible 2023-07-31 00:46:13 +00:00
integration/includes tests: Avoid database usage when possible 2023-07-31 00:46:13 +00:00
maintenance tests: Avoid database usage when possible 2023-07-31 00:46:13 +00:00
mocks phpunit: Replace ad-hoc array in TestLocalisationCache with MapCacheLRU 2023-07-24 17:52:31 +00:00
structure tests: Avoid database usage when possible 2023-07-31 00:46:13 +00:00
suites phpunit: Delete DummyExtensionsTest 2023-07-17 12:16:27 +00:00
tests Replace array_keys in foreach to use $_ as value instead 2023-07-10 02:53:52 +00:00
unit Merge "Fix incomplete/broken ParserFactoryTest & ParserTest" 2023-07-28 17:08:30 +00:00
bootstrap.common.php phpunit: Set the MW_INSTALL_PATH env variable if needed 2023-07-17 15:28:26 +02:00
bootstrap.integration.php phpunit: Streamline loading of Setup.php 2023-07-13 03:21:45 +02:00
bootstrap.maintenance.php Merge "Avoid mentioning tests/phpunit.php in documentation" 2023-07-24 16:32:47 +00:00
bootstrap.php phpunit: Streamline loading of Setup.php 2023-07-13 03:21:45 +02:00
HamcrestPHPUnitIntegration.php
MediaWikiCoversValidator.php
MediaWikiGroupValidator.php
MediaWikiIntegrationTestCase.php phpunit: Throw exception in getDb() for non-database tests 2023-07-31 00:06:21 +00:00
MediaWikiLangTestCase.php Replace usages of deprecated MWException 2023-06-06 17:05:32 +02:00
MediaWikiLoggerPHPUnitExtension.php phpunit: Add PHPUNIT_LOGS flag 2023-02-08 22:15:32 -08:00
MediaWikiPHPUnitResultPrinter.php
MediaWikiTeardownPHPUnitExtension.php phpunit: Use PHPUnit hooks to tear down the test DB after the last test 2023-07-13 01:10:11 +02:00
MediaWikiTestCaseTrait.php phpunit: Move assertArraySubmapSame() to MediaWikiTestCaseTrait 2023-05-01 22:19:21 +00:00
MediaWikiUnitTestCase.php
MWTestDox.php
phpunit.php phpunit: Deprecate tests/phpunit/phpunit.php script 2023-07-12 19:28:39 +00:00
README.md
ResourceLoaderTestCase.php ResourceLoader: Add structure test for ResourceLoader::respond() 2023-04-10 18:18:54 -07:00
suite.xml phpunit: Use PHPUnit hooks to tear down the test DB after the last test 2023-07-13 01:10:11 +02:00
TestSelectQueryBuilder.php Migrate assertSelect() to SelectQueryBuilder 2023-06-28 09:03:58 +10: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