// Set up null lock managers
$setup['wgLockManagers'] = [ [
'name' => 'fsLockManager',
- 'class' => 'NullLockManager',
+ 'class' => NullLockManager::class,
], [
'name' => 'nullLockManager',
- 'class' => 'NullLockManager',
+ 'class' => NullLockManager::class,
] ];
$reset = function () {
LockManagerGroup::destroySingletons();
return new RepoGroup(
[
- 'class' => 'MockLocalRepo',
+ 'class' => MockLocalRepo::class,
'name' => 'local',
'url' => 'http://example.com/images',
'hashLevels' => 2,
$options = ParserOptions::newFromContext( $context );
$options->setTimestamp( $this->getFakeTimestamp() );
- if ( !isset( $opts['wrap'] ) ) {
- $options->setWrapOutputClass( false );
- }
-
if ( isset( $opts['tidy'] ) ) {
if ( !$this->tidySupport->isEnabled() ) {
$this->recorder->skipped( $test, 'tidy extension is not installed' );
$parser = $this->getParser( $preprocessor );
$title = Title::newFromText( $titleText );
+ if ( isset( $opts['styletag'] ) ) {
+ // For testing the behavior of <style> (including those deduplicated
+ // into <link> tags), add tag hooks to allow them to be generated.
+ $parser->setHook( 'style', function ( $content, $attributes, $parser ) {
+ $marker = Parser::MARKER_PREFIX . '-style-' . md5( $content ) . Parser::MARKER_SUFFIX;
+ $parser->mStripState->addNoWiki( $marker, $content );
+ return Html::inlineStyle( $marker, 'all', $attributes );
+ } );
+ $parser->setHook( 'link', function ( $content, $attributes, $parser ) {
+ return Html::element( 'link', $attributes );
+ } );
+ }
+
if ( isset( $opts['pst'] ) ) {
$out = $parser->preSaveTransform( $test['input'], $title, $user, $options );
$output = $parser->getOutput();
} else {
$output = $parser->parse( $test['input'], $title, $options, true, true, 1337 );
$out = $output->getText( [
- 'allowTOC' => !isset( $opts['notoc'] )
+ 'allowTOC' => !isset( $opts['notoc'] ),
+ 'unwrap' => !isset( $opts['wrap'] ),
] );
if ( isset( $opts['tidy'] ) ) {
$out = preg_replace( '/\s+$/', '', $out );
if ( isset( $output ) && isset( $opts['showflags'] ) ) {
$actualFlags = array_keys( TestingAccessWrapper::newFromObject( $output )->mFlags );
sort( $actualFlags );
- $out .= "\nflags=" . join( ', ', $actualFlags );
+ $out .= "\nflags=" . implode( ', ', $actualFlags );
}
ScopedCallback::consume( $teardownGuard );
* @return array
*/
private function listTables() {
- global $wgCommentTableSchemaMigrationStage;
+ global $wgCommentTableSchemaMigrationStage, $wgActorTableSchemaMigrationStage;
$tables = [ 'user', 'user_properties', 'user_former_groups', 'page', 'page_restrictions',
'protected_titles', 'revision', 'ip_changes', 'text', 'pagelinks', 'imagelinks',
$tables[] = 'image_comment_temp';
}
+ if ( $wgActorTableSchemaMigrationStage >= MIGRATION_WRITE_BOTH ) {
+ // The new tables for actors are in use
+ $tables[] = 'actor';
+ $tables[] = 'revision_actor_temp';
+ }
+
if ( in_array( $this->db->getType(), [ 'mysql', 'sqlite', 'oracle' ] ) ) {
array_push( $tables, 'searchindex' );
}