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()'
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 testParamReplacement() {
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 testGetAll() {
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' );