mirror of
https://git.friendi.ca/friendica/friendica.git
synced 2025-06-11 09:44:32 +02:00
Config fixings
- Delete now really overwrites static default/setting.config.php keys - Delete now really overwrites static default/setting.config.php categories - The Update::check() routine is added to different places - Merge the given config file with the new config before writing - Remove ConfigTransaction::get() because it's no more reliable
This commit is contained in:
parent
cdd57275eb
commit
5aa8e8adf1
13 changed files with 221 additions and 181 deletions
|
@ -67,6 +67,8 @@ class CacheTest extends MockedTest
|
|||
$configCache = new Cache();
|
||||
$configCache->load($data);
|
||||
|
||||
print_r($configCache);
|
||||
|
||||
self::assertConfigValues($data, $configCache);
|
||||
}
|
||||
|
||||
|
@ -111,9 +113,9 @@ class CacheTest extends MockedTest
|
|||
}
|
||||
|
||||
/**
|
||||
* Test the loadConfigArray() method with wrong/empty datasets
|
||||
* Test the loadConfigArray() method with only a category
|
||||
*/
|
||||
public function testLoadConfigArrayWrong()
|
||||
public function testLoadConfigArrayWithOnlyCategory()
|
||||
{
|
||||
$configCache = new Cache();
|
||||
|
||||
|
@ -123,9 +125,10 @@ class CacheTest extends MockedTest
|
|||
|
||||
// wrong dataset
|
||||
$configCache->load(['system' => 'not_array']);
|
||||
self::assertEmpty($configCache->getAll());
|
||||
self::assertEquals(['system' => 'not_array'], $configCache->getAll());
|
||||
|
||||
// incomplete dataset (key is integer ID of the array)
|
||||
$configCache = new Cache();
|
||||
$configCache->load(['system' => ['value']]);
|
||||
self::assertEquals('value', $configCache->get('system', 0));
|
||||
}
|
||||
|
@ -207,13 +210,16 @@ class CacheTest extends MockedTest
|
|||
{
|
||||
$configCache = new Cache($data);
|
||||
|
||||
$assertion = [];
|
||||
|
||||
foreach ($data as $cat => $values) {
|
||||
$assertion[$cat] = null;
|
||||
foreach ($values as $key => $value) {
|
||||
$configCache->delete($cat, $key);
|
||||
}
|
||||
}
|
||||
|
||||
self::assertEmpty($configCache->getAll());
|
||||
self::assertEquals($assertion, $configCache->getAll());
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -385,32 +391,6 @@ class CacheTest extends MockedTest
|
|||
self::assertEquals('added category', $mergedCache->get('new_category', 'test_23'));
|
||||
}
|
||||
|
||||
/**
|
||||
* @dataProvider dataTests
|
||||
*/
|
||||
public function testDiff($data)
|
||||
{
|
||||
$configCache = new Cache();
|
||||
$configCache->load($data, Cache::SOURCE_FILE);
|
||||
|
||||
$configCache->set('system', 'test_2','with_data', Cache::SOURCE_DATA);
|
||||
$configCache->set('config', 'test_override','with_another_data', Cache::SOURCE_DATA);
|
||||
|
||||
$newCache = new Cache();
|
||||
$newCache->set('config', 'test_override','override it again', Cache::SOURCE_DATA);
|
||||
$newCache->set('system', 'test_3','new value', Cache::SOURCE_DATA);
|
||||
|
||||
$mergedCache = $configCache->diff($newCache);
|
||||
|
||||
print_r($mergedCache);
|
||||
|
||||
self::assertEquals('with_data', $mergedCache->get('system', 'test_2'));
|
||||
// existing entry was dropped
|
||||
self::assertNull($mergedCache->get('config', 'test_override'));
|
||||
// the newCache entry wasn't set, because we Diff
|
||||
self::assertNull($mergedCache->get('system', 'test_3'));
|
||||
}
|
||||
|
||||
public function dataTestCat()
|
||||
{
|
||||
return [
|
||||
|
|
|
@ -441,4 +441,74 @@ class ConfigFileManagerTest extends MockedTest
|
|||
'special' => $specialChars,
|
||||
]], $configCache2->getDataBySource(Cache::SOURCE_DATA));
|
||||
}
|
||||
|
||||
/**
|
||||
* If we delete something with the Cache::delete() functionality, be sure to override the underlying source as well
|
||||
*/
|
||||
public function testDeleteKeyOverwrite()
|
||||
{
|
||||
$this->delConfigFile('node.config.php');
|
||||
|
||||
$fileDir = dirname(__DIR__) . DIRECTORY_SEPARATOR .
|
||||
'..' . DIRECTORY_SEPARATOR .
|
||||
'..' . DIRECTORY_SEPARATOR .
|
||||
'..' . DIRECTORY_SEPARATOR .
|
||||
'datasets' . DIRECTORY_SEPARATOR .
|
||||
'config' . DIRECTORY_SEPARATOR;
|
||||
|
||||
vfsStream::newFile('B.config.php')
|
||||
->at($this->root->getChild('config'))
|
||||
->setContent(file_get_contents($fileDir . 'B.config.php'));
|
||||
|
||||
$configFileManager = (new Config())->createConfigFileManager($this->root->url());
|
||||
$configCache = new Cache();
|
||||
|
||||
$configFileManager->setupCache($configCache);
|
||||
|
||||
$configCache->delete('system', 'default_timezone', Cache::SOURCE_DATA);
|
||||
|
||||
$configFileManager->saveData($configCache);
|
||||
|
||||
// assert that system.default_timezone is now null, even it's set with settings.conf.php
|
||||
$configCache = new Cache();
|
||||
|
||||
$configFileManager->setupCache($configCache);
|
||||
|
||||
self::assertNull($configCache->get('system', 'default_timezone'));
|
||||
}
|
||||
|
||||
/**
|
||||
* If we delete something with the Cache::delete() functionality, be sure to override the underlying source as well
|
||||
*/
|
||||
public function testDeleteCategoryOverwrite()
|
||||
{
|
||||
$this->delConfigFile('node.config.php');
|
||||
|
||||
$fileDir = dirname(__DIR__) . DIRECTORY_SEPARATOR .
|
||||
'..' . DIRECTORY_SEPARATOR .
|
||||
'..' . DIRECTORY_SEPARATOR .
|
||||
'..' . DIRECTORY_SEPARATOR .
|
||||
'datasets' . DIRECTORY_SEPARATOR .
|
||||
'config' . DIRECTORY_SEPARATOR;
|
||||
|
||||
vfsStream::newFile('B.config.php')
|
||||
->at($this->root->getChild('config'))
|
||||
->setContent(file_get_contents($fileDir . 'B.config.php'));
|
||||
|
||||
$configFileManager = (new Config())->createConfigFileManager($this->root->url());
|
||||
$configCache = new Cache();
|
||||
|
||||
$configFileManager->setupCache($configCache);
|
||||
|
||||
$configCache->delete('system');
|
||||
|
||||
$configFileManager->saveData($configCache);
|
||||
|
||||
// assert that system.default_timezone is now null, even it's set with settings.conf.php
|
||||
$configCache = new Cache();
|
||||
|
||||
$configFileManager->setupCache($configCache);
|
||||
|
||||
self::assertNull($configCache->get('system', 'default_timezone'));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -364,7 +364,7 @@ class ConfigTest extends MockedTest
|
|||
self::assertNull($this->testedConfig->get('test', 'it'));
|
||||
self::assertNull($this->testedConfig->getCache()->get('test', 'it'));
|
||||
|
||||
self::assertEmpty($this->testedConfig->getCache()->getAll());
|
||||
self::assertEquals(['test' => null], $this->testedConfig->getCache()->getAll());
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -54,10 +54,6 @@ class ConfigTransactionTest extends MockedTest
|
|||
$config->set('delete', 'keyDel', 'catDel');
|
||||
|
||||
$configTransaction = new ConfigTransaction($config);
|
||||
self::assertEquals('value1', $configTransaction->get('config', 'key1'));
|
||||
self::assertEquals('value2', $configTransaction->get('system', 'key2'));
|
||||
self::assertEquals('valueDel', $configTransaction->get('system', 'keyDel'));
|
||||
self::assertEquals('catDel', $configTransaction->get('delete', 'keyDel'));
|
||||
// the config file knows it as well immediately
|
||||
$tempData = include $this->root->url() . '/config/' . ConfigFileManager::CONFIG_DATA_FILE;
|
||||
self::assertEquals('value1', $tempData['config']['key1'] ?? null);
|
||||
|
@ -77,11 +73,6 @@ class ConfigTransactionTest extends MockedTest
|
|||
self::assertEquals('value1', $config->get('config', 'key1'));
|
||||
self::assertEquals('valueDel', $config->get('system', 'keyDel'));
|
||||
self::assertEquals('catDel', $config->get('delete', 'keyDel'));
|
||||
// but the transaction config of course knows it
|
||||
self::assertEquals('value3', $configTransaction->get('transaction', 'key3'));
|
||||
self::assertEquals('changedValue1', $configTransaction->get('config', 'key1'));
|
||||
self::assertNull($configTransaction->get('system', 'keyDel'));
|
||||
self::assertNull($configTransaction->get('delete', 'keyDel'));
|
||||
// The config file still doesn't know it either
|
||||
$tempData = include $this->root->url() . '/config/' . ConfigFileManager::CONFIG_DATA_FILE;
|
||||
self::assertEquals('value1', $tempData['config']['key1'] ?? null);
|
||||
|
@ -97,9 +88,6 @@ class ConfigTransactionTest extends MockedTest
|
|||
self::assertEquals('value3', $config->get('transaction', 'key3'));
|
||||
self::assertNull($config->get('system', 'keyDel'));
|
||||
self::assertNull($config->get('delete', 'keyDel'));
|
||||
self::assertEquals('value3', $configTransaction->get('transaction', 'key3'));
|
||||
self::assertEquals('changedValue1', $configTransaction->get('config', 'key1'));
|
||||
self::assertNull($configTransaction->get('system', 'keyDel'));
|
||||
$tempData = include $this->root->url() . '/config/' . ConfigFileManager::CONFIG_DATA_FILE;
|
||||
self::assertEquals('changedValue1', $tempData['config']['key1'] ?? null);
|
||||
self::assertEquals('value2', $tempData['system']['key2'] ?? null);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue