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
{
28 protected function setUp() {
31 $this->mConf
= new SiteConfiguration
;
33 $this->mConf
->suffixes
= array( 'wiki' );
34 $this->mConf
->wikis
= array( 'enwiki', 'dewiki', 'frwiki' );
35 $this->mConf
->settings
= array(
45 'default' => 'default',
51 'default' => '$lang $site $wiki',
80 'default' => 'default',
94 $GLOBALS['global'] = array( 'global' => 'global' );
97 function testSiteFromDb() {
99 array( 'wikipedia', 'en' ),
100 $this->mConf
->siteFromDB( 'enwiki' ),
104 array( 'wikipedia', '' ),
105 $this->mConf
->siteFromDB( 'wiki' ),
106 'siteFromDB() on a suffix'
110 $this->mConf
->siteFromDB( 'wikien' ),
111 'siteFromDB() on a non-existing wiki'
114 $this->mConf
->suffixes
= array( 'wiki', '' );
116 array( '', 'wikien' ),
117 $this->mConf
->siteFromDB( 'wikien' ),
118 'siteFromDB() on a non-existing wiki (2)'
122 function testGetLocalDatabases() {
124 array( 'enwiki', 'dewiki', 'frwiki' ),
125 $this->mConf
->getLocalDatabases(),
126 'getLocalDatabases()'
130 function testGetConfVariables() {
133 $this->mConf
->get( 'simple', 'enwiki', 'wiki' ),
134 'get(): simple setting on an existing wiki'
138 $this->mConf
->get( 'simple', 'dewiki', 'wiki' ),
139 'get(): simple setting on an existing wiki (2)'
143 $this->mConf
->get( 'simple', 'frwiki', 'wiki' ),
144 'get(): simple setting on an existing wiki (3)'
148 $this->mConf
->get( 'simple', 'wiki', 'wiki' ),
149 'get(): simple setting on an suffix'
153 $this->mConf
->get( 'simple', 'eswiki', 'wiki' ),
154 'get(): simple setting on an non-existing wiki'
159 $this->mConf
->get( 'fallback', 'enwiki', 'wiki' ),
160 'get(): fallback setting on an existing wiki'
164 $this->mConf
->get( 'fallback', 'dewiki', 'wiki', array(), array( 'tag' ) ),
165 'get(): fallback setting on an existing wiki (with wiki tag)'
169 $this->mConf
->get( 'fallback', 'wiki', 'wiki' ),
170 'get(): fallback setting on an suffix'
174 $this->mConf
->get( 'fallback', 'wiki', 'wiki', array(), array( 'tag' ) ),
175 'get(): fallback setting on an suffix (with wiki tag)'
179 $this->mConf
->get( 'fallback', 'eswiki', 'wiki' ),
180 'get(): fallback setting on an non-existing wiki'
184 $this->mConf
->get( 'fallback', 'eswiki', 'wiki', array(), array( 'tag' ) ),
185 'get(): fallback setting on an non-existing wiki (with wiki tag)'
188 $common = array( 'wiki' => 'wiki', 'default' => 'default' );
189 $commonTag = array( 'tag' => 'tag', 'wiki' => 'wiki', 'default' => 'default' );
191 array( 'enwiki' => 'enwiki' ) +
$common,
192 $this->mConf
->get( 'merge', 'enwiki', 'wiki' ),
193 'get(): merging setting on an existing wiki'
196 array( 'enwiki' => 'enwiki' ) +
$commonTag,
197 $this->mConf
->get( 'merge', 'enwiki', 'wiki', array(), array( 'tag' ) ),
198 'get(): merging setting on an existing wiki (with tag)'
201 array( 'dewiki' => 'dewiki' ) +
$common,
202 $this->mConf
->get( 'merge', 'dewiki', 'wiki' ),
203 'get(): merging setting on an existing wiki (2)'
206 array( 'dewiki' => 'dewiki' ) +
$commonTag,
207 $this->mConf
->get( 'merge', 'dewiki', 'wiki', array(), array( 'tag' ) ),
208 'get(): merging setting on an existing wiki (2) (with tag)'
211 array( 'frwiki' => 'frwiki' ) +
$common,
212 $this->mConf
->get( 'merge', 'frwiki', 'wiki' ),
213 'get(): merging setting on an existing wiki (3)'
216 array( 'frwiki' => 'frwiki' ) +
$commonTag,
217 $this->mConf
->get( 'merge', 'frwiki', 'wiki', array(), array( 'tag' ) ),
218 'get(): merging setting on an existing wiki (3) (with tag)'
221 array( 'wiki' => 'wiki' ) +
$common,
222 $this->mConf
->get( 'merge', 'wiki', 'wiki' ),
223 'get(): merging setting on an suffix'
226 array( 'wiki' => 'wiki' ) +
$commonTag,
227 $this->mConf
->get( 'merge', 'wiki', 'wiki', array(), array( 'tag' ) ),
228 'get(): merging setting on an suffix (with tag)'
232 $this->mConf
->get( 'merge', 'eswiki', 'wiki' ),
233 'get(): merging setting on an non-existing wiki'
237 $this->mConf
->get( 'merge', 'eswiki', 'wiki', array(), array( 'tag' ) ),
238 'get(): merging setting on an non-existing wiki (with tag)'
242 function testSiteFromDbWithCallback() {
243 $this->mConf
->siteParamsCallback
= 'getSiteParams';
246 array( 'wiki', 'en' ),
247 $this->mConf
->siteFromDB( 'enwiki' ),
248 'siteFromDB() with callback'
252 $this->mConf
->siteFromDB( 'wiki' ),
253 'siteFromDB() with callback on a suffix'
257 $this->mConf
->siteFromDB( 'wikien' ),
258 'siteFromDB() with callback on a non-existing wiki'
262 function testParameterReplacement() {
263 $this->mConf
->siteParamsCallback
= 'getSiteParams';
267 $this->mConf
->get( 'params', 'enwiki', 'wiki' ),
268 'get(): parameter replacement on an existing wiki'
272 $this->mConf
->get( 'params', 'dewiki', 'wiki' ),
273 'get(): parameter replacement on an existing wiki (2)'
277 $this->mConf
->get( 'params', 'frwiki', 'wiki' ),
278 'get(): parameter replacement on an existing wiki (3)'
282 $this->mConf
->get( 'params', 'wiki', 'wiki' ),
283 'get(): parameter replacement on an suffix'
287 $this->mConf
->get( 'params', 'eswiki', 'wiki' ),
288 'get(): parameter replacement on an non-existing wiki'
292 function testGetAllGlobals() {
293 $this->mConf
->siteParamsCallback
= 'getSiteParams';
296 'simple' => 'enwiki',
298 'params' => 'en wiki enwiki',
299 'global' => array( 'enwiki' => 'enwiki' ) +
$GLOBALS['global'],
300 'merge' => array( 'enwiki' => 'enwiki', 'tag' => 'tag', 'wiki' => 'wiki', 'default' => 'default' ),
302 $this->assertEquals( $getall, $this->mConf
->getAll( 'enwiki' ), 'getAll()' );
304 $this->mConf
->extractAllGlobals( 'enwiki', 'wiki' );
306 $this->assertEquals( $getall['simple'], $GLOBALS['simple'], 'extractAllGlobals(): simple setting' );
307 $this->assertEquals( $getall['fallback'], $GLOBALS['fallback'], 'extractAllGlobals(): fallback setting' );
308 $this->assertEquals( $getall['params'], $GLOBALS['params'], 'extractAllGlobals(): parameter replacement' );
309 $this->assertEquals( $getall['global'], $GLOBALS['global'], 'extractAllGlobals(): merging with global' );
310 $this->assertEquals( $getall['merge'], $GLOBALS['merge'], 'extractAllGlobals(): merging setting' );