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 ) );
21
'tags' => array( 'tag' ),
25
class SiteConfigurationTest extends MediaWikiTestCase {
29
$this->mConf = new SiteConfiguration;
31
$this->mConf->suffixes = array( 'wiki' );
32
$this->mConf->wikis = array( 'enwiki', 'dewiki', 'frwiki' );
33
$this->mConf->settings = array(
43
'default' => 'default',
49
'default' => '$lang $site $wiki',
78
'default' => 'default',
92
$GLOBALS['global'] = array( 'global' => 'global' );
96
function testSiteFromDb() {
98
array( 'wikipedia', 'en' ),
99
$this->mConf->siteFromDB( 'enwiki' ),
103
array( 'wikipedia', '' ),
104
$this->mConf->siteFromDB( 'wiki' ),
105
'siteFromDB() on a suffix'
109
$this->mConf->siteFromDB( 'wikien' ),
110
'siteFromDB() on a non-existing wiki'
113
$this->mConf->suffixes = array( 'wiki', '' );
115
array( '', 'wikien' ),
116
$this->mConf->siteFromDB( 'wikien' ),
117
'siteFromDB() on a non-existing wiki (2)'
121
function testGetLocalDatabases() {
123
array( 'enwiki', 'dewiki', 'frwiki' ),
124
$this->mConf->getLocalDatabases(),
125
'getLocalDatabases()'
129
function testGetConfVariables() {
132
$this->mConf->get( 'simple', 'enwiki', 'wiki' ),
133
'get(): simple setting on an existing wiki'
137
$this->mConf->get( 'simple', 'dewiki', 'wiki' ),
138
'get(): simple setting on an existing wiki (2)'
142
$this->mConf->get( 'simple', 'frwiki', 'wiki' ),
143
'get(): simple setting on an existing wiki (3)'
147
$this->mConf->get( 'simple', 'wiki', 'wiki' ),
148
'get(): simple setting on an suffix'
152
$this->mConf->get( 'simple', 'eswiki', 'wiki' ),
153
'get(): simple setting on an non-existing wiki'
158
$this->mConf->get( 'fallback', 'enwiki', 'wiki' ),
159
'get(): fallback setting on an existing wiki'
163
$this->mConf->get( 'fallback', 'dewiki', 'wiki', array(), array( 'tag' ) ),
164
'get(): fallback setting on an existing wiki (with wiki tag)'
168
$this->mConf->get( 'fallback', 'wiki', 'wiki' ),
169
'get(): fallback setting on an suffix'
173
$this->mConf->get( 'fallback', 'wiki', 'wiki', array(), array( 'tag' ) ),
174
'get(): fallback setting on an suffix (with wiki tag)'
178
$this->mConf->get( 'fallback', 'eswiki', 'wiki' ),
179
'get(): fallback setting on an non-existing wiki'
183
$this->mConf->get( 'fallback', 'eswiki', 'wiki', array(), array( 'tag' ) ),
184
'get(): fallback setting on an non-existing wiki (with wiki tag)'
187
$common = array( 'wiki' => 'wiki', 'default' => 'default' );
188
$commonTag = array( 'tag' => 'tag', 'wiki' => 'wiki', 'default' => 'default' );
190
array( 'enwiki' => 'enwiki' ) + $common,
191
$this->mConf->get( 'merge', 'enwiki', 'wiki' ),
192
'get(): merging setting on an existing wiki'
195
array( 'enwiki' => 'enwiki' ) + $commonTag,
196
$this->mConf->get( 'merge', 'enwiki', 'wiki', array(), array( 'tag' ) ),
197
'get(): merging setting on an existing wiki (with tag)'
200
array( 'dewiki' => 'dewiki' ) + $common,
201
$this->mConf->get( 'merge', 'dewiki', 'wiki' ),
202
'get(): merging setting on an existing wiki (2)'
205
array( 'dewiki' => 'dewiki' ) + $commonTag,
206
$this->mConf->get( 'merge', 'dewiki', 'wiki', array(), array( 'tag' ) ),
207
'get(): merging setting on an existing wiki (2) (with tag)'
210
array( 'frwiki' => 'frwiki' ) + $common,
211
$this->mConf->get( 'merge', 'frwiki', 'wiki' ),
212
'get(): merging setting on an existing wiki (3)'
215
array( 'frwiki' => 'frwiki' ) + $commonTag,
216
$this->mConf->get( 'merge', 'frwiki', 'wiki', array(), array( 'tag' ) ),
217
'get(): merging setting on an existing wiki (3) (with tag)'
220
array( 'wiki' => 'wiki' ) + $common,
221
$this->mConf->get( 'merge', 'wiki', 'wiki' ),
222
'get(): merging setting on an suffix'
225
array( 'wiki' => 'wiki' ) + $commonTag,
226
$this->mConf->get( 'merge', 'wiki', 'wiki', array(), array( 'tag' ) ),
227
'get(): merging setting on an suffix (with tag)'
231
$this->mConf->get( 'merge', 'eswiki', 'wiki' ),
232
'get(): merging setting on an non-existing wiki'
236
$this->mConf->get( 'merge', 'eswiki', 'wiki', array(), array( 'tag' ) ),
237
'get(): merging setting on an non-existing wiki (with tag)'
241
function testSiteFromDbWithCallback() {
242
$this->mConf->siteParamsCallback = 'getSiteParams';
245
array( 'wiki', 'en' ),
246
$this->mConf->siteFromDB( 'enwiki' ),
247
'siteFromDB() with callback'
251
$this->mConf->siteFromDB( 'wiki' ),
252
'siteFromDB() with callback on a suffix'
256
$this->mConf->siteFromDB( 'wikien' ),
257
'siteFromDB() with callback on a non-existing wiki'
261
function testParameterReplacement() {
262
$this->mConf->siteParamsCallback = 'getSiteParams';
266
$this->mConf->get( 'params', 'enwiki', 'wiki' ),
267
'get(): parameter replacement on an existing wiki'
271
$this->mConf->get( 'params', 'dewiki', 'wiki' ),
272
'get(): parameter replacement on an existing wiki (2)'
276
$this->mConf->get( 'params', 'frwiki', 'wiki' ),
277
'get(): parameter replacement on an existing wiki (3)'
281
$this->mConf->get( 'params', 'wiki', 'wiki' ),
282
'get(): parameter replacement on an suffix'
286
$this->mConf->get( 'params', 'eswiki', 'wiki' ),
287
'get(): parameter replacement on an non-existing wiki'
291
function testGetAllGlobals() {
292
$this->mConf->siteParamsCallback = 'getSiteParams';
295
'simple' => 'enwiki',
297
'params' => 'en wiki enwiki',
298
'global' => array( 'enwiki' => 'enwiki' ) + $GLOBALS['global'],
299
'merge' => array( 'enwiki' => 'enwiki', 'tag' => 'tag', 'wiki' => 'wiki', 'default' => 'default' ),
301
$this->assertEquals( $getall, $this->mConf->getAll( 'enwiki' ), 'getAll()' );
303
$this->mConf->extractAllGlobals( 'enwiki', 'wiki' );
305
$this->assertEquals( $getall['simple'], $GLOBALS['simple'], 'extractAllGlobals(): simple setting' );
306
$this->assertEquals( $getall['fallback'], $GLOBALS['fallback'], 'extractAllGlobals(): fallback setting' );
307
$this->assertEquals( $getall['params'], $GLOBALS['params'], 'extractAllGlobals(): parameter replacement' );
308
$this->assertEquals( $getall['global'], $GLOBALS['global'], 'extractAllGlobals(): merging with global' );
309
$this->assertEquals( $getall['merge'], $GLOBALS['merge'], 'extractAllGlobals(): merging setting' );