2010-12-14 16:26:35 +00:00
|
|
|
<?php
|
|
|
|
|
|
2019-06-30 13:23:53 +00:00
|
|
|
class SiteConfigurationTest extends \MediaWikiUnitTestCase {
|
2013-10-21 21:09:13 +00:00
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @var SiteConfiguration
|
|
|
|
|
*/
|
|
|
|
|
protected $mConf;
|
2010-12-14 16:26:35 +00:00
|
|
|
|
2019-10-20 18:11:08 +00:00
|
|
|
protected function setUp() : void {
|
2012-10-23 17:02:36 +00:00
|
|
|
parent::setUp();
|
|
|
|
|
|
2010-12-14 16:26:35 +00:00
|
|
|
$this->mConf = new SiteConfiguration;
|
|
|
|
|
|
2016-02-17 09:09:32 +00:00
|
|
|
$this->mConf->suffixes = [ 'wikipedia' => 'wiki' ];
|
|
|
|
|
$this->mConf->wikis = [ 'enwiki', 'dewiki', 'frwiki' ];
|
|
|
|
|
$this->mConf->settings = [
|
2018-04-24 17:28:43 +00:00
|
|
|
'SimpleKey' => [
|
2010-12-14 16:26:35 +00:00
|
|
|
'wiki' => 'wiki',
|
|
|
|
|
'tag' => 'tag',
|
|
|
|
|
'enwiki' => 'enwiki',
|
|
|
|
|
'dewiki' => 'dewiki',
|
|
|
|
|
'frwiki' => 'frwiki',
|
2016-02-17 09:09:32 +00:00
|
|
|
],
|
2010-12-14 16:26:35 +00:00
|
|
|
|
2018-04-24 17:28:43 +00:00
|
|
|
'Fallback' => [
|
2010-12-14 16:26:35 +00:00
|
|
|
'default' => 'default',
|
|
|
|
|
'wiki' => 'wiki',
|
|
|
|
|
'tag' => 'tag',
|
2018-04-24 17:30:24 +00:00
|
|
|
'frwiki' => 'frwiki',
|
|
|
|
|
'null_wiki' => null,
|
2016-02-17 09:09:32 +00:00
|
|
|
],
|
2010-12-14 16:26:35 +00:00
|
|
|
|
2018-04-24 17:28:43 +00:00
|
|
|
'WithParams' => [
|
2010-12-14 16:26:35 +00:00
|
|
|
'default' => '$lang $site $wiki',
|
2016-02-17 09:09:32 +00:00
|
|
|
],
|
2010-12-14 16:26:35 +00:00
|
|
|
|
2020-03-02 17:30:10 +00:00
|
|
|
'WithNestedParams' => [
|
|
|
|
|
'default' => [
|
|
|
|
|
'monday' => 'Moon $lang $site',
|
|
|
|
|
'saturday' => 'Saturn $lang $site',
|
|
|
|
|
],
|
|
|
|
|
'+dewiki' => [
|
|
|
|
|
'Sonntag' => 'Sonne $lang $site',
|
|
|
|
|
],
|
|
|
|
|
],
|
|
|
|
|
|
2018-04-24 17:28:43 +00:00
|
|
|
'+SomeGlobal' => [
|
2016-02-17 09:09:32 +00:00
|
|
|
'wiki' => [
|
2010-12-14 16:26:35 +00:00
|
|
|
'wiki' => 'wiki',
|
2016-02-17 09:09:32 +00:00
|
|
|
],
|
|
|
|
|
'tag' => [
|
2010-12-14 16:26:35 +00:00
|
|
|
'tag' => 'tag',
|
2016-02-17 09:09:32 +00:00
|
|
|
],
|
|
|
|
|
'enwiki' => [
|
2010-12-14 16:26:35 +00:00
|
|
|
'enwiki' => 'enwiki',
|
2016-02-17 09:09:32 +00:00
|
|
|
],
|
|
|
|
|
'dewiki' => [
|
2010-12-14 16:26:35 +00:00
|
|
|
'dewiki' => 'dewiki',
|
2016-02-17 09:09:32 +00:00
|
|
|
],
|
|
|
|
|
'frwiki' => [
|
2010-12-14 16:26:35 +00:00
|
|
|
'frwiki' => 'frwiki',
|
2016-02-17 09:09:32 +00:00
|
|
|
],
|
|
|
|
|
],
|
2010-12-14 16:26:35 +00:00
|
|
|
|
2018-04-24 17:28:43 +00:00
|
|
|
'MergeIt' => [
|
2016-02-17 09:09:32 +00:00
|
|
|
'+wiki' => [
|
2010-12-14 16:26:35 +00:00
|
|
|
'wiki' => 'wiki',
|
2016-02-17 09:09:32 +00:00
|
|
|
],
|
|
|
|
|
'+tag' => [
|
2010-12-14 16:26:35 +00:00
|
|
|
'tag' => 'tag',
|
2016-02-17 09:09:32 +00:00
|
|
|
],
|
|
|
|
|
'default' => [
|
2010-12-14 16:26:35 +00:00
|
|
|
'default' => 'default',
|
2016-02-17 09:09:32 +00:00
|
|
|
],
|
|
|
|
|
'+enwiki' => [
|
2010-12-14 16:26:35 +00:00
|
|
|
'enwiki' => 'enwiki',
|
2016-02-17 09:09:32 +00:00
|
|
|
],
|
|
|
|
|
'+dewiki' => [
|
2010-12-14 16:26:35 +00:00
|
|
|
'dewiki' => 'dewiki',
|
2016-02-17 09:09:32 +00:00
|
|
|
],
|
|
|
|
|
'+frwiki' => [
|
2010-12-14 16:26:35 +00:00
|
|
|
'frwiki' => 'frwiki',
|
2016-02-17 09:09:32 +00:00
|
|
|
],
|
|
|
|
|
],
|
|
|
|
|
];
|
2010-12-14 16:26:35 +00:00
|
|
|
|
2018-04-24 17:28:43 +00:00
|
|
|
$GLOBALS['SomeGlobal'] = [ 'SomeGlobal' => 'SomeGlobal' ];
|
2010-12-14 16:26:35 +00:00
|
|
|
}
|
|
|
|
|
|
2014-01-26 23:37:03 +00:00
|
|
|
/**
|
|
|
|
|
* This function is used as a callback within the tests below
|
|
|
|
|
*/
|
|
|
|
|
public static function getSiteParamsCallback( $conf, $wiki ) {
|
|
|
|
|
$site = null;
|
|
|
|
|
$lang = null;
|
|
|
|
|
foreach ( $conf->suffixes as $suffix ) {
|
|
|
|
|
if ( substr( $wiki, -strlen( $suffix ) ) == $suffix ) {
|
|
|
|
|
$site = $suffix;
|
|
|
|
|
$lang = substr( $wiki, 0, -strlen( $suffix ) );
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2016-02-17 09:09:32 +00:00
|
|
|
return [
|
2014-01-26 23:37:03 +00:00
|
|
|
'suffix' => $site,
|
|
|
|
|
'lang' => $lang,
|
2016-02-17 09:09:32 +00:00
|
|
|
'params' => [
|
2014-01-26 23:37:03 +00:00
|
|
|
'lang' => $lang,
|
|
|
|
|
'site' => $site,
|
|
|
|
|
'wiki' => $wiki,
|
2016-02-17 09:09:32 +00:00
|
|
|
],
|
|
|
|
|
'tags' => [ 'tag' ],
|
|
|
|
|
];
|
2014-01-26 23:37:03 +00:00
|
|
|
}
|
|
|
|
|
|
2013-10-21 21:09:13 +00:00
|
|
|
/**
|
|
|
|
|
* @covers SiteConfiguration::siteFromDB
|
|
|
|
|
*/
|
|
|
|
|
public function testSiteFromDb() {
|
2010-12-14 16:26:35 +00:00
|
|
|
$this->assertEquals(
|
2016-02-17 09:09:32 +00:00
|
|
|
[ 'wikipedia', 'en' ],
|
2010-12-14 16:26:35 +00:00
|
|
|
$this->mConf->siteFromDB( 'enwiki' ),
|
|
|
|
|
'siteFromDB()'
|
|
|
|
|
);
|
|
|
|
|
$this->assertEquals(
|
2016-02-17 09:09:32 +00:00
|
|
|
[ 'wikipedia', '' ],
|
2010-12-14 16:26:35 +00:00
|
|
|
$this->mConf->siteFromDB( 'wiki' ),
|
|
|
|
|
'siteFromDB() on a suffix'
|
|
|
|
|
);
|
|
|
|
|
$this->assertEquals(
|
2016-02-17 09:09:32 +00:00
|
|
|
[ null, null ],
|
2010-12-14 16:26:35 +00:00
|
|
|
$this->mConf->siteFromDB( 'wikien' ),
|
|
|
|
|
'siteFromDB() on a non-existing wiki'
|
|
|
|
|
);
|
|
|
|
|
|
2016-02-17 09:09:32 +00:00
|
|
|
$this->mConf->suffixes = [ 'wiki', '' ];
|
2010-12-14 16:26:35 +00:00
|
|
|
$this->assertEquals(
|
2016-02-17 09:09:32 +00:00
|
|
|
[ '', 'wikien' ],
|
2010-12-14 16:26:35 +00:00
|
|
|
$this->mConf->siteFromDB( 'wikien' ),
|
|
|
|
|
'siteFromDB() on a non-existing wiki (2)'
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
|
2013-10-21 21:09:13 +00:00
|
|
|
/**
|
|
|
|
|
* @covers SiteConfiguration::getLocalDatabases
|
|
|
|
|
*/
|
|
|
|
|
public function testGetLocalDatabases() {
|
2010-12-14 16:26:35 +00:00
|
|
|
$this->assertEquals(
|
2016-02-17 09:09:32 +00:00
|
|
|
[ 'enwiki', 'dewiki', 'frwiki' ],
|
2010-12-14 16:26:35 +00:00
|
|
|
$this->mConf->getLocalDatabases(),
|
|
|
|
|
'getLocalDatabases()'
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
|
2013-10-21 21:09:13 +00:00
|
|
|
/**
|
|
|
|
|
* @covers SiteConfiguration::get
|
|
|
|
|
*/
|
|
|
|
|
public function testGetConfVariables() {
|
2018-04-24 17:28:43 +00:00
|
|
|
// Simple
|
2010-12-14 16:26:35 +00:00
|
|
|
$this->assertEquals(
|
|
|
|
|
'enwiki',
|
2018-04-24 17:28:43 +00:00
|
|
|
$this->mConf->get( 'SimpleKey', 'enwiki', 'wiki' ),
|
2010-12-14 16:26:35 +00:00
|
|
|
'get(): simple setting on an existing wiki'
|
|
|
|
|
);
|
|
|
|
|
$this->assertEquals(
|
|
|
|
|
'dewiki',
|
2018-04-24 17:28:43 +00:00
|
|
|
$this->mConf->get( 'SimpleKey', 'dewiki', 'wiki' ),
|
2010-12-14 16:26:35 +00:00
|
|
|
'get(): simple setting on an existing wiki (2)'
|
|
|
|
|
);
|
|
|
|
|
$this->assertEquals(
|
|
|
|
|
'frwiki',
|
2018-04-24 17:28:43 +00:00
|
|
|
$this->mConf->get( 'SimpleKey', 'frwiki', 'wiki' ),
|
2010-12-14 16:26:35 +00:00
|
|
|
'get(): simple setting on an existing wiki (3)'
|
|
|
|
|
);
|
|
|
|
|
$this->assertEquals(
|
|
|
|
|
'wiki',
|
2018-04-24 17:28:43 +00:00
|
|
|
$this->mConf->get( 'SimpleKey', 'wiki', 'wiki' ),
|
2010-12-14 16:26:35 +00:00
|
|
|
'get(): simple setting on an suffix'
|
|
|
|
|
);
|
|
|
|
|
$this->assertEquals(
|
|
|
|
|
'wiki',
|
2018-04-24 17:28:43 +00:00
|
|
|
$this->mConf->get( 'SimpleKey', 'eswiki', 'wiki' ),
|
2019-07-15 22:44:48 +00:00
|
|
|
'get(): simple setting on a non-existing wiki'
|
2010-12-14 16:26:35 +00:00
|
|
|
);
|
|
|
|
|
|
2018-04-24 17:28:43 +00:00
|
|
|
// Fallback
|
2010-12-14 16:26:35 +00:00
|
|
|
$this->assertEquals(
|
|
|
|
|
'wiki',
|
2018-04-24 17:28:43 +00:00
|
|
|
$this->mConf->get( 'Fallback', 'enwiki', 'wiki' ),
|
2010-12-14 16:26:35 +00:00
|
|
|
'get(): fallback setting on an existing wiki'
|
|
|
|
|
);
|
|
|
|
|
$this->assertEquals(
|
|
|
|
|
'tag',
|
2018-04-24 17:28:43 +00:00
|
|
|
$this->mConf->get( 'Fallback', 'dewiki', 'wiki', [], [ 'tag' ] ),
|
2010-12-14 16:26:35 +00:00
|
|
|
'get(): fallback setting on an existing wiki (with wiki tag)'
|
|
|
|
|
);
|
2018-04-24 17:30:24 +00:00
|
|
|
$this->assertEquals(
|
|
|
|
|
'frwiki',
|
|
|
|
|
$this->mConf->get( 'Fallback', 'frwiki', 'wiki', [], [ 'tag' ] ),
|
|
|
|
|
'get(): no fallback if wiki has its own setting (matching tag)'
|
|
|
|
|
);
|
|
|
|
|
$this->assertSame(
|
|
|
|
|
// Potential regression test for T192855
|
|
|
|
|
null,
|
|
|
|
|
$this->mConf->get( 'Fallback', 'null_wiki', 'wiki', [], [ 'tag' ] ),
|
|
|
|
|
'get(): no fallback if wiki has its own setting (matching tag and uses null)'
|
|
|
|
|
);
|
2010-12-14 16:26:35 +00:00
|
|
|
$this->assertEquals(
|
|
|
|
|
'wiki',
|
2018-04-24 17:28:43 +00:00
|
|
|
$this->mConf->get( 'Fallback', 'wiki', 'wiki' ),
|
2010-12-14 16:26:35 +00:00
|
|
|
'get(): fallback setting on an suffix'
|
|
|
|
|
);
|
|
|
|
|
$this->assertEquals(
|
|
|
|
|
'wiki',
|
2018-04-24 17:28:43 +00:00
|
|
|
$this->mConf->get( 'Fallback', 'wiki', 'wiki', [], [ 'tag' ] ),
|
2010-12-14 16:26:35 +00:00
|
|
|
'get(): fallback setting on an suffix (with wiki tag)'
|
|
|
|
|
);
|
|
|
|
|
$this->assertEquals(
|
|
|
|
|
'wiki',
|
2018-04-24 17:28:43 +00:00
|
|
|
$this->mConf->get( 'Fallback', 'eswiki', 'wiki' ),
|
2019-07-15 22:44:48 +00:00
|
|
|
'get(): fallback setting on a non-existing wiki'
|
2010-12-14 16:26:35 +00:00
|
|
|
);
|
|
|
|
|
$this->assertEquals(
|
|
|
|
|
'tag',
|
2018-04-24 17:28:43 +00:00
|
|
|
$this->mConf->get( 'Fallback', 'eswiki', 'wiki', [], [ 'tag' ] ),
|
2019-07-15 22:44:48 +00:00
|
|
|
'get(): fallback setting on a non-existing wiki (with wiki tag)'
|
2010-12-14 16:26:35 +00:00
|
|
|
);
|
|
|
|
|
|
2018-04-24 17:28:43 +00:00
|
|
|
// Merging
|
2016-02-17 09:09:32 +00:00
|
|
|
$common = [ 'wiki' => 'wiki', 'default' => 'default' ];
|
|
|
|
|
$commonTag = [ 'tag' => 'tag', 'wiki' => 'wiki', 'default' => 'default' ];
|
2010-12-14 16:26:35 +00:00
|
|
|
$this->assertEquals(
|
2016-02-17 09:09:32 +00:00
|
|
|
[ 'enwiki' => 'enwiki' ] + $common,
|
2018-04-24 17:28:43 +00:00
|
|
|
$this->mConf->get( 'MergeIt', 'enwiki', 'wiki' ),
|
2010-12-14 16:26:35 +00:00
|
|
|
'get(): merging setting on an existing wiki'
|
|
|
|
|
);
|
|
|
|
|
$this->assertEquals(
|
2016-02-17 09:09:32 +00:00
|
|
|
[ 'enwiki' => 'enwiki' ] + $commonTag,
|
2018-04-24 17:28:43 +00:00
|
|
|
$this->mConf->get( 'MergeIt', 'enwiki', 'wiki', [], [ 'tag' ] ),
|
2010-12-14 16:26:35 +00:00
|
|
|
'get(): merging setting on an existing wiki (with tag)'
|
|
|
|
|
);
|
|
|
|
|
$this->assertEquals(
|
2016-02-17 09:09:32 +00:00
|
|
|
[ 'dewiki' => 'dewiki' ] + $common,
|
2018-04-24 17:28:43 +00:00
|
|
|
$this->mConf->get( 'MergeIt', 'dewiki', 'wiki' ),
|
2010-12-14 16:26:35 +00:00
|
|
|
'get(): merging setting on an existing wiki (2)'
|
|
|
|
|
);
|
|
|
|
|
$this->assertEquals(
|
2016-02-17 09:09:32 +00:00
|
|
|
[ 'dewiki' => 'dewiki' ] + $commonTag,
|
2018-04-24 17:28:43 +00:00
|
|
|
$this->mConf->get( 'MergeIt', 'dewiki', 'wiki', [], [ 'tag' ] ),
|
2010-12-14 16:26:35 +00:00
|
|
|
'get(): merging setting on an existing wiki (2) (with tag)'
|
|
|
|
|
);
|
|
|
|
|
$this->assertEquals(
|
2016-02-17 09:09:32 +00:00
|
|
|
[ 'frwiki' => 'frwiki' ] + $common,
|
2018-04-24 17:28:43 +00:00
|
|
|
$this->mConf->get( 'MergeIt', 'frwiki', 'wiki' ),
|
2010-12-14 16:26:35 +00:00
|
|
|
'get(): merging setting on an existing wiki (3)'
|
|
|
|
|
);
|
|
|
|
|
$this->assertEquals(
|
2016-02-17 09:09:32 +00:00
|
|
|
[ 'frwiki' => 'frwiki' ] + $commonTag,
|
2018-04-24 17:28:43 +00:00
|
|
|
$this->mConf->get( 'MergeIt', 'frwiki', 'wiki', [], [ 'tag' ] ),
|
2010-12-14 16:26:35 +00:00
|
|
|
'get(): merging setting on an existing wiki (3) (with tag)'
|
|
|
|
|
);
|
|
|
|
|
$this->assertEquals(
|
2016-02-17 09:09:32 +00:00
|
|
|
[ 'wiki' => 'wiki' ] + $common,
|
2018-04-24 17:28:43 +00:00
|
|
|
$this->mConf->get( 'MergeIt', 'wiki', 'wiki' ),
|
2010-12-14 16:26:35 +00:00
|
|
|
'get(): merging setting on an suffix'
|
|
|
|
|
);
|
|
|
|
|
$this->assertEquals(
|
2016-02-17 09:09:32 +00:00
|
|
|
[ 'wiki' => 'wiki' ] + $commonTag,
|
2018-04-24 17:28:43 +00:00
|
|
|
$this->mConf->get( 'MergeIt', 'wiki', 'wiki', [], [ 'tag' ] ),
|
2010-12-14 16:26:35 +00:00
|
|
|
'get(): merging setting on an suffix (with tag)'
|
|
|
|
|
);
|
|
|
|
|
$this->assertEquals(
|
|
|
|
|
$common,
|
2018-04-24 17:28:43 +00:00
|
|
|
$this->mConf->get( 'MergeIt', 'eswiki', 'wiki' ),
|
2019-07-15 22:44:48 +00:00
|
|
|
'get(): merging setting on a non-existing wiki'
|
2010-12-14 16:26:35 +00:00
|
|
|
);
|
|
|
|
|
$this->assertEquals(
|
|
|
|
|
$commonTag,
|
2018-04-24 17:28:43 +00:00
|
|
|
$this->mConf->get( 'MergeIt', 'eswiki', 'wiki', [], [ 'tag' ] ),
|
2019-07-15 22:44:48 +00:00
|
|
|
'get(): merging setting on a non-existing wiki (with tag)'
|
2010-12-14 16:26:35 +00:00
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
|
2013-10-21 21:09:13 +00:00
|
|
|
/**
|
|
|
|
|
* @covers SiteConfiguration::siteFromDB
|
|
|
|
|
*/
|
|
|
|
|
public function testSiteFromDbWithCallback() {
|
2014-01-26 23:37:03 +00:00
|
|
|
$this->mConf->siteParamsCallback = 'SiteConfigurationTest::getSiteParamsCallback';
|
2010-12-14 16:26:35 +00:00
|
|
|
|
|
|
|
|
$this->assertEquals(
|
2016-02-17 09:09:32 +00:00
|
|
|
[ 'wiki', 'en' ],
|
2010-12-14 16:26:35 +00:00
|
|
|
$this->mConf->siteFromDB( 'enwiki' ),
|
|
|
|
|
'siteFromDB() with callback'
|
|
|
|
|
);
|
|
|
|
|
$this->assertEquals(
|
2016-02-17 09:09:32 +00:00
|
|
|
[ 'wiki', '' ],
|
2010-12-14 16:26:35 +00:00
|
|
|
$this->mConf->siteFromDB( 'wiki' ),
|
|
|
|
|
'siteFromDB() with callback on a suffix'
|
|
|
|
|
);
|
|
|
|
|
$this->assertEquals(
|
2016-02-17 09:09:32 +00:00
|
|
|
[ null, null ],
|
2010-12-14 16:26:35 +00:00
|
|
|
$this->mConf->siteFromDB( 'wikien' ),
|
|
|
|
|
'siteFromDB() with callback on a non-existing wiki'
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
|
2013-10-21 21:09:13 +00:00
|
|
|
/**
|
2020-03-02 17:30:10 +00:00
|
|
|
* @covers SiteConfiguration
|
2013-10-21 21:09:13 +00:00
|
|
|
*/
|
|
|
|
|
public function testParameterReplacement() {
|
2014-01-26 23:37:03 +00:00
|
|
|
$this->mConf->siteParamsCallback = 'SiteConfigurationTest::getSiteParamsCallback';
|
2010-12-14 16:26:35 +00:00
|
|
|
|
|
|
|
|
$this->assertEquals(
|
|
|
|
|
'en wiki enwiki',
|
2018-04-24 17:28:43 +00:00
|
|
|
$this->mConf->get( 'WithParams', 'enwiki', 'wiki' ),
|
2010-12-14 16:26:35 +00:00
|
|
|
'get(): parameter replacement on an existing wiki'
|
|
|
|
|
);
|
|
|
|
|
$this->assertEquals(
|
|
|
|
|
'de wiki dewiki',
|
2018-04-24 17:28:43 +00:00
|
|
|
$this->mConf->get( 'WithParams', 'dewiki', 'wiki' ),
|
2010-12-14 16:26:35 +00:00
|
|
|
'get(): parameter replacement on an existing wiki (2)'
|
|
|
|
|
);
|
|
|
|
|
$this->assertEquals(
|
|
|
|
|
'fr wiki frwiki',
|
2018-04-24 17:28:43 +00:00
|
|
|
$this->mConf->get( 'WithParams', 'frwiki', 'wiki' ),
|
2010-12-14 16:26:35 +00:00
|
|
|
'get(): parameter replacement on an existing wiki (3)'
|
|
|
|
|
);
|
|
|
|
|
$this->assertEquals(
|
|
|
|
|
' wiki wiki',
|
2018-04-24 17:28:43 +00:00
|
|
|
$this->mConf->get( 'WithParams', 'wiki', 'wiki' ),
|
2010-12-14 16:26:35 +00:00
|
|
|
'get(): parameter replacement on an suffix'
|
|
|
|
|
);
|
|
|
|
|
$this->assertEquals(
|
|
|
|
|
'es wiki eswiki',
|
2018-04-24 17:28:43 +00:00
|
|
|
$this->mConf->get( 'WithParams', 'eswiki', 'wiki' ),
|
2019-07-15 22:44:48 +00:00
|
|
|
'get(): parameter replacement on a non-existing wiki'
|
2010-12-14 16:26:35 +00:00
|
|
|
);
|
2020-03-02 17:30:10 +00:00
|
|
|
|
|
|
|
|
$this->assertEquals(
|
|
|
|
|
[
|
|
|
|
|
'monday' => 'Moon en wiki',
|
|
|
|
|
'saturday' => 'Saturn en wiki',
|
|
|
|
|
],
|
|
|
|
|
$this->mConf->get( 'WithNestedParams', 'enwiki', 'wiki' ),
|
|
|
|
|
'get(): nested parameter replacement using default'
|
|
|
|
|
);
|
|
|
|
|
$this->assertEquals(
|
|
|
|
|
[
|
|
|
|
|
'monday' => 'Moon de wiki',
|
|
|
|
|
'saturday' => 'Saturn de wiki',
|
|
|
|
|
'Sonntag' => 'Sonne de wiki',
|
|
|
|
|
],
|
|
|
|
|
$this->mConf->get( 'WithNestedParams', 'dewiki', 'wiki' ),
|
|
|
|
|
'get(): nested parameter replacement using merged override'
|
|
|
|
|
);
|
2010-12-14 16:26:35 +00:00
|
|
|
}
|
|
|
|
|
|
2013-10-21 21:09:13 +00:00
|
|
|
/**
|
|
|
|
|
* @covers SiteConfiguration::getAll
|
|
|
|
|
*/
|
|
|
|
|
public function testGetAllGlobals() {
|
2014-01-26 23:37:03 +00:00
|
|
|
$this->mConf->siteParamsCallback = 'SiteConfigurationTest::getSiteParamsCallback';
|
2010-12-14 16:26:35 +00:00
|
|
|
|
2016-02-17 09:09:32 +00:00
|
|
|
$getall = [
|
2018-04-24 17:28:43 +00:00
|
|
|
'SimpleKey' => 'enwiki',
|
|
|
|
|
'Fallback' => 'tag',
|
|
|
|
|
'WithParams' => 'en wiki enwiki',
|
2020-03-02 17:30:10 +00:00
|
|
|
'WithNestedParams' => [
|
|
|
|
|
'monday' => 'Moon en wiki',
|
|
|
|
|
'saturday' => 'Saturn en wiki',
|
|
|
|
|
],
|
2018-04-24 17:28:43 +00:00
|
|
|
'SomeGlobal' => [ 'enwiki' => 'enwiki' ] + $GLOBALS['SomeGlobal'],
|
|
|
|
|
'MergeIt' => [
|
2014-04-24 12:35:05 +00:00
|
|
|
'enwiki' => 'enwiki',
|
|
|
|
|
'tag' => 'tag',
|
|
|
|
|
'wiki' => 'wiki',
|
|
|
|
|
'default' => 'default'
|
2016-02-17 09:09:32 +00:00
|
|
|
],
|
|
|
|
|
];
|
2010-12-14 16:26:35 +00:00
|
|
|
$this->assertEquals( $getall, $this->mConf->getAll( 'enwiki' ), 'getAll()' );
|
|
|
|
|
|
|
|
|
|
$this->mConf->extractAllGlobals( 'enwiki', 'wiki' );
|
|
|
|
|
|
2014-04-24 12:35:05 +00:00
|
|
|
$this->assertEquals(
|
2018-04-24 17:28:43 +00:00
|
|
|
$getall['SimpleKey'],
|
|
|
|
|
$GLOBALS['SimpleKey'],
|
2014-04-24 12:35:05 +00:00
|
|
|
'extractAllGlobals(): simple setting'
|
|
|
|
|
);
|
|
|
|
|
$this->assertEquals(
|
2018-04-24 17:28:43 +00:00
|
|
|
$getall['Fallback'],
|
|
|
|
|
$GLOBALS['Fallback'],
|
2014-04-24 12:35:05 +00:00
|
|
|
'extractAllGlobals(): fallback setting'
|
|
|
|
|
);
|
|
|
|
|
$this->assertEquals(
|
2018-04-24 17:28:43 +00:00
|
|
|
$getall['WithParams'],
|
|
|
|
|
$GLOBALS['WithParams'],
|
2014-04-24 12:35:05 +00:00
|
|
|
'extractAllGlobals(): parameter replacement'
|
|
|
|
|
);
|
|
|
|
|
$this->assertEquals(
|
2018-04-24 17:28:43 +00:00
|
|
|
$getall['SomeGlobal'],
|
|
|
|
|
$GLOBALS['SomeGlobal'],
|
2014-04-24 12:35:05 +00:00
|
|
|
'extractAllGlobals(): merging with global'
|
|
|
|
|
);
|
|
|
|
|
$this->assertEquals(
|
2018-04-24 17:28:43 +00:00
|
|
|
$getall['MergeIt'],
|
|
|
|
|
$GLOBALS['MergeIt'],
|
2014-04-24 12:35:05 +00:00
|
|
|
'extractAllGlobals(): merging setting'
|
|
|
|
|
);
|
2010-12-14 16:26:35 +00:00
|
|
|
}
|
2020-03-04 02:08:06 +00:00
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @covers SiteConfiguration
|
|
|
|
|
*/
|
|
|
|
|
public function testSuffixAndTagConflict() {
|
|
|
|
|
$conf = new SiteConfiguration;
|
|
|
|
|
|
|
|
|
|
$conf->suffixes = [ 'foo', 'bar', 'baz' ];
|
|
|
|
|
$conf->wikis = [ 'aabar', 'bbbar', 'ccbar' ];
|
|
|
|
|
$conf->settings = [
|
|
|
|
|
'MyVariable' => [
|
|
|
|
|
'default' => [ 'x' ],
|
|
|
|
|
'+bar' => [ 'y' ],
|
|
|
|
|
],
|
|
|
|
|
];
|
|
|
|
|
|
2020-03-04 00:19:57 +00:00
|
|
|
// Regression test for T246858
|
2020-03-04 02:08:06 +00:00
|
|
|
$this->assertSame(
|
2020-03-04 00:19:57 +00:00
|
|
|
[ 'y', 'x' ],
|
2020-03-04 02:08:06 +00:00
|
|
|
$conf->get( 'MyVariable', 'bbbar', 'bar', [], [ 'alpha', 'bar' ] ),
|
|
|
|
|
'get(): variable with +merge for a tag that is also a suffix'
|
|
|
|
|
);
|
|
|
|
|
}
|
2010-12-14 16:26:35 +00:00
|
|
|
}
|