Fix config merging for arrays
parent
9b2e3766c0
commit
23d45f67c1
|
@ -69,7 +69,13 @@ class Config
|
||||||
{
|
{
|
||||||
// override defaults with given config
|
// override defaults with given config
|
||||||
if (!empty($config['config']) && is_array($config['config'])) {
|
if (!empty($config['config']) && is_array($config['config'])) {
|
||||||
$this->config = array_replace_recursive($this->config, $config['config']);
|
foreach ($config['config'] as $key => $val) {
|
||||||
|
if (in_array($key, array('github-oauth')) && isset($this->config[$key])) {
|
||||||
|
$this->config[$key] = array_merge($this->config[$key], $val);
|
||||||
|
} else {
|
||||||
|
$this->config[$key] = $val;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!empty($config['repositories']) && is_array($config['repositories'])) {
|
if (!empty($config['repositories']) && is_array($config['repositories'])) {
|
||||||
|
|
|
@ -99,4 +99,22 @@ class ConfigTest extends \PHPUnit_Framework_TestCase
|
||||||
|
|
||||||
return $data;
|
return $data;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function testMergeGithubOauth()
|
||||||
|
{
|
||||||
|
$config = new Config();
|
||||||
|
$config->merge(array('config' => array('github-oauth' => array('foo' => 'bar'))));
|
||||||
|
$config->merge(array('config' => array('github-oauth' => array('bar' => 'baz'))));
|
||||||
|
|
||||||
|
$this->assertEquals(array('foo' => 'bar', 'bar' => 'baz'), $config->get('github-oauth'));
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testOverrideGithubProtocols()
|
||||||
|
{
|
||||||
|
$config = new Config();
|
||||||
|
$config->merge(array('config' => array('github-protocols' => array('https', 'http'))));
|
||||||
|
$config->merge(array('config' => array('github-protocols' => array('http'))));
|
||||||
|
|
||||||
|
$this->assertEquals(array('http'), $config->get('github-oauth'));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue