Cleanup after the switch of Database::query() to return ResultWrapper instead of resource. * Soft-deprecate the IResultWrapper accessors in IDatabase. * Move relevant DBMS-specific functionality to ResultWrapper subclasses. The deprecated methods in IResultWrapper become short and simple. ResultWrapper is now abstract (b/c break). * Move the implementation of fieldName(), numFields() and one of the fieldInfo() implementations to the ResultWrapper subclass in order to avoid ResultWrapper::unwrap() calls. * Make Database::doQuery() return a ResultWrapper subclass instead of underlying result data, so that the Database parent class does not need to be aware of wrapper construction. * Hard-deprecate ResultWrapper::unwrap(), DatabaseMysqlBase::fieldType(), DatabasePostgres::fieldType(). * Fix the inefficient seeking method in SQLite. * Make FakeResultWrapper extend ResultWrapper with an implementation similar to the SQLite one. This is possible because ResultWrapper does not depend on IDatabase anymore. * Resolve fixme in DatabasePostgres: from studying the source, neither pg_fetch_object() nor pg_num_rows() can set an error retrievable with pg_last_error(). Removed unnecessary warning suppression. * ResultWrapperTest didn't make sense as a unit test anymore, so I adapted it as an integration test against the current DBMS. This change also means that ResultWrapper::key() always gives the correct offset, even if Iterator methods are not being used. Bug: T286694 Change-Id: I935835316c0bd7d3d061bd8fde9c9ce99ce756ec |
||
|---|---|---|
| .. | ||
| 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 | ||
| MediaWikiHooksPHPUnitExtension.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