Cleanup WikiPageTest

Change-Id: Id95b7153c42ddcd391f966b75f54e00c13d7ce5a
This commit is contained in:
addshore 2017-11-27 13:49:04 +00:00
parent 2917f7b6cd
commit 45a0481935

View file

@ -3,14 +3,13 @@
/**
* @group ContentHandler
* @group Database
* ^--- important, causes temporary tables to be used instead of the real database
* @group medium
*/
class WikiPageTest extends MediaWikiLangTestCase {
protected $pages_to_delete;
private $pagesToDelete;
function __construct( $name = null, array $data = [], $dataName = '' ) {
public function __construct( $name = null, array $data = [], $dataName = '' ) {
parent::__construct( $name, $data, $dataName );
$this->tablesUsed = array_merge(
@ -36,13 +35,11 @@ class WikiPageTest extends MediaWikiLangTestCase {
protected function setUp() {
parent::setUp();
$this->pages_to_delete = [];
LinkCache::singleton()->clear(); # avoid cached redirect status, etc
$this->pagesToDelete = [];
}
protected function tearDown() {
foreach ( $this->pages_to_delete as $p ) {
foreach ( $this->pagesToDelete as $p ) {
/* @var $p WikiPage */
try {
@ -61,7 +58,7 @@ class WikiPageTest extends MediaWikiLangTestCase {
* @param string|null $model
* @return WikiPage
*/
protected function newPage( $title, $model = null ) {
private function newPage( $title, $model = null ) {
if ( is_string( $title ) ) {
$ns = $this->getDefaultWikitextNS();
$title = Title::newFromText( $title, $ns );
@ -69,7 +66,7 @@ class WikiPageTest extends MediaWikiLangTestCase {
$p = new WikiPage( $title );
$this->pages_to_delete[] = $p;
$this->pagesToDelete[] = $p;
return $p;
}
@ -81,7 +78,7 @@ class WikiPageTest extends MediaWikiLangTestCase {
*
* @return WikiPage
*/
protected function createPage( $page, $text, $model = null ) {
private function createPage( $page, $text, $model = null ) {
if ( is_string( $page ) || $page instanceof Title ) {
$page = $this->newPage( $page, $model );
}
@ -99,7 +96,7 @@ class WikiPageTest extends MediaWikiLangTestCase {
* @covers WikiPage::doEditUpdates
*/
public function testDoEditContent() {
$page = $this->newPage( "WikiPageTest_testDoEditContent" );
$page = $this->newPage( __METHOD__ );
$title = $page->getTitle();
$content = ContentHandler::makeContent(
@ -162,7 +159,7 @@ class WikiPageTest extends MediaWikiLangTestCase {
*/
public function testDoDeleteArticle() {
$page = $this->createPage(
"WikiPageTest_testDoDeleteArticle",
__METHOD__,
"[[original text]] foo",
CONTENT_MODEL_WIKITEXT
);
@ -210,7 +207,7 @@ class WikiPageTest extends MediaWikiLangTestCase {
*/
public function testDoDeleteUpdates() {
$page = $this->createPage(
"WikiPageTest_testDoDeleteArticle",
__METHOD__,
"[[original text]] foo",
CONTENT_MODEL_WIKITEXT
);
@ -239,7 +236,7 @@ class WikiPageTest extends MediaWikiLangTestCase {
* @covers WikiPage::getRevision
*/
public function testGetRevision() {
$page = $this->newPage( "WikiPageTest_testGetRevision" );
$page = $this->newPage( __METHOD__ );
$rev = $page->getRevision();
$this->assertNull( $rev );
@ -257,7 +254,7 @@ class WikiPageTest extends MediaWikiLangTestCase {
* @covers WikiPage::getContent
*/
public function testGetContent() {
$page = $this->newPage( "WikiPageTest_testGetContent" );
$page = $this->newPage( __METHOD__ );
$content = $page->getContent();
$this->assertNull( $content );
@ -280,7 +277,7 @@ class WikiPageTest extends MediaWikiLangTestCase {
}
$page = $this->createPage(
"WikiPageTest_testGetContentModel",
__METHOD__,
"some text",
CONTENT_MODEL_JAVASCRIPT
);
@ -300,7 +297,7 @@ class WikiPageTest extends MediaWikiLangTestCase {
}
$page = $this->createPage(
"WikiPageTest_testGetContentHandler",
__METHOD__,
"some text",
CONTENT_MODEL_JAVASCRIPT
);
@ -313,7 +310,7 @@ class WikiPageTest extends MediaWikiLangTestCase {
* @covers WikiPage::exists
*/
public function testExists() {
$page = $this->newPage( "WikiPageTest_testExists" );
$page = $this->newPage( __METHOD__ );
$this->assertFalse( $page->exists() );
# -----------------
@ -331,7 +328,7 @@ class WikiPageTest extends MediaWikiLangTestCase {
$this->assertFalse( $page->exists() );
}
public static function provideHasViewableContent() {
public function provideHasViewableContent() {
return [
[ 'WikiPageTest_testHasViewableContent', false, true ],
[ 'Special:WikiPageTest_testHasViewableContent', false ],
@ -358,7 +355,7 @@ class WikiPageTest extends MediaWikiLangTestCase {
}
}
public static function provideGetRedirectTarget() {
public function provideGetRedirectTarget() {
return [
[ 'WikiPageTest_testGetRedirectTarget_1', CONTENT_MODEL_WIKITEXT, "hello world", null ],
[
@ -399,7 +396,7 @@ class WikiPageTest extends MediaWikiLangTestCase {
$this->assertEquals( !is_null( $target ), $page->isRedirect() );
}
public static function provideIsCountable() {
public function provideIsCountable() {
return [
// any
@ -549,7 +546,7 @@ class WikiPageTest extends MediaWikiLangTestCase {
);
}
public static function provideGetParserOutput() {
public function provideGetParserOutput() {
return [
[
CONTENT_MODEL_WIKITEXT,
@ -565,7 +562,7 @@ class WikiPageTest extends MediaWikiLangTestCase {
* @covers WikiPage::getParserOutput
*/
public function testGetParserOutput( $model, $text, $expectedHtml ) {
$page = $this->createPage( 'WikiPageTest_testGetParserOutput', $text, $model );
$page = $this->createPage( __METHOD__, $text, $model );
$opt = $page->makeParserOptions( 'canonical' );
$po = $page->getParserOutput( $opt );
@ -583,10 +580,7 @@ class WikiPageTest extends MediaWikiLangTestCase {
* @covers WikiPage::getParserOutput
*/
public function testGetParserOutput_nonexisting() {
static $count = 0;
$count++;
$page = new WikiPage( new Title( "WikiPageTest_testGetParserOutput_nonexisting_$count" ) );
$page = new WikiPage( Title::newFromText( __METHOD__ ) );
$opt = new ParserOptions();
$po = $page->getParserOutput( $opt );
@ -598,7 +592,7 @@ class WikiPageTest extends MediaWikiLangTestCase {
* @covers WikiPage::getParserOutput
*/
public function testGetParserOutput_badrev() {
$page = $this->createPage( 'WikiPageTest_testGetParserOutput', "dummy", CONTENT_MODEL_WIKITEXT );
$page = $this->createPage( __METHOD__, 'dummy', CONTENT_MODEL_WIKITEXT );
$opt = new ParserOptions();
$po = $page->getParserOutput( $opt, $page->getLatest() + 1234 );
@ -701,68 +695,11 @@ more stuff
$this->assertEquals( $expected, is_null( $c ) ? null : trim( $c->getNativeData() ) );
}
/* @todo FIXME: fix this!
public function testGetUndoText() {
$this->markTestSkippedIfNoDiff3();
$text = "one";
$page = $this->createPage( "WikiPageTest_testGetUndoText", $text );
$rev1 = $page->getRevision();
$text .= "\n\ntwo";
$page->doEditContent(
ContentHandler::makeContent( $text, $page->getTitle() ),
"adding section two"
);
$rev2 = $page->getRevision();
$text .= "\n\nthree";
$page->doEditContent(
ContentHandler::makeContent( $text, $page->getTitle() ),
"adding section three"
);
$rev3 = $page->getRevision();
$text .= "\n\nfour";
$page->doEditContent(
ContentHandler::makeContent( $text, $page->getTitle() ),
"adding section four"
);
$rev4 = $page->getRevision();
$text .= "\n\nfive";
$page->doEditContent(
ContentHandler::makeContent( $text, $page->getTitle() ),
"adding section five"
);
$rev5 = $page->getRevision();
$text .= "\n\nsix";
$page->doEditContent(
ContentHandler::makeContent( $text, $page->getTitle() ),
"adding section six"
);
$rev6 = $page->getRevision();
$undo6 = $page->getUndoText( $rev6 );
if ( $undo6 === false ) $this->fail( "getUndoText failed for rev6" );
$this->assertEquals( "one\n\ntwo\n\nthree\n\nfour\n\nfive", $undo6 );
$undo3 = $page->getUndoText( $rev4, $rev2 );
if ( $undo3 === false ) $this->fail( "getUndoText failed for rev4..rev2" );
$this->assertEquals( "one\n\ntwo\n\nfive", $undo3 );
$undo2 = $page->getUndoText( $rev2 );
if ( $undo2 === false ) $this->fail( "getUndoText failed for rev2" );
$this->assertEquals( "one\n\nfive", $undo2 );
}
*/
/**
* @covers WikiPage::getOldestRevision
*/
public function testGetOldestRevision() {
$page = $this->newPage( "WikiPageTest_testGetOldestRevision" );
$page = $this->newPage( __METHOD__ );
$page->doEditContent(
new WikitextContent( 'one' ),
"first edit",
@ -804,23 +741,20 @@ more stuff
* keeps failing in jenkins for some reason.
*/
public function broken_testDoRollback() {
$admin = new User();
$admin->setName( "Admin" );
$admin = $this->getTestSysop()->getUser();
$text = "one";
$page = $this->newPage( "WikiPageTest_testDoRollback" );
$page = $this->newPage( __METHOD__ );
$page->doEditContent( ContentHandler::makeContent( $text, $page->getTitle() ),
"section one", EDIT_NEW, false, $admin );
$user1 = new User();
$user1->setName( "127.0.1.11" );
$user1 = $this->getTestUser()->getUser();
$text .= "\n\ntwo";
$page = new WikiPage( $page->getTitle() );
$page->doEditContent( ContentHandler::makeContent( $text, $page->getTitle() ),
"adding section two", 0, false, $user1 );
$user2 = new User();
$user2->setName( "127.0.2.13" );
$user2 = $this->getTestUser()->getUser();
$text .= "\n\nthree";
$page = new WikiPage( $page->getTitle() );
$page->doEditContent( ContentHandler::makeContent( $text, $page->getTitle() ),
@ -843,8 +777,6 @@ more stuff
$this->assertEquals( 'Admin', $rev1->getUserText() );
# now, try the actual rollback
$admin->addToDatabase();
$admin->addGroup( "sysop" ); # XXX: make the test user a sysop...
$token = $admin->getEditToken(
[ $page->getTitle()->getPrefixedText(), $user2->getName() ],
null
@ -874,12 +806,10 @@ more stuff
* @covers WikiPage::doRollback
*/
public function testDoRollback() {
$admin = new User();
$admin->setName( "Admin" );
$admin->addToDatabase();
$admin = $this->getTestSysop()->getUser();
$text = "one";
$page = $this->newPage( "WikiPageTest_testDoRollback" );
$page = $this->newPage( __METHOD__ );
$page->doEditContent(
ContentHandler::makeContent( $text, $page->getTitle(), CONTENT_MODEL_WIKITEXT ),
"section one",
@ -889,8 +819,7 @@ more stuff
);
$rev1 = $page->getRevision();
$user1 = new User();
$user1->setName( "127.0.1.11" );
$user1 = $this->getTestUser()->getUser();
$text .= "\n\ntwo";
$page = new WikiPage( $page->getTitle() );
$page->doEditContent(
@ -902,7 +831,6 @@ more stuff
);
# now, try the rollback
$admin->addGroup( "sysop" ); # XXX: make the test user a sysop...
$token = $admin->getEditToken( 'rollback' );
$errors = $page->doRollback(
$user1->getName(),
@ -928,13 +856,10 @@ more stuff
* @covers WikiPage::doRollback
*/
public function testDoRollbackFailureSameContent() {
$admin = new User();
$admin->setName( "Admin" );
$admin->addToDatabase();
$admin->addGroup( "sysop" ); # XXX: make the test user a sysop...
$admin = $this->getTestSysop()->getUser();
$text = "one";
$page = $this->newPage( "WikiPageTest_testDoRollback" );
$page = $this->newPage( __METHOD__ );
$page->doEditContent(
ContentHandler::makeContent( $text, $page->getTitle(), CONTENT_MODEL_WIKITEXT ),
"section one",
@ -944,10 +869,7 @@ more stuff
);
$rev1 = $page->getRevision();
$user1 = new User();
$user1->setName( "127.0.1.11" );
$user1->addToDatabase();
$user1->addGroup( "sysop" ); # XXX: make the test user a sysop...
$user1 = $this->getTestUser( [ 'sysop' ] )->getUser();
$text .= "\n\ntwo";
$page = new WikiPage( $page->getTitle() );
$page->doEditContent(
@ -984,8 +906,18 @@ more stuff
$admin
);
$this->assertEquals( [ [ 'alreadyrolled', 'WikiPageTest testDoRollback',
'127.0.1.11', 'Admin' ] ], $errors, "Rollback not failed" );
$this->assertEquals(
[
[
'alreadyrolled',
__METHOD__,
$user1->getName(),
$admin->getName(),
],
],
$errors,
"Rollback not failed"
);
$page = new WikiPage( $page->getTitle() );
$this->assertEquals( $rev1->getSha1(), $page->getRevision()->getSha1(),
@ -1047,7 +979,7 @@ more stuff
}
}
public static function provideGetAutoDeleteReason() {
public function provideGetAutoDeleteReason() {
return [
[
[],
@ -1152,7 +1084,7 @@ more stuff
$page->doDeleteArticle( "done" );
}
public static function providePreSaveTransform() {
public function providePreSaveTransform() {
return [
[ 'hello this is ~~~',
"hello this is [[Special:Contributions/127.0.0.1|127.0.0.1]]",
@ -1182,20 +1114,21 @@ more stuff
/**
* @dataProvider provideCommentMigrationOnDeletion
* @param int $wstage
* @param int $rstage
*
* @param int $writeStage
* @param int $readStage
*/
public function testCommentMigrationOnDeletion( $wstage, $rstage ) {
$this->setMwGlobals( 'wgCommentTableSchemaMigrationStage', $wstage );
public function testCommentMigrationOnDeletion( $writeStage, $readStage ) {
$this->setMwGlobals( 'wgCommentTableSchemaMigrationStage', $writeStage );
$dbr = wfGetDB( DB_REPLICA );
$page = $this->createPage(
"WikiPageTest_testCommentMigrationOnDeletion",
__METHOD__,
"foo",
CONTENT_MODEL_WIKITEXT
);
$revid = $page->getLatest();
if ( $wstage > MIGRATION_OLD ) {
if ( $writeStage > MIGRATION_OLD ) {
$comment_id = $dbr->selectField(
'revision_comment_temp',
'revcomment_comment_id',
@ -1204,11 +1137,11 @@ more stuff
);
}
$this->setMwGlobals( 'wgCommentTableSchemaMigrationStage', $rstage );
$this->setMwGlobals( 'wgCommentTableSchemaMigrationStage', $readStage );
$page->doDeleteArticle( "testing deletion" );
if ( $rstage > MIGRATION_OLD ) {
if ( $readStage > MIGRATION_OLD ) {
// Didn't leave behind any 'revision_comment_temp' rows
$n = $dbr->selectField(
'revision_comment_temp', 'COUNT(*)', [ 'revcomment_rev' => $revid ], __METHOD__
@ -1222,7 +1155,7 @@ more stuff
[ 'ar_rev_id' => $revid ],
__METHOD__
);
if ( $wstage > MIGRATION_OLD ) {
if ( $writeStage > MIGRATION_OLD ) {
$this->assertSame( $comment_id, $ar_comment_id );
} else {
$this->assertNotEquals( 0, $ar_comment_id );
@ -1230,7 +1163,7 @@ more stuff
}
// Copied rev_comment, if applicable
if ( $rstage <= MIGRATION_WRITE_BOTH && $wstage <= MIGRATION_WRITE_BOTH ) {
if ( $readStage <= MIGRATION_WRITE_BOTH && $writeStage <= MIGRATION_WRITE_BOTH ) {
$ar_comment = $dbr->selectField(
'archive',
'ar_comment',
@ -1241,7 +1174,7 @@ more stuff
}
}
public static function provideCommentMigrationOnDeletion() {
public function provideCommentMigrationOnDeletion() {
return [
[ MIGRATION_OLD, MIGRATION_OLD ],
[ MIGRATION_OLD, MIGRATION_WRITE_BOTH ],