Merge "Parser: Hard deprecate getConverterLanguage" into REL1_34
[lhc/web/wiklou.git] / tests / phpunit / includes / ExtraParserTest.php
index 7ce4d1e..6e699bc 100644 (file)
@@ -1,6 +1,7 @@
 <?php
 
 use MediaWiki\MediaWikiServices;
+use Wikimedia\TestingAccessWrapper;
 
 /**
  * Parser-related tests that don't suit for parserTests.txt
@@ -46,6 +47,25 @@ class ExtraParserTest extends MediaWikiTestCase {
                        $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
@@ -217,13 +237,14 @@ class ExtraParserTest extends MediaWikiTestCase {
        }
 
        /**
-        * @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)" );