<?php
use MediaWiki\MediaWikiServices;
+use Wikimedia\TestingAccessWrapper;
/**
* Parser-related tests that don't suit for parserTests.txt
$this->parser->parse( $longLine, $title, $options )->getText( [ 'unwrap' => true ] ) );
}
+ /**
+ * @covers Parser::braceSubstitution
+ * @covers SpecialPageFactory::capturePath
+ */
+ public function testSpecialPageTransclusionRestoresGlobalState() {
+ $text = "{{Special:ApiHelp/help}}";
+ $title = Title::newFromText( 'testSpecialPageTransclusionRestoresGlobalState' );
+ $options = ParserOptions::newFromUser( new User() );
+
+ RequestContext::getMain()->setTitle( $title );
+ RequestContext::getMain()->getWikiPage()->CustomTestProp = true;
+
+ $parsed = $this->parser->parse( $text, $title, $options )->getText();
+ $this->assertContains( 'apihelp-header', $parsed );
+
+ // Verify that this property wasn't wiped out by the parse
+ $this->assertTrue( RequestContext::getMain()->getWikiPage()->CustomTestProp );
+ }
+
/**
* Test the parser entry points
* @covers Parser::parse
}
/**
- * @covers Parser::parseLinkParameter
+ * @covers Parser::parseLinkParameterPrivate
* @dataProvider provideParseLinkParameter
*/
public function testParseLinkParameter( $input, $expected, $expectedLinks, $desc ) {
$this->parser->startExternalParse( Title::newFromText( __FUNCTION__ ),
$this->options, Parser::OT_HTML );
- $output = $this->parser->parseLinkParameter( $input );
+ $output = TestingAccessWrapper::newFromObject( $this->parser )
+ ->parseLinkParameterPrivate( $input );
$this->assertEquals( $expected[0], $output[0], "$desc (type)" );