* (bug 31100) Fix regression in sidebar (special: page links lost parameters)
authorBrion Vibber <brion@users.mediawiki.org>
Thu, 22 Sep 2011 21:35:24 +0000 (21:35 +0000)
committerBrion Vibber <brion@users.mediawiki.org>
Thu, 22 Sep 2011 21:35:24 +0000 (21:35 +0000)
Regression in Title::fixSpecialName() in r86255; fixed and added a unit test case to TitleTest.

includes/Title.php
tests/phpunit/includes/TitleTest.php

index 1f1a6a8..b863f8d 100644 (file)
@@ -4194,9 +4194,9 @@ class Title {
         */
        public function fixSpecialName() {
                if ( $this->getNamespace() == NS_SPECIAL ) {
-                       list( $canonicalName, /*...*/ ) = SpecialPageFactory::resolveAlias( $this->mDbkeyform );
+                       list( $canonicalName, $par ) = SpecialPageFactory::resolveAlias( $this->mDbkeyform );
                        if ( $canonicalName ) {
-                               $localName = SpecialPageFactory::getLocalNameFor( $canonicalName );
+                               $localName = SpecialPageFactory::getLocalNameFor( $canonicalName, $par );
                                if ( $localName != $this->mDbkeyform ) {
                                        return Title::makeTitle( NS_SPECIAL, $localName );
                                }
index c128fdd..06ee3b2 100644 (file)
@@ -15,4 +15,26 @@ class TitleTest extends MediaWikiTestCase {
                }
        }
 
+       /**
+        * @dataProvider dataBug31100
+        */
+       function testBug31100FixSpecialName( $text, $expectedParam ) {
+               $title = Title::newFromText( $text );
+               $fixed = $title->fixSpecialName();
+               $stuff = explode( '/', $fixed->getDbKey(), 2 );
+               if ( count( $stuff ) == 2 ) {
+                       $par = $stuff[1];
+               } else {
+                       $par = null;
+               }
+               $this->assertEquals( $expectedParam, $par, "Bug 31100 regression check: Title->fixSpecialName() should preserve parameter" );
+       }
+
+       function dataBug31100() {
+               return array(
+                       array( 'Special:Version', null ),
+                       array( 'Special:Version/', '' ),
+                       array( 'Special:Version/param', 'param' ),
+               );
+       }
 }