Parser tests

Each parser test case specifies input wikitext and output HTML, to confirm that things operate as expected. The actual output is compared with the desired result, and thus, the parser test cases (also known as parser tests) can be helpful at spotting regressions.

The parser test cases reside in tests/parser/parserTests.txt. Extensions should place their tests in a tests/parser/ directory.

They can be run both through the phpunit test suite and through the standalone parserTests.php -- so a parser test failure should trigger a Jenkins test failure.

Syntax & executionEdit

Version 2 format
Starting with 1.35, parser tests are required to be in the Version 2 format. Specifying version 2 indicates that the tests are ready to be run in "tidy" mode (See T249138).
To indicate your parser tests are run in version 2 format, the first line in your parser test file must be !! Version 2

Syntax is as follows:

!! Version 2
!! test
Simple paragraph
!! config
wgRestrictDisplayTitle=false
!! input
This is a simple paragraph.
!! result
<p>This is a simple paragraph.
</p>
!! end

The config section can be omitted. If you specify configuration settings there, make sure you don't have any whitespace between your expressions, as whitespace isn't trimmed by the test runner.

In order to create a new article the syntax is:

!! article
Template:Simple template
!! text
A ''simple'' template.
!! endarticle

In order to be sure that the extension tag tag1 is loaded add at the beginning of the file:

!! hooks
tag1
!! endhooks

Extensions that place their tests in tests/parser/ and are using extension.json will automatically have their parser tests run. For extensions using the legacy extension loading system, they can use:

$wgParserTestFiles[] = __DIR__ . "/myParserTests.txt";

To run the parser tests, go to the root directory of your local MediaWiki installation and execute the following from the command line:

php tests/parser/parserTests.php
Prior to MediaWiki 1.28, this file was located at tests/parserTests.php.

To run tests for just one file, use --file=... param. See more params with --help.

php tests/parser/parserTests.php --file=extensions/Kartographer/tests/parser/parserTests.txt

Setting global config variablesEdit

To set default global variables for all parser tests in an extension, use the ParserTestGlobals hook.

In a specific test, set the config variables as follows:

!! test
Your Test Name
!! config
wgVariableName=true
!! wikitext
...

See alsoEdit