X-Git-Url: https://git.heureux-cyclage.org/?a=blobdiff_plain;f=tests%2Fparser%2FParserTestRunner.php;h=e3c20a2cee233258b0c89c277da19c90c21f203b;hb=6cfb2e3d7a2b96d5041312fcec88248bb46573d7;hp=7d46e834c147c4337e87a59d7af2432a894c16b5;hpb=933a00217017bf56eb5de3e5d42e1611389f1f54;p=lhc%2Fweb%2Fwiklou.git diff --git a/tests/parser/ParserTestRunner.php b/tests/parser/ParserTestRunner.php index 7d46e834c1..e3c20a2cee 100644 --- a/tests/parser/ParserTestRunner.php +++ b/tests/parser/ParserTestRunner.php @@ -25,6 +25,7 @@ * @file * @ingroup Testing */ + use Wikimedia\Rdbms\IDatabase; use MediaWiki\MediaWikiServices; use MediaWiki\Tidy\TidyDriverBase; @@ -129,6 +130,9 @@ class ParserTestRunner { */ private $keepUploads; + /** @var Title */ + private $defaultTitle; + /** * @param TestRecorder $recorder * @param array $options @@ -165,6 +169,8 @@ class ParserTestRunner { if ( isset( $options['upload-dir'] ) ) { $this->uploadDir = $options['upload-dir']; } + + $this->defaultTitle = Title::newFromText( 'Parser test' ); } /** @@ -279,7 +285,6 @@ class ParserTestRunner { $setup['wgNoFollowDomainExceptions'] = [ 'no-nofollow.org' ]; $setup['wgExternalLinkTarget'] = false; $setup['wgLocaltimezone'] = 'UTC'; - $setup['wgHtml5'] = true; $setup['wgDisableLangConversion'] = false; $setup['wgDisableTitleConversion'] = false; @@ -840,10 +845,43 @@ class ParserTestRunner { $options->setTidy( true ); } - if ( isset( $opts['title'] ) ) { - $titleText = $opts['title']; - } else { - $titleText = 'Parser test'; + $revId = 1337; // see Parser::getRevisionId() + $title = isset( $opts['title'] ) + ? Title::newFromText( $opts['title'] ) + : $this->defaultTitle; + + if ( isset( $opts['lastsavedrevision'] ) ) { + $content = new WikitextContent( $test['input'] ); + $title = Title::newFromRow( (object)[ + 'page_id' => 187, + 'page_len' => $content->getSize(), + 'page_latest' => 1337, + 'page_namespace' => $title->getNamespace(), + 'page_title' => $title->getDBkey(), + 'page_is_redirect' => 0 + ] ); + $rev = new Revision( + [ + 'id' => $title->getLatestRevID(), + 'page' => $title->getArticleID(), + 'user' => $user, + 'content' => $content, + 'timestamp' => $this->getFakeTimestamp(), + 'title' => $title + ], + Revision::READ_LATEST, + $title + ); + $oldCallback = $options->getCurrentRevisionCallback(); + $options->setCurrentRevisionCallback( + function ( Title $t, $parser ) use ( $title, $rev, $oldCallback ) { + if ( $t->equals( $title ) ) { + return $rev; + } else { + return call_user_func( $oldCallback, $t, $parser ); + } + } + ); } if ( isset( $opts['maxincludesize'] ) ) { @@ -856,7 +894,6 @@ class ParserTestRunner { $local = isset( $opts['local'] ); $preprocessor = $opts['preprocessor'] ?? null; $parser = $this->getParser( $preprocessor ); - $title = Title::newFromText( $titleText ); if ( isset( $opts['styletag'] ) ) { // For testing the behavior of