$this->assertEquals(
false,
$title->exists(),
- 'exists() should rely on link cache unless GAID_FOR_UPDATE is used'
+ 'exists() should rely on link cache unless READ_LATEST is used'
);
$this->assertEquals(
true,
- $title->exists( Title::GAID_FOR_UPDATE ),
- 'exists() should re-query database when GAID_FOR_UPDATE is used'
+ $title->exists( Title::READ_LATEST ),
+ 'exists() should re-query database when READ_LATEST is used'
);
}
return [
[ Title::makeTitle( NS_SPECIAL, 'Test' ) ],
[ Title::makeTitle( NS_MEDIA, 'Test' ) ],
- [ Title::makeTitle( NS_MAIN, '', 'Kittens' ) ],
- [ Title::makeTitle( NS_MAIN, 'Kittens', '', 'acme' ) ],
+ ];
+ }
+
+ public static function provideGetTalkPage_broken() {
+ // These cases *should* be bad, but are not treated as bad, for backwards compatibility.
+ // See discussion on T227817.
+ return [
+ [
+ Title::makeTitle( NS_MAIN, '', 'Kittens' ),
+ Title::makeTitle( NS_TALK, '' ), // Section is lost!
+ false,
+ ],
+ [
+ Title::makeTitle( NS_MAIN, 'Kittens', '', 'acme' ),
+ Title::makeTitle( NS_TALK, 'Kittens', '' ), // Interwiki prefix is lost!
+ true,
+ ],
];
}
$title->getTalkPage();
}
+ /**
+ * @dataProvider provideGetTalkPage_broken
+ * @covers Title::getTalkPageIfDefined
+ */
+ public function testGetTalkPage_broken( Title $title, Title $expected, $valid ) {
+ $errorLevel = error_reporting( E_ERROR );
+
+ // NOTE: Eventually we want to throw in this case. But while there is still code that
+ // calls this method without checking, we want to avoid fatal errors.
+ // See discussion on T227817.
+ $result = $title->getTalkPage();
+ $this->assertTrue( $expected->equals( $result ) );
+ $this->assertSame( $valid, $result->isValid() );
+
+ error_reporting( $errorLevel );
+ }
+
/**
* @dataProvider provideGetTalkPage_good
* @covers Title::getTalkPageIfDefined