Building on my last few changes to use UserIdentityLookup and TitleParser, plus the recent addition of UserNameUtils to the DummyServicesTrait, its now fairly simple to make this a unit test and retrieve services from DummyServicesTrait instead of MediaWikiServices. Add a 'hookContainer' option to DummyServicesTrait::getDummyUserNameUtils(), because subclasses of TypeDefTestCase don't have a helper method createHookContainer() (normally this is provided by MediaWikiTestCaseTrait). Instead, create a manual mock HookContainer, like we did previously at NamespaceDefTest. Also add more options to DummyServicesTrait to allow callers to provide service instances, needed to avoid creating two MediaWikiTitleCodec objects and to use a hook container in NamespaceInfo. This also required replacing uses of createNoOpMock() in DummyServicesTrait, because that is also not available in UserDefTest (its another feature of MediaWikiTestCaseTrait). It may be worth exploring splitting MediaWikiTestCaseTrait into the parts that are specific to MediaWiki (like HookContainer or the Message system) and parts that are useful generally (like createNoOpMock). Change-Id: I25b8f0256d222d994173eee66f379fb5422994b5 |
||
|---|---|---|
| .. | ||
| data | ||
| docs | ||
| includes | ||
| integration/includes | ||
| languages | ||
| maintenance | ||
| mocks | ||
| structure | ||
| suites | ||
| tests | ||
| unit | ||
| bootstrap.maintenance.php | ||
| bootstrap.php | ||
| HamcrestPHPUnitIntegration.php | ||
| LessFileCompilationTest.php | ||
| Makefile | ||
| MediaWikiCliOptions.php | ||
| MediaWikiCoversValidator.php | ||
| MediaWikiGroupValidator.php | ||
| MediaWikiIntegrationTestCase.php | ||
| MediaWikiLangTestCase.php | ||
| MediaWikiLoggerPHPUnitExtension.php | ||
| MediaWikiPHPUnitCommand.php | ||
| MediaWikiPHPUnitResultPrinter.php | ||
| MediaWikiTestCaseTrait.php | ||
| MediaWikiUnitTestCase.php | ||
| phpunit.php | ||
| README | ||
| ResourceLoaderTestCase.php | ||
| run-tests.bat | ||
| suite.xml | ||
== 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