Page MenuHomeWickedGov Phorge

UnitTestsHookHandler.php
No OneTemporary

Size
2 KB
Referenced Files
None
Subscribers
None

UnitTestsHookHandler.php

<?php
/**
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along
* with this program; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
* http://www.gnu.org/copyleft/gpl.html
*
* @file
*/
namespace MediaWiki\Extension\CentralAuth\Hooks\Handlers;
use MediaWiki\Hook\UnitTestsAfterDatabaseSetupHook;
use MediaWiki\Hook\UnitTestsBeforeDatabaseTeardownHook;
use Wikimedia\Rdbms\ILoadBalancer;
use Wikimedia\Rdbms\IMaintainableDatabase;
class UnitTestsHookHandler implements
UnitTestsAfterDatabaseSetupHook,
UnitTestsBeforeDatabaseTeardownHook
{
public const CENTRALAUTH_TABLES = [
'global_edit_count',
'global_group_permissions',
'global_group_restrictions',
'global_user_autocreate_serial',
'global_user_groups',
'globalnames',
'globaluser',
'localnames',
'localuser',
'wikiset',
'renameuser_status',
'renameuser_queue',
'users_to_rename',
];
private ILoadBalancer $loadBalancer;
public function __construct( ILoadBalancer $loadBalancer ) {
$this->loadBalancer = $loadBalancer;
}
/**
* UnitTestsBeforeDatabaseTeardown hook handler
* Cleans up tables created by onUnitTestsAfterDatabaseSetup() above
*/
public function onUnitTestsBeforeDatabaseTeardown() {
$dbw = $this->loadBalancer->getMaintenanceConnectionRef( DB_PRIMARY );
foreach ( self::CENTRALAUTH_TABLES as $table ) {
$dbw->dropTable( $table );
}
}
/**
* UnitTestsAfterDatabaseSetup hook handler
*
* Setup the centralauth tables in the current DB, so we don't have
* to worry about rights on another database. The first time it's called
* we have to set the DB prefix ourselves, and reset it back to the original
* so that CloneDatabase will work. On subsequent runs, the prefix is already
* set up for us.
*
* @param IMaintainableDatabase $db
* @param string $prefix
*/
public function onUnitTestsAfterDatabaseSetup( $db, $prefix ) {
$originalPrefix = $db->tablePrefix();
$db->tablePrefix( $prefix );
if ( !$db->tableExists( 'globaluser', __METHOD__ ) ) {
$engine = $db->getType();
$db->sourceFile( __DIR__ . "/../../../schema/$engine/tables-generated.sql" );
}
$db->tablePrefix( $originalPrefix );
}
}

File Metadata

Mime Type
text/x-php
Expires
Aug 18 2026, 11:15 (5 w, 4 d ago)
Storage Engine
local-disk
Storage Format
Raw Data
Storage Handle
77/ee/6fbc346b9b512c7bad2dd4f48e55
Default Alt Text
UnitTestsHookHandler.php (2 KB)

Event Timeline