wiki.techinc.nl/tests/phpunit
Tim Starling bc76602493 DBMS-specific ResultWrapper subclasses
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
2021-07-21 06:54:26 -07:00
..
data Ignore invalid chunks in PNG files, instead of aborting metadata extraction 2021-07-13 11:11:03 +10:00
docs
includes Merge "Introduce new hooks for UserOptionsManager" 2021-07-21 13:52:40 +00:00
integration/includes DBMS-specific ResultWrapper subclasses 2021-07-21 06:54:26 -07:00
languages LanguageConverter: stop reading from $wgUser 2021-07-14 04:19:15 +00:00
maintenance Merge "Use IEC prefixes instead of SI prefixes for byte sizes (docs+backend)" 2021-06-29 10:34:41 +00:00
mocks Add DummyServicesTrait::getDummyReadOnlyMode() 2021-07-05 07:16:13 +00:00
structure Rename change_tag indexes to have ct_ prefix 2021-06-08 17:57:15 +01:00
suites Remove unused default values from class properties 2021-05-12 13:44:28 +02:00
tests Tests: Mark more more closures as static 2021-02-09 02:55:57 +00:00
unit DBMS-specific ResultWrapper subclasses 2021-07-21 06:54:26 -07:00
bootstrap.maintenance.php Tests: Mark more closures as static 2021-02-07 13:26:56 +01:00
bootstrap.php
HamcrestPHPUnitIntegration.php Update Legoktm's email address 2021-05-02 05:39:37 +00:00
LessFileCompilationTest.php
Makefile
MediaWikiCliOptions.php phpunit: Remove the PHPUNIT_REUSE_DB / --reuse-db option 2021-05-19 12:19:59 -07:00
MediaWikiCoversValidator.php Update Legoktm's email address 2021-05-02 05:39:37 +00:00
MediaWikiGroupValidator.php
MediaWikiHooksPHPUnitExtension.php phpunit: Remove MediaWikiPHPUnitTestListener 2021-03-20 15:55:26 +01:00
MediaWikiIntegrationTestCase.php More master -> primary documentation and internal var renaming 2021-07-15 11:20:20 +01:00
MediaWikiLangTestCase.php Use @before/@after in MediaWikiIntegrationTestCase/MediaWikiUnitTestCase 2021-04-27 22:21:59 +02:00
MediaWikiLoggerPHPUnitExtension.php
MediaWikiPHPUnitCommand.php phpunit: Remove MediaWikiPHPUnitTestListener 2021-03-20 15:55:26 +01:00
MediaWikiPHPUnitResultPrinter.php
MediaWikiTestCaseTrait.php Remove dependency on pimple external library 2021-06-24 07:18:23 +00:00
MediaWikiUnitTestCase.php Fix some @stable for ... annotations to use @stable to ... 2021-07-08 02:54:59 +00:00
phpunit.php phpunit.php: Move remaining CLI options to env variables 2021-05-18 12:34:39 +02:00
README
ResourceLoaderTestCase.php Emit media structure as piloted in Parsoid 2021-06-24 23:32:40 +00:00
run-tests.bat
suite.xml phpunit: Remove MediaWikiPHPUnitTestListener 2021-03-20 15:55:26 +01: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