Merge "Misc follow-ups to I2fc3966e (a161c5e)"
authorjenkins-bot <jenkins-bot@gerrit.wikimedia.org>
Mon, 25 Feb 2013 08:55:30 +0000 (08:55 +0000)
committerGerrit Code Review <gerrit@wikimedia.org>
Mon, 25 Feb 2013 08:55:30 +0000 (08:55 +0000)
includes/Title.php
tests/phpunit/includes/ExtraParserTest.php
tests/phpunit/includes/parser/MagicVariableTest.php
tests/phpunit/includes/parser/TagHooksTest.php

index c1782e5..40e5b09 100644 (file)
@@ -681,6 +681,7 @@ class Title {
        public function getContentModel() {
                if ( !$this->mContentModel ) {
                        $linkCache = LinkCache::singleton();
+                       $linkCache->addLinkObj( $this );
                        $this->mContentModel = $linkCache->getGoodLinkFieldObj( $this, 'model' );
                }
 
@@ -2944,22 +2945,21 @@ class Title {
         * @return Bool
         */
        public function isRedirect( $flags = 0 ) {
-               if ( !is_null( $this->mRedirect ) ) {
+               if ( !( $flags & Title::GAID_FOR_UPDATE ) && !is_null( $this->mRedirect ) ) {
                        return $this->mRedirect;
                }
-               # Calling getArticleID() loads the field from cache as needed
+
                if ( !$this->getArticleID( $flags ) ) {
                        return $this->mRedirect = false;
                }
 
                $linkCache = LinkCache::singleton();
+               $linkCache->addLinkObj( $this );
                $cached = $linkCache->getGoodLinkFieldObj( $this, 'redirect' );
+
                if ( $cached === null ) {
-                       // TODO: check the assumption that the cache actually knows about this title
-                       // and handle this, such as get the title from the database.
-                       // See https://bugzilla.wikimedia.org/show_bug.cgi?id=37209
-                       wfDebug( "LinkCache doesn't currently know about this title: " . $this->getPrefixedDBkey() );
-                       wfDebug( wfBacktrace() );
+                       // Should not happen
+                       throw new MWException( "LinkCache doesn't know redirect status of this title: " . $this->getPrefixedDBkey() );
                }
 
                $this->mRedirect = (bool)$cached;
@@ -2975,20 +2975,21 @@ class Title {
         * @return Int
         */
        public function getLength( $flags = 0 ) {
-               if ( $this->mLength != -1 ) {
+               if ( !( $flags & Title::GAID_FOR_UPDATE ) && $this->mLength != -1 ) {
                        return $this->mLength;
                }
-               # Calling getArticleID() loads the field from cache as needed
+
                if ( !$this->getArticleID( $flags ) ) {
                        return $this->mLength = 0;
                }
+
                $linkCache = LinkCache::singleton();
+               $linkCache->addLinkObj( $this );
                $cached = $linkCache->getGoodLinkFieldObj( $this, 'length' );
-               if ( $cached === null ) { # check the assumption that the cache actually knows about this title
-                       # XXX: this does apparently happen, see https://bugzilla.wikimedia.org/show_bug.cgi?id=37209
-                       #      as a stop gap, perhaps log this, but don't throw an exception?
-                       wfDebug( "LinkCache doesn't currently know about this title: " . $this->getPrefixedDBkey() );
-                       wfDebug( wfBacktrace() );
+
+               if ( $cached === null ) {
+                       // Should not happen
+                       throw new MWException( "LinkCache doesn't know redirect status of this title: " . $this->getPrefixedDBkey() );
                }
 
                $this->mLength = intval( $cached );
@@ -3007,17 +3008,18 @@ class Title {
                if ( !( $flags & Title::GAID_FOR_UPDATE ) && $this->mLatestID !== false ) {
                        return intval( $this->mLatestID );
                }
-               # Calling getArticleID() loads the field from cache as needed
+
                if ( !$this->getArticleID( $flags ) ) {
                        return $this->mLatestID = 0;
                }
+
                $linkCache = LinkCache::singleton();
                $linkCache->addLinkObj( $this );
                $cached = $linkCache->getGoodLinkFieldObj( $this, 'revision' );
-               if ( $cached === null ) { # check the assumption that the cache actually knows about this title
-                       # XXX: this does apparently happen, see https://bugzilla.wikimedia.org/show_bug.cgi?id=37209
-                       #      as a stop gap, perhaps log this, but don't throw an exception?
-                       throw new MWException( "LinkCache doesn't currently know about this title: " . $this->getPrefixedDBkey() );
+
+               if ( $cached === null ) {
+                       // Should not happen
+                       throw new MWException( "LinkCache doesn't know latest revision ID of this title: " . $this->getPrefixedDBkey() );
                }
 
                $this->mLatestID = intval( $cached );
index 067cfc4..e0e5535 100644 (file)
@@ -26,7 +26,11 @@ class ExtraParserTest extends MediaWikiTestCase {
                MagicWord::clearCache();
        }
 
-       // Bug 8689 - Long numeric lines kill the parser
+       /**
+        * Bug 8689 - Long numeric lines kill the parser
+        *
+        * @group Database
+        */
        function testBug8689() {
                global $wgUser;
                $longLine = '1.' . str_repeat( '1234567890', 100000 ) . "\n";
@@ -37,13 +41,20 @@ class ExtraParserTest extends MediaWikiTestCase {
                        $this->parser->parse( $longLine, $t, $options )->getText() );
        }
 
-       /* Test the parser entry points */
+       /**
+        * Test the parser entry points
+        *
+        * @group Database
+        */
        function testParse() {
                $title = Title::newFromText( __FUNCTION__ );
                $parserOutput = $this->parser->parse( "Test\n{{Foo}}\n{{Bar}}", $title, $this->options );
                $this->assertEquals( "<p>Test\nContent of <i>Template:Foo</i>\nContent of <i>Template:Bar</i>\n</p>", $parserOutput->getText() );
        }
 
+       /**
+        * @group Database
+        */
        function testPreSaveTransform() {
                global $wgUser;
                $title = Title::newFromText( __FUNCTION__ );
@@ -52,6 +63,9 @@ class ExtraParserTest extends MediaWikiTestCase {
                $this->assertEquals( "Test\nContent of ''Template:Foo''\n{{Bar}}", $outputText );
        }
 
+       /**
+        * @group Database
+        */
        function testPreprocess() {
                $title = Title::newFromText( __FUNCTION__ );
                $outputText = $this->parser->preprocess( "Test\n{{Foo}}\n{{Bar}}", $title, $this->options );
index dfcdafd..51643ce 100644 (file)
@@ -65,44 +65,68 @@ class MagicVariableTest extends MediaWikiTestCase {
 
        # day
 
-       /** @dataProvider MediaWikiProvide::Days */
+       /**
+        * @dataProvider MediaWikiProvide::Days
+        * @group Database
+        */
        function testCurrentdayIsUnPadded( $day ) {
                $this->assertUnPadded( 'currentday', $day );
        }
 
-       /** @dataProvider MediaWikiProvide::Days */
+       /**
+        * @dataProvider MediaWikiProvide::Days
+        * @group Database
+        */
        function testCurrentdaytwoIsZeroPadded( $day ) {
                $this->assertZeroPadded( 'currentday2', $day );
        }
 
-       /** @dataProvider MediaWikiProvide::Days */
+       /**
+        * @dataProvider MediaWikiProvide::Days
+        * @group Database
+        */
        function testLocaldayIsUnPadded( $day ) {
                $this->assertUnPadded( 'localday', $day );
        }
 
-       /** @dataProvider MediaWikiProvide::Days */
+       /**
+        * @dataProvider MediaWikiProvide::Days
+        * @group Database
+        */
        function testLocaldaytwoIsZeroPadded( $day ) {
                $this->assertZeroPadded( 'localday2', $day );
        }
 
        # month
 
-       /** @dataProvider MediaWikiProvide::Months */
+       /**
+        * @dataProvider MediaWikiProvide::Months
+        * @group Database
+        */
        function testCurrentmonthIsZeroPadded( $month ) {
                $this->assertZeroPadded( 'currentmonth', $month );
        }
 
-       /** @dataProvider MediaWikiProvide::Months */
+       /**
+        * @dataProvider MediaWikiProvide::Months
+        * @group Database
+        */
        function testCurrentmonthoneIsUnPadded( $month ) {
                $this->assertUnPadded( 'currentmonth1', $month );
        }
 
-       /** @dataProvider MediaWikiProvide::Months */
+       /**
+        * @dataProvider MediaWikiProvide::Months
+        * @group Database
+        */
        function testLocalmonthIsZeroPadded( $month ) {
                $this->assertZeroPadded( 'localmonth', $month );
        }
 
-       /** @dataProvider MediaWikiProvide::Months */
+       /**
+        * @dataProvider MediaWikiProvide::Months
+        * @group Database
+        */
        function testLocalmonthoneIsUnPadded( $month ) {
                $this->assertUnPadded( 'localmonth1', $month );
        }
@@ -110,24 +134,36 @@ class MagicVariableTest extends MediaWikiTestCase {
 
        # revision day
 
-       /** @dataProvider MediaWikiProvide::Days */
+       /**
+        * @dataProvider MediaWikiProvide::Days
+        * @group Database
+        */
        function testRevisiondayIsUnPadded( $day ) {
                $this->assertUnPadded( 'revisionday', $day );
        }
 
-       /** @dataProvider MediaWikiProvide::Days */
+       /**
+        * @dataProvider MediaWikiProvide::Days
+        * @group Database
+        */
        function testRevisiondaytwoIsZeroPadded( $day ) {
                $this->assertZeroPadded( 'revisionday2', $day );
        }
 
        # revision month
 
-       /** @dataProvider MediaWikiProvide::Months */
+       /**
+        * @dataProvider MediaWikiProvide::Months
+        * @group Database
+        */
        function testRevisionmonthIsZeroPadded( $month ) {
                $this->assertZeroPadded( 'revisionmonth', $month );
        }
 
-       /** @dataProvider MediaWikiProvide::Months */
+       /**
+        * @dataProvider MediaWikiProvide::Months
+        * @group Database
+        */
        function testRevisionmonthoneIsUnPadded( $month ) {
                $this->assertUnPadded( 'revisionmonth1', $month );
        }
@@ -135,6 +171,7 @@ class MagicVariableTest extends MediaWikiTestCase {
        /**
         * Rough tests for {{SERVERNAME}} magic word
         * Bug 31176
+        * @group Database
         */
        function testServernameFromDifferentProtocols() {
                global $wgServer;
index ed60079..d643264 100644 (file)
@@ -20,6 +20,7 @@ class TagHookTest extends MediaWikiTestCase {
 
        /**
         * @dataProvider provideValidNames
+        * @group Database
         */
        function testTagHooks( $tag ) {
                global $wgParserConf, $wgContLang;
@@ -47,6 +48,7 @@ class TagHookTest extends MediaWikiTestCase {
 
        /**
         * @dataProvider provideValidNames
+        * @group Database
         */
        function testFunctionTagHooks( $tag ) {
                global $wgParserConf, $wgContLang;