wiki.techinc.nl/tests/phpunit
Timo Tijhof 4ef0891994 rdbms: Consolidate logger channels into one
Notable changes:

* In SqlBagOStuff::getConnectionFromServerInfo, only two loggers were
  injected. The rest implicitly got a NullLogger due to being absent.
  These are now effectively unsilenced.

* Database::__construct() required almost all parameters, even the
  loggers. I've wanted to move some of DatabaseFactory into the ctor
  here for a while. In order to make this change not a breaking
  change, the new 'logger' parameter is optional with NullLogger as
  default. This allowed some of the test cases, which were simply
  passing NullLogger, to be fixed by passing nothing instead of
  passing the new option name.

  The Database class is behind a dozen layers of indirection for
  real use, so this will still be injected just fine (DBF, LB, LBF,
  MWLBF, etc.).

* In LegacyLogger, the handling for $wgDBerrorLog was previously
  limited to DBConnection and DBQuery. This now includes errors
  from other (generally, newer) parts of Rdbms as well, which were
  previously missing.

  This only affects sites (typically CI and dev setup) where
  $wgDBerrorLog is used, as opposed to the more common
  $wgDebugLogGroups by-channel configuration.

* TransactionProfiler gets its logger injected in a rather odd way,
  via entrypoints (MediaWiki.php, ApiMain.php, and MaintenanceRunner)
  as opposed to service wiring. This is kept as-is for now.

* In LBFactoryTest, in particular testInvalidSelectDBIndependent2,
  there are cases that intentionally produce failures of which
  the result is then observed. In CI we assert that dberror.log is
  empty so instead of adding the missing logger fields to that
  LBFactory instance, the only one set (replLogger) is removed.
  The alternative is to set 'logger' now, which would naturally
  cause CI failures due to unexpected entries coming through to
  non-mocked error log.

Bug: T320873
Change-Id: I7ca996618e41b93f488cb5c4de82000bb36e0dd3
2023-01-03 22:46:38 +00:00
..
data AutoLoader: Drop support for $wgAutoloadAttemptLowercase 2022-12-04 02:38:57 -05:00
docs
includes rdbms: Consolidate logger channels into one 2023-01-03 22:46:38 +00:00
integration/includes rdbms: Consolidate logger channels into one 2023-01-03 22:46:38 +00:00
languages Fix whitespaces after comma 2022-12-15 01:24:14 +01:00
maintenance Make use of the new PageUpdateStatus 2022-11-30 17:56:58 +00:00
mocks DummyServicesTrait: add content handler factory 2023-01-02 01:09:42 +00:00
structure tests: Do not hide deprecation in SpecialPageFatalTest 2022-12-16 13:04:45 +00:00
suites Followup to 02d13afa: Respect parsoid-compatible options in CLI runs 2022-10-25 17:05:22 -05:00
tests Make use of the new PageUpdateStatus 2022-11-30 17:56:58 +00:00
unit rdbms: Consolidate logger channels into one 2023-01-03 22:46:38 +00:00
bootstrap.maintenance.php Revert "phpunit: Default to vendor/bin/phpunit, remove suites.xml" 2022-06-09 14:15:54 +00:00
bootstrap.php profiler: Inject $wgProfiler from Setup.php to Profiler 2022-11-09 02:58:19 +00:00
HamcrestPHPUnitIntegration.php
LessFileCompilationTest.php tests: Fix types in documentation by adding use statements 2022-05-29 07:11:15 +00:00
MediaWikiCliOptions.php
MediaWikiCoversValidator.php tests: Upgrade PHPUnit from 8.5+ to 9.5+ 2022-10-08 02:03:55 +02:00
MediaWikiGroupValidator.php
MediaWikiIntegrationTestCase.php Merge "Make use of the ?? and ??= operators where it makes sense" 2022-12-16 01:06:50 +00:00
MediaWikiLangTestCase.php
MediaWikiLoggerPHPUnitExtension.php phpunit: Fix trivial dynamic property usages in tests 2022-07-29 01:59:23 +02:00
MediaWikiPHPUnitResultPrinter.php tests: Upgrade PHPUnit from 8.5+ to 9.5+ 2022-10-08 02:03:55 +02:00
MediaWikiTestCaseTrait.php tests: Replace checkPHPExtension() with @requires annotations 2022-10-23 20:47:14 -04:00
MediaWikiUnitTestCase.php AutoLoader: Drop support for $wgAutoloadAttemptLowercase 2022-12-04 02:38:57 -05:00
MWTestDox.php phpunit: Restore default progress reporter and add MWTestDox option 2022-06-12 19:22:57 +00:00
phpunit.php Revert "phpunit: Default to vendor/bin/phpunit, remove suites.xml" 2022-06-09 14:15:54 +00:00
README.md
ResourceLoaderTestCase.php Reorg: Move some of request related classes to MediaWiki/Request 2022-10-28 10:15:31 +00:00
suite.xml tests: Upgrade PHPUnit from 8.5+ to 9.5+ 2022-10-08 02:03:55 +02: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