'DjVuSupport' => "$testDir/parser/DjVuSupport.php",
'TestRecorder' => "$testDir/parser/TestRecorder.php",
'MultiTestRecorder' => "$testDir/parser/MultiTestRecorder.php",
+ 'ParserTestMockParser' => "$testDir/parser/ParserTestMockParser.php",
'ParserTestRunner' => "$testDir/parser/ParserTestRunner.php",
'ParserTestParserHook' => "$testDir/parser/ParserTestParserHook.php",
'ParserTestPrinter' => "$testDir/parser/ParserTestPrinter.php",
'ParserTestResult' => "$testDir/parser/ParserTestResult.php",
'ParserTestResultNormalizer' => "$testDir/parser/ParserTestResultNormalizer.php",
'PhpunitTestRecorder' => "$testDir/parser/PhpunitTestRecorder.php",
+ 'TestFileEditor' => "$testDir/parser/TestFileEditor.php",
'TestFileReader' => "$testDir/parser/TestFileReader.php",
'TestRecorder' => "$testDir/parser/TestRecorder.php",
'TidySupport' => "$testDir/parser/TidySupport.php",
* @ingroup Testing
*/
use MediaWiki\MediaWikiServices;
+use Wikimedia\ScopedCallback;
/**
* @ingroup Testing
// arrays: $setup and $teardown. The code snippets in the $setup array
// are executed at the end of the method, before it returns, and the
// code snippets in the $teardown array are executed in reverse order
- // when the ScopedCallback object is consumed.
+ // when the Wikimedia\ScopedCallback object is consumed.
// Because it is a common operation to save, set and restore global
// variables, we have an additional convention: when the array key of
* @param ScopedCallback|null A ScopedCallback to consume
* @return ScopedCallback
*/
- protected function createTeardownObject( $teardown, $nextTeardown ) {
+ protected function createTeardownObject( $teardown, $nextTeardown = null ) {
return new ScopedCallback( function() use ( $teardown, $nextTeardown ) {
// Schedule teardown snippets in reverse order
$teardown = array_reverse( $teardown );
throw new MWException( "duplicate article '$name' at $file:$line\n" );
}
+ // Use mock parser, to make debugging of actual parser tests simpler.
+ // But initialise the MessageCache clone first, don't let MessageCache
+ // get a reference to the mock object.
+ MessageCache::singleton()->getParser();
+ $restore = $this->executeSetupSnippets( [ 'wgParser' => new ParserTestMockParser ] );
$status = $page->doEditContent( ContentHandler::makeContent( $text, $title ), '', EDIT_NEW );
+ $restore();
+
if ( !$status->isOK() ) {
throw new MWException( $status->getWikiText( false, false, 'en' ) );
}