3 function getSiteParams( $conf, $wiki ) {
6 foreach ( $conf->suffixes
as $suffix ) {
7 if ( substr( $wiki, -strlen( $suffix ) ) == $suffix ) {
9 $lang = substr( $wiki, 0, -strlen( $suffix ) );
22 'tags' => array( 'tag' ),
26 class SiteConfigurationTest
extends MediaWikiTestCase
{
29 * @var SiteConfiguration
33 protected function setUp() {
36 $this->mConf
= new SiteConfiguration
;
38 $this->mConf
->suffixes
= array( 'wikipedia' => 'wiki' );
39 $this->mConf
->wikis
= array( 'enwiki', 'dewiki', 'frwiki' );
40 $this->mConf
->settings
= array(
50 'default' => 'default',
56 'default' => '$lang $site $wiki',
85 'default' => 'default',
99 $GLOBALS['global'] = array( 'global' => 'global' );
103 * @covers SiteConfiguration::siteFromDB
105 public function testSiteFromDb() {
107 array( 'wikipedia', 'en' ),
108 $this->mConf
->siteFromDB( 'enwiki' ),
112 array( 'wikipedia', '' ),
113 $this->mConf
->siteFromDB( 'wiki' ),
114 'siteFromDB() on a suffix'
118 $this->mConf
->siteFromDB( 'wikien' ),
119 'siteFromDB() on a non-existing wiki'
122 $this->mConf
->suffixes
= array( 'wiki', '' );
124 array( '', 'wikien' ),
125 $this->mConf
->siteFromDB( 'wikien' ),
126 'siteFromDB() on a non-existing wiki (2)'
131 * @covers SiteConfiguration::getLocalDatabases
133 public function testGetLocalDatabases() {
135 array( 'enwiki', 'dewiki', 'frwiki' ),
136 $this->mConf
->getLocalDatabases(),
137 'getLocalDatabases()'
142 * @covers SiteConfiguration::get
144 public function testGetConfVariables() {
147 $this->mConf
->get( 'simple', 'enwiki', 'wiki' ),
148 'get(): simple setting on an existing wiki'
152 $this->mConf
->get( 'simple', 'dewiki', 'wiki' ),
153 'get(): simple setting on an existing wiki (2)'
157 $this->mConf
->get( 'simple', 'frwiki', 'wiki' ),
158 'get(): simple setting on an existing wiki (3)'
162 $this->mConf
->get( 'simple', 'wiki', 'wiki' ),
163 'get(): simple setting on an suffix'
167 $this->mConf
->get( 'simple', 'eswiki', 'wiki' ),
168 'get(): simple setting on an non-existing wiki'
173 $this->mConf
->get( 'fallback', 'enwiki', 'wiki' ),
174 'get(): fallback setting on an existing wiki'
178 $this->mConf
->get( 'fallback', 'dewiki', 'wiki', array(), array( 'tag' ) ),
179 'get(): fallback setting on an existing wiki (with wiki tag)'
183 $this->mConf
->get( 'fallback', 'wiki', 'wiki' ),
184 'get(): fallback setting on an suffix'
188 $this->mConf
->get( 'fallback', 'wiki', 'wiki', array(), array( 'tag' ) ),
189 'get(): fallback setting on an suffix (with wiki tag)'
193 $this->mConf
->get( 'fallback', 'eswiki', 'wiki' ),
194 'get(): fallback setting on an non-existing wiki'
198 $this->mConf
->get( 'fallback', 'eswiki', 'wiki', array(), array( 'tag' ) ),
199 'get(): fallback setting on an non-existing wiki (with wiki tag)'
202 $common = array( 'wiki' => 'wiki', 'default' => 'default' );
203 $commonTag = array( 'tag' => 'tag', 'wiki' => 'wiki', 'default' => 'default' );
205 array( 'enwiki' => 'enwiki' ) +
$common,
206 $this->mConf
->get( 'merge', 'enwiki', 'wiki' ),
207 'get(): merging setting on an existing wiki'
210 array( 'enwiki' => 'enwiki' ) +
$commonTag,
211 $this->mConf
->get( 'merge', 'enwiki', 'wiki', array(), array( 'tag' ) ),
212 'get(): merging setting on an existing wiki (with tag)'
215 array( 'dewiki' => 'dewiki' ) +
$common,
216 $this->mConf
->get( 'merge', 'dewiki', 'wiki' ),
217 'get(): merging setting on an existing wiki (2)'
220 array( 'dewiki' => 'dewiki' ) +
$commonTag,
221 $this->mConf
->get( 'merge', 'dewiki', 'wiki', array(), array( 'tag' ) ),
222 'get(): merging setting on an existing wiki (2) (with tag)'
225 array( 'frwiki' => 'frwiki' ) +
$common,
226 $this->mConf
->get( 'merge', 'frwiki', 'wiki' ),
227 'get(): merging setting on an existing wiki (3)'
230 array( 'frwiki' => 'frwiki' ) +
$commonTag,
231 $this->mConf
->get( 'merge', 'frwiki', 'wiki', array(), array( 'tag' ) ),
232 'get(): merging setting on an existing wiki (3) (with tag)'
235 array( 'wiki' => 'wiki' ) +
$common,
236 $this->mConf
->get( 'merge', 'wiki', 'wiki' ),
237 'get(): merging setting on an suffix'
240 array( 'wiki' => 'wiki' ) +
$commonTag,
241 $this->mConf
->get( 'merge', 'wiki', 'wiki', array(), array( 'tag' ) ),
242 'get(): merging setting on an suffix (with tag)'
246 $this->mConf
->get( 'merge', 'eswiki', 'wiki' ),
247 'get(): merging setting on an non-existing wiki'
251 $this->mConf
->get( 'merge', 'eswiki', 'wiki', array(), array( 'tag' ) ),
252 'get(): merging setting on an non-existing wiki (with tag)'
257 * @covers SiteConfiguration::siteFromDB
259 public function testSiteFromDbWithCallback() {
260 $this->mConf
->siteParamsCallback
= 'getSiteParams';
263 array( 'wiki', 'en' ),
264 $this->mConf
->siteFromDB( 'enwiki' ),
265 'siteFromDB() with callback'
269 $this->mConf
->siteFromDB( 'wiki' ),
270 'siteFromDB() with callback on a suffix'
274 $this->mConf
->siteFromDB( 'wikien' ),
275 'siteFromDB() with callback on a non-existing wiki'
280 * @covers SiteConfiguration::get
282 public function testParameterReplacement() {
283 $this->mConf
->siteParamsCallback
= 'getSiteParams';
287 $this->mConf
->get( 'params', 'enwiki', 'wiki' ),
288 'get(): parameter replacement on an existing wiki'
292 $this->mConf
->get( 'params', 'dewiki', 'wiki' ),
293 'get(): parameter replacement on an existing wiki (2)'
297 $this->mConf
->get( 'params', 'frwiki', 'wiki' ),
298 'get(): parameter replacement on an existing wiki (3)'
302 $this->mConf
->get( 'params', 'wiki', 'wiki' ),
303 'get(): parameter replacement on an suffix'
307 $this->mConf
->get( 'params', 'eswiki', 'wiki' ),
308 'get(): parameter replacement on an non-existing wiki'
313 * @covers SiteConfiguration::getAll
315 public function testGetAllGlobals() {
316 $this->mConf
->siteParamsCallback
= 'getSiteParams';
319 'simple' => 'enwiki',
321 'params' => 'en wiki enwiki',
322 'global' => array( 'enwiki' => 'enwiki' ) +
$GLOBALS['global'],
323 'merge' => array( 'enwiki' => 'enwiki', 'tag' => 'tag', 'wiki' => 'wiki', 'default' => 'default' ),
325 $this->assertEquals( $getall, $this->mConf
->getAll( 'enwiki' ), 'getAll()' );
327 $this->mConf
->extractAllGlobals( 'enwiki', 'wiki' );
329 $this->assertEquals( $getall['simple'], $GLOBALS['simple'], 'extractAllGlobals(): simple setting' );
330 $this->assertEquals( $getall['fallback'], $GLOBALS['fallback'], 'extractAllGlobals(): fallback setting' );
331 $this->assertEquals( $getall['params'], $GLOBALS['params'], 'extractAllGlobals(): parameter replacement' );
332 $this->assertEquals( $getall['global'], $GLOBALS['global'], 'extractAllGlobals(): merging with global' );
333 $this->assertEquals( $getall['merge'], $GLOBALS['merge'], 'extractAllGlobals(): merging setting' );