1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78
|
<?php
use MediaWiki\FileBackend\FileBackendGroup;
use MediaWiki\FileBackend\LockManager\LockManagerGroupFactory;
use MediaWiki\MainConfigNames;
use MediaWiki\Tests\Unit\DummyServicesTrait;
use MediaWiki\WikiMap\WikiMap;
use Wikimedia\ObjectCache\EmptyBagOStuff;
/**
* @coversDefaultClass \MediaWiki\FileBackend\FileBackendGroup
*/
class FileBackendGroupIntegrationTest extends MediaWikiIntegrationTestCase {
use FileBackendGroupTestTrait;
use DummyServicesTrait;
private static function getWikiID() {
return WikiMap::getCurrentWikiId();
}
private function getLockManagerGroupFactory( $domain ): LockManagerGroupFactory {
return $this->getServiceContainer()->getLockManagerGroupFactory();
}
private function newObj( array $options = [] ): FileBackendGroup {
$globals = [
MainConfigNames::DirectoryMode,
MainConfigNames::FileBackends,
MainConfigNames::ForeignFileRepos,
MainConfigNames::LocalFileRepo,
];
foreach ( $globals as $global ) {
$this->overrideConfigValue(
$global, $options[$global] ?? self::getDefaultOptions()[$global] );
}
$serviceMembers = [
'readOnlyMode' => 'ReadOnlyMode',
'srvCache' => 'LocalServerObjectCache',
'wanCache' => 'MainWANObjectCache',
'mimeAnalyzer' => 'MimeAnalyzer',
'lmgFactory' => 'LockManagerGroupFactory',
'tmpFileFactory' => 'TempFSFileFactory',
];
foreach ( $serviceMembers as $key => $name ) {
if ( isset( $options[$key] ) ) {
if ( $key === 'readOnlyMode' ) {
$this->setService( $name, $this->getDummyReadOnlyMode( $options[$key] ) );
} else {
$this->setService( $name, $options[$key] );
}
}
}
$this->assertSame( [],
array_diff( array_keys( $options ), $globals, array_keys( $serviceMembers ) ) );
$services = $this->getServiceContainer();
$obj = $services->getFileBackendGroup();
foreach ( $serviceMembers as $key => $name ) {
if ( $key === 'readOnlyMode' || $key === 'mimeAnalyzer' ) {
continue;
}
$this->$key = $services->getService( $name );
if ( $key === 'srvCache' && $this->$key instanceof EmptyBagOStuff ) {
// ServiceWiring will have created its own HashBagOStuff that we don't have a
// reference to. Set null instead.
$this->srvCache = null;
}
}
return $obj;
}
}
|