ApiCoreThankIntegrationTest: Fix intermittent failures

Every time the setup function runs, it chooses a random page name with
random content. If it chooses a page name + content combination that was
used to set up a different test in the same run, the edit it makes will
be a null edit, the revid will be null, and the test will crash.

There are 100 possible page names and 100 possible page texts, so 10k
possibilities total, and the setup function appears to be called 10 times,
so the probability of a collision would have been
(10 choose 2)/10000 = 0.0045 = 0.45%, or one in every 222 times.

Bug: T151878
Change-Id: I800ee8512c2ad171ba793bea343f456653f9a16d
This commit is contained in:
Roan Kattouw 2018-03-19 17:54:51 -07:00
parent 8f6eff3aea
commit 5f9f913fb6

View file

@ -29,7 +29,16 @@ class ApiCoreThankIntegrationTest extends ApiTestCase {
// You can't thank yourself, kind of hacky but just use this other user // You can't thank yourself, kind of hacky but just use this other user
$this->doLogin( 'uploader' ); $this->doLogin( 'uploader' );
$result = $this->editPage( __CLASS__ . rand( 0, 100 ), __CLASS__ . rand( 0, 100 ) );
$pageName = __CLASS__;
$content = __CLASS__;
$pageTitle = Title::newFromText( $pageName );
// If the page already exists, delete it, otherwise our edit will not result in a new revision
if ( $pageTitle->exists() ) {
$wikiPage = WikiPage::factory( $pageTitle );
$wikiPage->doDeleteArticleReal( '' );
}
$result = $this->editPage( $pageName, $content );
/** @var Status $result */ /** @var Status $result */
$result = $result->getValue(); $result = $result->getValue();
/** @var Revision $revision */ /** @var Revision $revision */