wiki.techinc.nl/tests/phpunit
Tim Starling c956ce85b7 Use STRAIGHT_JOIN when filtering on frequently used tags
MySQL was incorrectly doing the change_tag table first, even when that
required scanning ~1M rows, because it believed that the only alternative
was scanning the whole of recentchanges, ~10M rows. Use a better model
for the set sizes which takes the query limit into account.

Also:

* Factor out the change_tag_for_display_query hack and avoid copying
  the data more than once
* Add a cache for SpecialRecentChanges::getDB()
* Move the rc_new hack up closer to the other perf hacks

Bug: T298225
Change-Id: Ic3d16dd3ebdc683c7cfce6ae86b60e951145ad7a
2022-01-07 15:07:15 +11:00
..
data Merge "Reapply "Move limit report rendering to ParserOutput"" 2021-11-11 00:19:44 +00:00
docs
includes Use STRAIGHT_JOIN when filtering on frequently used tags 2022-01-07 15:07:15 +11:00
integration/includes Merge "UserSelectQueryBuilderTest: Test behavior of hidden()" 2021-12-22 07:05:53 +00:00
languages Delete (month)-date messages 2021-12-26 14:46:03 +02:00
maintenance Remove or replace usages of "sanity" 2021-11-21 16:42:31 +00:00
mocks Tests: Update syntax referencing classes and internal functions 2021-12-02 17:07:49 +01:00
structure phpunit: Use is_file/is_dir instead of file_exists 2022-01-03 21:47:56 +01:00
suites phpunit: Use is_file/is_dir instead of file_exists 2022-01-03 21:47:56 +01:00
tests Remove or replace usages of "sanity" 2021-11-21 16:42:31 +00:00
unit Add per-table straight join option 2022-01-07 13:26:25 +11:00
bootstrap.maintenance.php Add deprecation warnings to wfLogProfilingData() 2021-11-17 21:58:45 +00:00
bootstrap.php phpunit: Initialize CLI options for vendor/bin/phpunit 2021-12-16 15:21:58 +00:00
HamcrestPHPUnitIntegration.php
LessFileCompilationTest.php
Makefile
MediaWikiCliOptions.php
MediaWikiCoversValidator.php
MediaWikiGroupValidator.php
MediaWikiIntegrationTestCase.php phpunit: Use is_file/is_dir instead of file_exists 2022-01-03 21:47:56 +01:00
MediaWikiLangTestCase.php
MediaWikiLoggerPHPUnitExtension.php Re-add PHPUnit start/end log messages 2021-11-26 13:58:41 +11:00
MediaWikiPHPUnitCommand.php
MediaWikiPHPUnitResultPrinter.php
MediaWikiTestCaseTrait.php phpunit: Use is_file/is_dir instead of file_exists 2022-01-03 21:47:56 +01:00
MediaWikiUnitTestCase.php phpunit: Include DevelopmentSettings for composer phpunit:unit 2021-10-02 22:34:33 +00:00
phpunit.php
README
ResourceLoaderTestCase.php resourceloader: Improve wgResourceLoaderMaxage docs, minor clean up 2022-01-06 18:52:45 +00:00
run-tests.bat
suite.xml PHPUnit: enable convertDeprecationsToExceptions 2021-09-25 10:05:18 +00:00

== MediaWiki PHPUnit Tests ==

The unit and integration tests for MediaWiki are implemented using the PHPUnit testing
framework and require PHPUnit to run.


=== WARNING ===

Some of the integration tests are DESTRUCTIVE and WILL ALTER YOUR WIKI'S CONTENTS.

DO NOT RUN THESE TESTS ON A PRODUCTION SYSTEM OR ON ANY SYSTEM WHERE YOU NEED
TO RETAIN YOUR DATA.


== Installation ==

If you used composer to install MediaWiki's dependencies PHPUnit will already be available, unless
you explicitly specified the --no-dev flag during the install. In this case just run "composer update".

Otherwise follow the installation instructions in the
PHPUnit Manual at:

  https://phpunit.de/manual/current/en/installation.html


== Running tests ==

The tests are run from your operating system's command line.

Ensure that you are in the tests/phpunit directory of your MediaWiki
installation.


On Unix-like operating systems, the tests runs are controlled with a makefile.
Run command:

  make help

for a full list of options for running tests.


On Windows-family operating systems, run the 'run-tests.bat' batch file.


=== Writing tests ===

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

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