Add test for Addon failures

This commit is contained in:
Philipp 2023-01-08 02:28:27 +01:00
parent 0429a4e429
commit 2293ff6206
No known key found for this signature in database
GPG Key ID: 24A7501396EB5432
3 changed files with 42 additions and 3 deletions

View File

@ -194,11 +194,13 @@ class ConfigFileManager
try { try {
if (flock($configStream, LOCK_SH)) { if (flock($configStream, LOCK_SH)) {
clearstatcache(true, $filename);
if (($filesize = filesize($filename)) === 0) { if (($filesize = filesize($filename)) === 0) {
return; return;
} }
$content = fread($configStream, filesize($filename)); $content = fread($configStream, $filesize);
if (!$content) { if (!$content) {
throw new ConfigFileException(sprintf('Couldn\'t read file %s', $filename)); throw new ConfigFileException(sprintf('Couldn\'t read file %s', $filename));
} }

View File

@ -283,7 +283,7 @@ class Cache
$keys = array_keys($config[$category]); $keys = array_keys($config[$category]);
foreach ($keys as $key) { foreach ($keys as $key) {
if (!isset($this->config[$category][$key])) { if (!key_exists($key, $this->config[$category] ?? [])) {
$return[$category][$key] = $config[$category][$key]; $return[$category][$key] = $config[$category][$key];
} }
} }

View File

@ -40,6 +40,7 @@ class CacheTest extends MockedTest
'int' => 235, 'int' => 235,
'dec' => 2.456, 'dec' => 2.456,
'array' => ['1', 2, '3', true, false], 'array' => ['1', 2, '3', true, false],
'null' => null,
], ],
'config' => [ 'config' => [
'a' => 'value', 'a' => 'value',
@ -503,6 +504,24 @@ class CacheTest extends MockedTest
], ],
], ],
], ],
/** @see https://github.com/friendica/friendica/issues/12486#issuecomment-1374609349 */
'test_with_null' => [
'data' => [
'test_with_null' => null,
'config' => [
'register_policy' => 2,
'register_text' => '',
'sitename' => 'Friendica Social Network23',
'hostname' => 'friendica.local',
'private_addons' => false,
],
'system' => [
'dbclean_expire_conversation' => 90,
],
],
'cat' => 'test_with_null',
'assertion' => null,
],
]; ];
} }
@ -511,10 +530,28 @@ class CacheTest extends MockedTest
* *
* @dataProvider dataTestCat * @dataProvider dataTestCat
*/ */
public function testGetCategory(array $data, string $category, array $assertion) public function testGetCategory($data, string $category, $assertion)
{ {
$cache = new Cache($data); $cache = new Cache($data);
self::assertEquals($assertion, $cache->get($category)); self::assertEquals($assertion, $cache->get($category));
} }
/**
* Test that the cache can get merged with different categories
*
* @dataProvider dataTestCat
*/
public function testCatMerge($data, string $category)
{
$cache = new Cache($data);
$newCache = $cache->merge(new Cache([
$category => [
'new_key' => 'new_value',
],
]));
self::assertEquals('new_value', $newCache->get($category, 'new_key'));
}
} }