diff --git a/.gitignore b/.gitignore
index 9de9b097..cc327b40 100644
--- a/.gitignore
+++ b/.gitignore
@@ -3,7 +3,7 @@ node_modules/
**/composer.lock
**/vendor/
tools/
-**/.env
+**/configs/.env
**/.target
package-lock.json
build/
diff --git a/.phive/phars.xml b/.phive/phars.xml
index 614d987e..59b82e76 100644
--- a/.phive/phars.xml
+++ b/.phive/phars.xml
@@ -3,10 +3,10 @@
-
+
-
-
+
+
diff --git a/4dev/locale/en-admin.po b/4dev/locale/en-admin.po
index 1cca0839..3e40bcde 100644
--- a/4dev/locale/en-admin.po
+++ b/4dev/locale/en-admin.po
@@ -8,11 +8,11 @@
msgid ""
msgstr ""
"Project-Id-Version: en.UTF-8 LC_MESSAGES admin\n"
-"Report-Msgid-Bugs-To: clemens.schwaighofer@egplusww.com\n"
+"Report-Msgid-Bugs-To: webmaster+corelibs-translation@ocex.jp\n"
"POT-Creation-Date: 2018-03-28 10:40+0900\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: clemens.schwaighofer@egplusww.co\n"
-"Language-Team: E-GRAPHICS COMMUNICATIONS Japan \n"
+"Last-Translator: clemens.schwaighofer@omc.com\n"
+"Language-Team: Omnicom Content Experiences Japan \n"
"Language: en\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
diff --git a/4dev/locale/en-frontend.po b/4dev/locale/en-frontend.po
index 5688ef7a..3d64b63a 100644
--- a/4dev/locale/en-frontend.po
+++ b/4dev/locale/en-frontend.po
@@ -8,11 +8,11 @@
msgid ""
msgstr ""
"Project-Id-Version: en.UTF-8 LC_MESSAGES frontend\n"
-"Report-Msgid-Bugs-To: clemens.schwaighofer@egplusww.com\n"
+"Report-Msgid-Bugs-To: webmaster+corelibs-translation@ocex.jp\n"
"POT-Creation-Date: 2018-03-28 10:40+0900\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: clemens.schwaighofer@egplusww.co\n"
-"Language-Team: E-GRAPHICS COMMUNICATIONS Japan \n"
+"Last-Translator: clemens.schwaighofer@omc.com\n"
+"Language-Team: Omnicom Content Experiences Japan \n"
"Language: en\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
diff --git a/4dev/locale/ja-admin.po b/4dev/locale/ja-admin.po
index 832d9964..2de12135 100644
--- a/4dev/locale/ja-admin.po
+++ b/4dev/locale/ja-admin.po
@@ -8,11 +8,11 @@
msgid ""
msgstr ""
"Project-Id-Version: ja.UTF-8 LC_MESSAGES admin\n"
-"Report-Msgid-Bugs-To: clemens.schwaighofer@egplusww.com\n"
+"Report-Msgid-Bugs-To: webmaster+corelibs-translation@ocex.jp\n"
"POT-Creation-Date: 2018-03-28 10:40+0900\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: clemens.schwaighofer@egplusww.com\n"
-"Language-Team: E-GRAPHICS COMMUNICATIONS Japan \n"
+"Last-Translator: clemens.schwaighofer@omc.com\n"
+"Language-Team: Omnicom Content Experiences Japan \n"
"Language: ja\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
diff --git a/4dev/locale/ja-frontend.po b/4dev/locale/ja-frontend.po
index 30afb0f8..ba8f3353 100644
--- a/4dev/locale/ja-frontend.po
+++ b/4dev/locale/ja-frontend.po
@@ -8,11 +8,11 @@
msgid ""
msgstr ""
"Project-Id-Version: ja.UTF-8 LC_MESSAGES frontend\n"
-"Report-Msgid-Bugs-To: clemens.schwaighofer@egplusww.com\n"
+"Report-Msgid-Bugs-To: webmaster+corelibs-translation@ocex.jp\n"
"POT-Creation-Date: 2018-03-28 10:40+0900\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: clemens.schwaighofer@egplusww.com\n"
-"Language-Team: E-GRAPHICS COMMUNICATIONS Japan \n"
+"Last-Translator: clemens.schwaighofer@omc.com\n"
+"Language-Team: Omnicom Content Experiences Japan \n"
"Language: ja\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
diff --git a/4dev/tests/AAASetupData/CoreLibsAAASetupDataTest.php b/4dev/tests/AAASetupData/CoreLibsAAASetupDataTest.php
index 625d0059..4200f98a 100644
--- a/4dev/tests/AAASetupData/CoreLibsAAASetupDataTest.php
+++ b/4dev/tests/AAASetupData/CoreLibsAAASetupDataTest.php
@@ -12,6 +12,8 @@ use PHPUnit\Framework\TestCase;
*/
final class CoreLibsAAASetupDataTest extends TestCase
{
+ public const TIME_ZONE = 'Asia/Tokyo';
+
/**
* Covers nothing
*
@@ -34,6 +36,9 @@ final class CoreLibsAAASetupDataTest extends TestCase
BASE,
'BASE Path set check'
);
+
+ // if time zone is not set, errors can happen
+ ini_set('date.timezone', self::TIME_ZONE);
}
}
diff --git a/4dev/tests/ACL/CoreLibsACLLoginTest.php b/4dev/tests/ACL/CoreLibsACLLoginTest.php
index f29f02d7..2be4285c 100644
--- a/4dev/tests/ACL/CoreLibsACLLoginTest.php
+++ b/4dev/tests/ACL/CoreLibsACLLoginTest.php
@@ -80,21 +80,27 @@ final class CoreLibsACLLoginTest extends TestCase
'log_file_id' => 'CoreLibs-ACL-Login-Test',
]);
// test database we need to connect do, if not possible this test is skipped
- self::$db = new \CoreLibs\DB\IO(
- [
- 'db_name' => $db_name,
- 'db_user' => $db_user,
- 'db_pass' => $db_password,
- 'db_host' => $db_host,
- 'db_port' => 5432,
- 'db_schema' => 'public',
- 'db_type' => 'pgsql',
- 'db_encoding' => '',
- 'db_ssl' => 'allow', // allow, disable, require, prefer
- 'db_debug' => true,
- ],
- self::$log
- );
+ try {
+ self::$db = new \CoreLibs\DB\IO(
+ [
+ 'db_name' => $db_name,
+ 'db_user' => $db_user,
+ 'db_pass' => $db_password,
+ 'db_host' => $db_host,
+ 'db_port' => 5432,
+ 'db_schema' => 'public',
+ 'db_type' => 'pgsql',
+ 'db_encoding' => '',
+ 'db_ssl' => 'allow', // allow, disable, require, prefer
+ 'db_debug' => true,
+ ],
+ self::$log
+ );
+ } catch (\Exception $e) {
+ self::markTestSkipped(
+ 'Cannot connect to Test DB for ACL\Login test: ' . $e->getMessage()
+ );
+ }
// ALWAYS drop DB and RECREATE DB
// dropdb -U corelibs_acl_login_test -h localhost corelibs_acl_login_test
// createdb -U corelibs_acl_login_test -O corelibs_acl_login_test -E utf8 corelibs_acl_login_test;
diff --git a/4dev/tests/ACL/CoreLibsACLLogin_database_prepare.sh b/4dev/tests/ACL/CoreLibsACLLogin_database_prepare.sh
index 34b37a7a..012b17ae 100755
--- a/4dev/tests/ACL/CoreLibsACLLogin_database_prepare.sh
+++ b/4dev/tests/ACL/CoreLibsACLLogin_database_prepare.sh
@@ -15,6 +15,12 @@ if [ ! -f "${load_sql}" ]; then
echo 1;
exit 1;
fi;
+# if we have no dropdb, createdb, psql, exit with 6
+if ! command -v dropdb &> /dev/null || ! command -v createdb &> /dev/null || ! command -v psql &> /dev/null; then
+ echo 6;
+ exit 6;
+fi;
+
db_user="${2}";
db_name="${3}";
db_host="${4}";
@@ -24,25 +30,25 @@ if [ -z "${db_user}" ] || [ -z "${db_name}" ] || [ -z "${db_host}" ]; then
exit 2;
fi;
# drop database, on error exit with 3
-dropdb -U ${db_user} -h ${db_host} ${db_name} 2>&1;
-if [ $? -ne 0 ]; then
+dropdb -U "${db_user}" -h "${db_host}" "${db_name}" 2>&1;
+if [ ! $? ]; then
echo 3;
exit 3;
fi;
# create database, on error exit with 4
-createdb -U ${db_user} -O ${db_user} -h ${db_host} -E utf8 ${db_name} 2>&1;
-if [ $? -ne 0 ]; then
+createdb -U "${db_user}" -O "${db_user}" -h "${db_host}" -E utf8 "${db_name}" 2>&1;
+if [ ! $? ]; then
echo 4;
exit 4;
fi;
# if error 5 thrown, test with enabled below
-if [ ! -z "${5}" ]; then
- psql -U ${db_user} -h ${db_host} -f ${load_sql} ${db_name};
+if [ -n "${5}" ]; then
+ psql -U "${db_user}" -h "${db_host}" -f "${load_sql}" "${db_name}";
else
# load data (redirect ALL error to null), on error exit with 5
- psql -U ${db_user} -h ${db_host} -f ${load_sql} ${db_name} 2>&1 1>/dev/null 2>/dev/null;
+ psql -U "${db_user}" -h "${db_host}" -f "${load_sql}" "${db_name}" 2>&1 1>/dev/null 2>/dev/null;
fi;
-if [ $? -ne 0 ]; then
+if [ ! $? ]; then
echo 5;
exit 5;
fi;
diff --git a/4dev/tests/Combined/CoreLibsCombinedArrayHandlerTest.php b/4dev/tests/Combined/CoreLibsCombinedArrayHandlerTest.php
index 8843393c..a49760a9 100644
--- a/4dev/tests/Combined/CoreLibsCombinedArrayHandlerTest.php
+++ b/4dev/tests/Combined/CoreLibsCombinedArrayHandlerTest.php
@@ -1266,7 +1266,8 @@ final class CoreLibsCombinedArrayHandlerTest extends TestCase
/**
* Undocumented function
*
- * @covers ::arrayGetPrevKey, ::arrayGetNextKey
+ * @covers ::arrayGetPrevKey
+ * @covers ::arrayGetNextKey
* @dataProvider providerArrayGetNextPrevKey
* @testdox arrayGetNextPrevKey get next/prev key for $search wtih $expected_prev/$expected_next [$_dataName]
*
diff --git a/4dev/tests/Combined/CoreLibsCombinedDateTimeTest.php b/4dev/tests/Combined/CoreLibsCombinedDateTimeTest.php
index fa54787b..e32baae5 100644
--- a/4dev/tests/Combined/CoreLibsCombinedDateTimeTest.php
+++ b/4dev/tests/Combined/CoreLibsCombinedDateTimeTest.php
@@ -1,4 +1,4 @@
-expectException("\InvalidArgumentException");
+ \CoreLibs\Convert\Json::jsonValidate('{"valid": "json"}', 5);
+ }
+
+ /**
+ * Check if valid flag throws no exception
+ *
+ * @covers ::jsonValidate
+ * @testdox jsonValidate test no exception on valid flag
+ *
+ * @return void
+ */
+ public function testJsonValidateValidflag(): void
+ {
+ $this->assertTrue(
+ \CoreLibs\Convert\Json::jsonValidate('{"valid": "json"}', 0)
+ );
+ $this->assertTrue(
+ \CoreLibs\Convert\Json::jsonValidate('{"valid": "json"}', JSON_INVALID_UTF8_IGNORE)
+ );
+ }
+
/**
* Undocumented function
*
diff --git a/4dev/tests/Convert/CoreLibsConvertStringsTest.php b/4dev/tests/Convert/CoreLibsConvertStringsTest.php
index 017c4ec3..aa15a890 100644
--- a/4dev/tests/Convert/CoreLibsConvertStringsTest.php
+++ b/4dev/tests/Convert/CoreLibsConvertStringsTest.php
@@ -671,7 +671,7 @@ final class CoreLibsConvertStringsTest extends TestCase
/**
* Undocumented function
*
- * @covers ::isValidRegexSimple
+ * @covers ::isValidRegex
* @dataProvider isValidRegexSimpleProvider
* @testdox isValidRegexSimple make $input unqiue to $expected [$_dataName]
*
diff --git a/4dev/tests/Create/CoreLibsCreateRandomKeyTest.php b/4dev/tests/Create/CoreLibsCreateRandomKeyTest.php
index 353ec25b..05747e58 100644
--- a/4dev/tests/Create/CoreLibsCreateRandomKeyTest.php
+++ b/4dev/tests/Create/CoreLibsCreateRandomKeyTest.php
@@ -87,7 +87,7 @@ final class CoreLibsCreateRandomKeyTest extends TestCase
/**
* Undocumented function
*
- * @covers ::randomKeyGeyn
+ * @covers ::randomKeyGen
* @dataProvider randomKeyGenProvider
* @testdox randomKeyGen use $input key length $expected [$_dataName]
*
diff --git a/4dev/tests/Create/CoreLibsCreateSessionTest.php b/4dev/tests/Create/CoreLibsCreateSessionTest.php
index 411b610b..864e3f7f 100644
--- a/4dev/tests/Create/CoreLibsCreateSessionTest.php
+++ b/4dev/tests/Create/CoreLibsCreateSessionTest.php
@@ -78,7 +78,6 @@ final class CoreLibsCreateSessionTest extends TestCase
/**
* Test session start
*
- * @covers ::startSession
* @dataProvider sessionProvider
* @testdox startSession $input name for $type will be $expected (error: $expected_error) [$_dataName]
*
diff --git a/4dev/tests/Create/CoreLibsCreateUidsTest.php b/4dev/tests/Create/CoreLibsCreateUidsTest.php
index 308d9640..28779e67 100644
--- a/4dev/tests/Create/CoreLibsCreateUidsTest.php
+++ b/4dev/tests/Create/CoreLibsCreateUidsTest.php
@@ -121,7 +121,6 @@ final class CoreLibsCreateUidsTest extends TestCase
* must match 7e78fe0d-59b8-4637-af7f-e88d221a7d1e
*
* @covers ::uuidv4
- * @covers ::validateUuidv4
* @testdox uuidv4 check that return is matching regex [$_dataName]
*
* @return void
diff --git a/4dev/tests/DB/CoreLibsDBIOTest.php b/4dev/tests/DB/CoreLibsDBIOTest.php
index 3e00db54..fdbd45d3 100644
--- a/4dev/tests/DB/CoreLibsDBIOTest.php
+++ b/4dev/tests/DB/CoreLibsDBIOTest.php
@@ -123,10 +123,16 @@ final class CoreLibsDBIOTest extends TestCase
'log_file_id' => 'CoreLibs-DB-IO-Test',
]);
// will be true, default logging is true
- $db = new \CoreLibs\DB\IO(
- self::$db_config['valid'],
- self::$log
- );
+ try {
+ $db = new \CoreLibs\DB\IO(
+ self::$db_config['valid'],
+ self::$log
+ );
+ } catch (\Exception $e) {
+ self::markTestSkipped(
+ 'Cannot connect to Test DB for DB\IO test: ' . $e->getMessage()
+ );
+ }
if (!$db->dbGetConnectionStatus()) {
self::markTestSkipped(
'Cannot connect to valid Test DB for DB\IO test.'
@@ -543,8 +549,6 @@ final class CoreLibsDBIOTest extends TestCase
/**
* Test dbSetDbug, dbGetDebug
*
- * @covers ::dbGetDbug
- * @covers ::dbSetDebug
* @testdox Set and Get Debug flag
*
* @return void
@@ -3021,8 +3025,6 @@ final class CoreLibsDBIOTest extends TestCase
* @covers ::dbReturnParams
* @covers ::dbCacheReset
* @covers ::dbGetCursorExt
- * @covers ::dbCursorPos
- * @covers ::dbCursorNumRows
* @dataProvider dbReturnProvider
* @testdox dbReturn Read First $read_first_only only and cache $flag_cache and assoc $flag_assoc with (Warning: $warning/Error: $error) [$_dataName]
*
diff --git a/4dev/tests/Debug/CoreLibsDebugFileWriterTest.php b/4dev/tests/Debug/CoreLibsDebugFileWriterTest.php
index 1248e2ea..b42b5964 100644
--- a/4dev/tests/Debug/CoreLibsDebugFileWriterTest.php
+++ b/4dev/tests/Debug/CoreLibsDebugFileWriterTest.php
@@ -13,29 +13,6 @@ use PHPUnit\Framework\TestCase;
*/
final class CoreLibsDebugFileWriterTest extends TestCase
{
- /**
- * Undocumented function
- *
- * @return array
- */
- public function fsetFolderProvider(): array
- {
- return [
- 'valid log folder name' => [
- 0 => '/tmp/',
- 1 => true,
- ],
- 'invalid log folder name' => [
- 0 => 'some name',
- 1 => false,
- ],
- 'not writeable log folder name' => [
- 0 => '/opt',
- 1 => false,
- ]
- ];
- }
-
/**
* Undocumented function
*
@@ -85,18 +62,59 @@ final class CoreLibsDebugFileWriterTest extends TestCase
/**
* Undocumented function
*
- * @dataProvider fsetFolderProvider
- * @testdox fsetFolder $input will match $expected [$_dataName]
+ * @testdox fsetFolder test correct return code
*
- * @param string $input
- * @param boolean $expected
* @return void
*/
- public function testFsetFolder(string $input, bool $expected): void
+ public function testFsetFolder(): void
{
+ // check the following
+ // - valid folder, writeable
+ // - valid folder, not writeable
+ // - invalid folder (eg file)
+ // - invalid folder name (eg contains spaces), must match ^[\w\-\/]+
+
+ // if we have no /tmp/ folder, we cannot test this, so skip the test
+ if (!is_dir('/tmp')) {
+ $this->markTestSkipped('No /tmp folder found, cannot test fsetFolder');
+ }
+ // TEST 3:
+ // create a file in /tmp/ to test invalid folder (eg file)
+ $test_file = '/tmp/somefile.txt';
+ if (!is_file($test_file)) {
+ touch($test_file);
+ }
$this->assertEquals(
- $expected,
- \CoreLibs\Debug\FileWriter::fsetFolder($input)
+ false,
+ \CoreLibs\Debug\FileWriter::fsetFolder($test_file)
+ );
+ // TEST 4:
+ // test invalid folder name (eg contains spaces), must match ^[\w\-\/]+
+ $this->assertEquals(
+ false,
+ \CoreLibs\Debug\FileWriter::fsetFolder('some name')
+ );
+ // TEST 1:
+ // create a folder in /tmp/ to test valid folder, writeable
+ $test_folder = '/tmp/somefolder';
+ if (!is_dir($test_folder)) {
+ mkdir($test_folder);
+ }
+ $this->assertEquals(
+ true,
+ \CoreLibs\Debug\FileWriter::fsetFolder($test_folder)
+ );
+ // TEST 2:
+ // create a folder in /tmp/ to test valid folder, not writeable
+ $test_folder = '/tmp/somefolder2';
+ if (!is_dir($test_folder)) {
+ mkdir($test_folder);
+ }
+ // remove all write permissions for the folder
+ chmod($test_folder, 0555);
+ $this->assertEquals(
+ false,
+ \CoreLibs\Debug\FileWriter::fsetFolder($test_folder)
);
}
diff --git a/4dev/tests/Debug/CoreLibsDebugSupportTest.php b/4dev/tests/Debug/CoreLibsDebugSupportTest.php
index 7b6ed197..e2b9e2ab 100644
--- a/4dev/tests/Debug/CoreLibsDebugSupportTest.php
+++ b/4dev/tests/Debug/CoreLibsDebugSupportTest.php
@@ -48,8 +48,8 @@ final class CoreLibsDebugSupportTest extends TestCase
* @dataProvider printTimeProvider
* @testdox printTime test with $microtime and match to regex [$_dataName]
*
- * @param int|null $mircrotime
- * @param string $expected
+ * @param ?int $microtime
+ * @param string $regex
* @return void
*/
public function testPrintTime(?int $microtime, string $regex): void
@@ -460,10 +460,8 @@ final class CoreLibsDebugSupportTest extends TestCase
* Undocumented function
*
* @cover ::getCallerFileLine
- * @testWith ["vendor/phpunit/phpunit/src/Framework/TestCase.php:6434","phar:///home/clemens/.phive/phars/phpunit-9.6.13.phar/phpunit/Framework/TestCase.php:6434"]
* @testdox getCallerFileLine check based on regex .../Framework/TestCase.php:\d+ [$_dataName]
*
- * @param string $expected
* @return void
*/
public function testGetCallerFileLine(): void
@@ -471,15 +469,19 @@ final class CoreLibsDebugSupportTest extends TestCase
// regex prefix with path "/../" and then fixed vendor + \d+
// or phar start if phiev installed
// phar:///home/clemens/.phive/phars/phpunit-9.6.13.phar/phpunit/Framework/TestCase.php
+ // phar:///usr/local/bin/phpunit/phpunit/Framework/TestCase.php
$regex = "/^("
. "\/.*\/vendor\/phpunit\/phpunit\/src"
. "|"
. "phar:\/\/\/.*\.phive\/phars\/phpunit-\d+\.\d+\.\d+\.phar\/phpunit"
+ . "|"
+ . "phar:\/\/\/usr\/local\/bin\/phpunit\/phpunit"
. ")"
. "\/Framework\/TestCase.php:\d+$/";
$this->assertMatchesRegularExpression(
$regex,
- Support::getCallerFileLine()
+ Support::getCallerFileLine(),
+ 'Failed for: ' . Support::getCallerFileLine()
);
}
@@ -522,7 +524,7 @@ final class CoreLibsDebugSupportTest extends TestCase
$this->assertEquals(
$expected,
$compare,
- 'assert expected 10'
+ 'assert expected 10: ' . print_r($compare, true)
);
break;
case 11:
@@ -545,27 +547,38 @@ final class CoreLibsDebugSupportTest extends TestCase
$this->assertEquals(
$expected,
$compare,
- 'assert expected 11'
+ 'assert expected 11: ' . print_r($compare, true)
);
break;
case 12:
- // add two "run" before "runBare"
- array_splice(
- $expected,
- 7,
- 0,
- ['run']
- );
- array_splice(
- $expected,
- 0,
- 0,
- ['include']
- );
+ // if compare starts with "main"
+ if ($compare[0] == 'main') {
+ // add two more run after main
+ array_splice(
+ $expected,
+ 1,
+ 0,
+ ['run', 'run']
+ );
+ } else {
+ // add two "run" before "runBare"
+ array_splice(
+ $expected,
+ 7,
+ 0,
+ ['run']
+ );
+ array_splice(
+ $expected,
+ 0,
+ 0,
+ ['include']
+ );
+ }
$this->assertEquals(
$expected,
$compare,
- 'assert expected 12'
+ 'assert expected 12: ' . print_r($compare, true)
);
break;
default:
@@ -589,7 +602,7 @@ final class CoreLibsDebugSupportTest extends TestCase
if ($call_stack < 8) {
$this->assertFalse(true, 'getCallStack too low: 8');
} else {
- $this->assertTrue(true, 'getCallSteck ok');
+ $this->assertTrue(true, 'getCallStack ok');
}
// just test top entry
$first = array_shift($call_stack);
diff --git a/4dev/tests/Get/dotenv/.env b/4dev/tests/Get/dotenv/.env
new file mode 120000
index 00000000..a67af1f7
--- /dev/null
+++ b/4dev/tests/Get/dotenv/.env
@@ -0,0 +1 @@
+test.env
\ No newline at end of file
diff --git a/4dev/tests/Language/CoreLibsLanguageL10nTest.php b/4dev/tests/Language/CoreLibsLanguageL10nTest.php
index ca1e0888..ff882901 100644
--- a/4dev/tests/Language/CoreLibsLanguageL10nTest.php
+++ b/4dev/tests/Language/CoreLibsLanguageL10nTest.php
@@ -442,7 +442,6 @@ final class CoreLibsLanguageL10nTest extends TestCase
* init check and connected change translation
*
* @covers ::getTranslator
- * @covers ::l10nReloadMOfile
* @dataProvider getTranslatorProvider
* @testdox change locale from $locale and domain $domain to locale $locale_new and domain $domain_new [$_dataName]
*
@@ -639,7 +638,7 @@ final class CoreLibsLanguageL10nTest extends TestCase
* plural and plural context
*
* @covers ::__n
- * @covers ::__pn
+ * @covers ::__np
* @dataProvider ngettextProvider
* @testdox plural string test for locale $locale and domain $domain with $context [$_dataName]
*
@@ -865,6 +864,7 @@ final class CoreLibsLanguageL10nTest extends TestCase
string $value,
string $expected
): void {
+ $old_value = null;
switch ($type) {
case 'global':
$GLOBALS[$var] = $value;
@@ -1101,11 +1101,11 @@ final class CoreLibsLanguageL10nTest extends TestCase
* fuctions check
* TODO: others d/dn/dp/dnp gettext functions
*
- * @covers __setlocale
- * @covers __bindtextdomain
- * @covers __bind_textdomain_codeset
- * @covers __textdomain
- * @covers __gettext
+ * @covers _setlocale
+ * @covers _bindtextdomain
+ * @covers _bind_textdomain_codeset
+ * @covers _textdomain
+ * @covers _gettext
* @covers __
* @dataProvider functionsProvider
* @testdox check functions with locale $locale and domain $domain [$_dataName]
diff --git a/4dev/tests/Logging/CoreLibsLoggingLoggingTest.php b/4dev/tests/Logging/CoreLibsLoggingLoggingTest.php
index d1792d6d..cd6d8ed4 100644
--- a/4dev/tests/Logging/CoreLibsLoggingLoggingTest.php
+++ b/4dev/tests/Logging/CoreLibsLoggingLoggingTest.php
@@ -514,7 +514,6 @@ final class CoreLibsLoggingLoggingTest extends TestCase
/**
* Undocumented function
*
- * @covers Logger\Flag
* @testdox Logger\Flag enum test
*
* @return void
@@ -828,6 +827,7 @@ final class CoreLibsLoggingLoggingTest extends TestCase
// clean all data in folder first
array_map('unlink', glob($log->getLogFolder() . $log->getLogFileId() . '*.log'));
+ $log_status = false;
switch ($level->value) {
case 200:
$log_status = $log->info($message);
@@ -851,7 +851,7 @@ final class CoreLibsLoggingLoggingTest extends TestCase
$log_status = $log->emergency($message);
break;
}
- $this->assertTrue($log_status, 'log write successful');
+ $this->assertTrue($log_status, 'log write unsuccessful for level: ' . $level->getName());
$file_content = file_get_contents(
$log->getLogFolder() . $log->getLogFile()
) ?: '';
diff --git a/4dev/tests/Security/CoreLibsSecurityAsymmetricAnonymousEncryptionTest.php b/4dev/tests/Security/CoreLibsSecurityAsymmetricAnonymousEncryptionTest.php
index d5d6b461..d6997cb0 100644
--- a/4dev/tests/Security/CoreLibsSecurityAsymmetricAnonymousEncryptionTest.php
+++ b/4dev/tests/Security/CoreLibsSecurityAsymmetricAnonymousEncryptionTest.php
@@ -334,7 +334,6 @@ final class CoreLibsSecurityAsymmetricAnonymousEncryptionTest extends TestCase
/**
* test encrypt/decrypt produce correct output
*
- * @covers ::generateRandomKey
* @covers ::encrypt
* @covers ::decrypt
* @dataProvider providerEncryptDecryptSuccess
@@ -370,7 +369,6 @@ final class CoreLibsSecurityAsymmetricAnonymousEncryptionTest extends TestCase
/**
* test encrypt/decrypt produce correct output
*
- * @covers ::generateRandomKey
* @covers ::encrypt
* @covers ::decrypt
* @dataProvider providerEncryptDecryptSuccess
@@ -397,7 +395,6 @@ final class CoreLibsSecurityAsymmetricAnonymousEncryptionTest extends TestCase
/**
* test encrypt/decrypt produce correct output
*
- * @covers ::generateRandomKey
* @covers ::encrypt
* @covers ::decrypt
* @dataProvider providerEncryptDecryptSuccess
@@ -424,7 +421,6 @@ final class CoreLibsSecurityAsymmetricAnonymousEncryptionTest extends TestCase
/**
* test encrypt/decrypt produce correct output
*
- * @covers ::generateRandomKey
* @covers ::encrypt
* @covers ::decrypt
* @dataProvider providerEncryptDecryptSuccess
@@ -469,7 +465,6 @@ final class CoreLibsSecurityAsymmetricAnonymousEncryptionTest extends TestCase
/**
* Test decryption with wrong key
*
- * @covers ::generateRandomKey
* @covers ::encrypt
* @covers ::decrypt
* @dataProvider providerEncryptFailed
@@ -496,7 +491,6 @@ final class CoreLibsSecurityAsymmetricAnonymousEncryptionTest extends TestCase
/**
* Test decryption with wrong key
*
- * @covers ::generateRandomKey
* @covers ::encrypt
* @covers ::decrypt
* @dataProvider providerEncryptFailed
@@ -521,7 +515,6 @@ final class CoreLibsSecurityAsymmetricAnonymousEncryptionTest extends TestCase
/**
* Test decryption with wrong key
*
- * @covers ::generateRandomKey
* @covers ::encrypt
* @covers ::decrypt
* @dataProvider providerEncryptFailed
diff --git a/4dev/tests/Security/CoreLibsSecuritySymmetricEncryptionTest.php b/4dev/tests/Security/CoreLibsSecuritySymmetricEncryptionTest.php
index 1251a6da..f9ec3816 100644
--- a/4dev/tests/Security/CoreLibsSecuritySymmetricEncryptionTest.php
+++ b/4dev/tests/Security/CoreLibsSecuritySymmetricEncryptionTest.php
@@ -104,7 +104,6 @@ final class CoreLibsSecuritySymmetricEncryptionTest extends TestCase
/**
* test encrypt/decrypt produce correct output
*
- * @covers ::generateRandomKey
* @covers ::encrypt
* @covers ::decrypt
* @dataProvider providerEncryptDecryptSuccess
@@ -132,7 +131,6 @@ final class CoreLibsSecuritySymmetricEncryptionTest extends TestCase
/**
* test encrypt/decrypt produce correct output
*
- * @covers ::generateRandomKey
* @covers ::encrypt
* @covers ::decrypt
* @dataProvider providerEncryptDecryptSuccess
@@ -158,7 +156,6 @@ final class CoreLibsSecuritySymmetricEncryptionTest extends TestCase
/**
* test encrypt/decrypt produce correct output
*
- * @covers ::generateRandomKey
* @covers ::encryptKey
* @covers ::decryptKey
* @dataProvider providerEncryptDecryptSuccess
@@ -202,7 +199,6 @@ final class CoreLibsSecuritySymmetricEncryptionTest extends TestCase
/**
* Test decryption with wrong key
*
- * @covers ::generateRandomKey
* @covers ::encrypt
* @covers ::decrypt
* @dataProvider providerEncryptFailed
@@ -228,7 +224,6 @@ final class CoreLibsSecuritySymmetricEncryptionTest extends TestCase
/**
* Test decryption with wrong key
*
- * @covers ::generateRandomKey
* @covers ::encrypt
* @covers ::decrypt
* @dataProvider providerEncryptFailed
@@ -252,7 +247,6 @@ final class CoreLibsSecuritySymmetricEncryptionTest extends TestCase
/**
* Test decryption with wrong key
*
- * @covers ::generateRandomKey
* @covers ::encryptKey
* @covers ::decryptKey
* @dataProvider providerEncryptFailed
diff --git a/4dev/tests/Template/CoreLibsTemplateHtmlBuilderElementTest.php b/4dev/tests/Template/CoreLibsTemplateHtmlBuilderElementTest.php
index 7c96e32f..80f1b34f 100644
--- a/4dev/tests/Template/CoreLibsTemplateHtmlBuilderElementTest.php
+++ b/4dev/tests/Template/CoreLibsTemplateHtmlBuilderElementTest.php
@@ -42,7 +42,6 @@ final class CoreLibsTemplateHtmlBuilderElementTest extends TestCase
/**
* Undocumented function
*
- * @covers ::Element
* @covers ::buildHtml
* @covers ::getTag
* @covers ::getId
diff --git a/4dev/tests/UrlRequests/CoreLibsUrlRequestsCurlTest.php b/4dev/tests/UrlRequests/CoreLibsUrlRequestsCurlTest.php
index 75c7a14c..c00789cb 100644
--- a/4dev/tests/UrlRequests/CoreLibsUrlRequestsCurlTest.php
+++ b/4dev/tests/UrlRequests/CoreLibsUrlRequestsCurlTest.php
@@ -58,6 +58,11 @@ final class CoreLibsUrlRequestsCurlTest extends TestCase
if ($handle === false) {
continue;
}
+ curl_setopt($handle, CURLOPT_RETURNTRANSFER, true);
+ $status = curl_exec($handle);
+ if ($status === false) {
+ continue;
+ }
$this->url_basic = $url;
// print "Open: $url\n";
break;
@@ -459,20 +464,19 @@ final class CoreLibsUrlRequestsCurlTest extends TestCase
/**
* set setup + header, base uri change
*
- * @covers ::Curl
* @covers ::setBaseUri
- * @covers ::addHeader
- * @covers ::removeHEader
+ * @covers ::setHeaders
+ * @covers ::removeHeaders
* @dataProvider providerUrlRequestsCurlSetup
* @testdox UrlRequests\Curl Class setup tasks [$_dataName]
*
- * @param null|array $config
- * @param array $expected
- * @param null|string $new_base_uri
- * @param null|array $set_header
- * @param null|bool $set_header_add
- * @param null|array $remove_header
- * @param null|array $expected_change
+ * @param null|array $config
+ * @param array $expected_set
+ * @param null|string $new_base_uri
+ * @param null|array $set_header
+ * @param null|bool $set_header_add
+ * @param null|array $remove_header
+ * @param null|array $expected_change
* @return void
*/
public function testUrlRequestsCurlSetupConfig(
@@ -492,10 +496,18 @@ final class CoreLibsUrlRequestsCurlTest extends TestCase
};
// if ($new_base_uri === null && $set_header === null && $remove_header === null) {
// }
- $this->assertEquals($expected_set, $curl->getConfig(), 'Class setup config mismatch');
+ $this->assertEquals(
+ $expected_set,
+ $curl->getConfig(),
+ 'Class setup config mismatch'
+ );
if ($new_base_uri !== null) {
$curl->setBaseUri($new_base_uri);
- $this->assertEquals($expected_change, $curl->getConfig(), 'new base_uri not matching');
+ $this->assertEquals(
+ $expected_change,
+ $curl->getConfig(),
+ 'new base_uri not matching'
+ );
}
if ($set_header !== null) {
if ($set_header_add !== null) {
@@ -503,11 +515,19 @@ final class CoreLibsUrlRequestsCurlTest extends TestCase
} else {
$curl->setHeaders($set_header);
}
- $this->assertEquals($expected_change, $curl->getConfig(), 'new headers not matching');
+ $this->assertEquals(
+ $expected_change,
+ $curl->getConfig(),
+ 'new headers not matching'
+ );
}
if ($remove_header !== null) {
$curl->removeHeaders($remove_header);
- $this->assertEquals($expected_change, $curl->getConfig(), 'removed headers not matching');
+ $this->assertEquals(
+ $expected_change,
+ $curl->getConfig(),
+ 'removed headers not matching'
+ );
}
}
@@ -877,7 +897,7 @@ final class CoreLibsUrlRequestsCurlTest extends TestCase
string $return_content
) {
if (!$this->url_basic) {
- $this->markTestSkipped('No backend interface setup for testing: GET');
+ $this->markTestSkipped('No backend interface setup for testing');
}
$curl = new \CoreLibs\UrlRequests\Curl();
// options
@@ -960,6 +980,9 @@ final class CoreLibsUrlRequestsCurlTest extends TestCase
*/
public function testUrlRequestsCurlRequestMultiple()
{
+ if (!$this->url_basic) {
+ $this->markTestSkipped('No backend interface setup for testing');
+ }
$curl = new \CoreLibs\UrlRequests\Curl();
// get
$response = $curl->get($this->url_basic, [
@@ -1051,6 +1074,9 @@ final class CoreLibsUrlRequestsCurlTest extends TestCase
*/
public function testUrlRequestsCurlAuthHeader()
{
+ if (!$this->url_basic) {
+ $this->markTestSkipped('No backend interface setup for testing');
+ }
$curl = new \CoreLibs\UrlRequests\Curl([
"auth" => ["user", "pass", "basic"],
"http_errors" => false,
@@ -1117,6 +1143,9 @@ final class CoreLibsUrlRequestsCurlTest extends TestCase
*/
public function testExceptionInvalidHeaderKey(): void
{
+ if (!$this->url_basic) {
+ $this->markTestSkipped('No backend interface setup for testing');
+ }
$curl = new \CoreLibs\UrlRequests\Curl();
$this->expectException(\RuntimeException::class);
$this->expectExceptionMessageMatches("/InvalidHeaderKey/");
@@ -1137,6 +1166,9 @@ final class CoreLibsUrlRequestsCurlTest extends TestCase
*/
public function testExceptionInvalidHeaderValue(): void
{
+ if (!$this->url_basic) {
+ $this->markTestSkipped('No backend interface setup for testing');
+ }
$curl = new \CoreLibs\UrlRequests\Curl();
$this->expectException(\RuntimeException::class);
$this->expectExceptionMessageMatches("/InvalidHeaderValue/");
@@ -1186,6 +1218,9 @@ final class CoreLibsUrlRequestsCurlTest extends TestCase
*/
public function testExceptionBadRequest(): void
{
+ if (!$this->url_basic) {
+ $this->markTestSkipped('No backend interface setup for testing');
+ }
$curl = new \CoreLibs\UrlRequests\Curl(["http_errors" => true]);
$this->expectException(\RuntimeException::class);
$this->expectExceptionMessageMatches("/ClientError/");
@@ -1207,6 +1242,9 @@ final class CoreLibsUrlRequestsCurlTest extends TestCase
*/
public function testExceptionBadRequestEnable(): void
{
+ if (!$this->url_basic) {
+ $this->markTestSkipped('No backend interface setup for testing');
+ }
$curl = new \CoreLibs\UrlRequests\Curl(["http_errors" => false]);
$this->expectException(\RuntimeException::class);
$this->expectExceptionMessageMatches("/ClientError/");
@@ -1229,6 +1267,9 @@ final class CoreLibsUrlRequestsCurlTest extends TestCase
*/
public function testExceptionBadRequestUnset(): void
{
+ if (!$this->url_basic) {
+ $this->markTestSkipped('No backend interface setup for testing');
+ }
// if true, with false it has to be off
$curl = new \CoreLibs\UrlRequests\Curl(["http_errors" => true]);
$response = $curl->request('get', $this->url_basic, [
diff --git a/README.md b/README.md
index b3ddd145..03ba64ba 100644
--- a/README.md
+++ b/README.md
@@ -124,3 +124,11 @@ The development for those files is located in a different repository
General:
Org:
+
+### Update NPM packages
+
+```sh
+npm-check-updates
+ncu -u
+npm install
+```
diff --git a/eslint.config.mjs b/eslint.config.mjs
index ff91f7eb..e121b33d 100644
--- a/eslint.config.mjs
+++ b/eslint.config.mjs
@@ -18,6 +18,10 @@ export default [
globals: {
...globals.browser,
...globals.jquery
+ },
+ parserOptions: {
+ ecmaVersion: 2022,
+ sourceType: "script",
}
}},
pluginJs.configs.recommended,
diff --git a/package.json b/package.json
index af2d2ff1..e827b621 100644
--- a/package.json
+++ b/package.json
@@ -9,9 +9,9 @@
"license": "",
"description": "Core Libraries",
"devDependencies": {
- "@eslint/js": "^9.20.0",
- "esbuild": "^0.25.0",
- "eslint": "^9.20.1",
- "globals": "^15.15.0"
+ "@eslint/js": "^10.0.1",
+ "esbuild": "^0.28.1",
+ "eslint": "^10.5.0",
+ "globals": "^17.7.0"
}
}
diff --git a/phpunit.xml b/phpunit.xml
index f8d2d723..6239ab57 100644
--- a/phpunit.xml
+++ b/phpunit.xml
@@ -23,4 +23,10 @@
./www/lib/CoreLibs
-->
+
+
+
+
+
+
diff --git a/www/admin/class_test.file.php b/www/admin/class_test.file.php
index 890adad6..bf1f8a18 100644
--- a/www/admin/class_test.file.php
+++ b/www/admin/class_test.file.php
@@ -38,6 +38,25 @@ print "GETFILENAMEENDING: $file: " . File::getFilenameEnding($file) . "
";
$file = getcwd() . DIRECTORY_SEPARATOR . 'class_test.file.php';
print "GETLINESFROMFILE: $file: " . File::getLinesFromFile($file) . "
";
print "MIMEINFO: $file: " . File::getMimeType($file) . "
";
+try {
+ print "MIMEINFO: does_not_exists.txt " . File::getMimeType("does_not_exists.txt") . "
";
+} catch (\Exception $e) {
+ print "Error: " . get_class($e) . ": " . $e->getMessage() . "
";
+}
+
+$files = [
+ 'layout/css/edit.css',
+ 'layout/javascript/edit.jq.js',
+ 'class_test.file.php',
+ getcwd() . DIRECTORY_SEPARATOR . 'class_test.file.php',
+];
+foreach ($files as $file) {
+ try {
+ print "MIMEINFO: $file: " . File::getMimeType($file) . "
";
+ } catch (\Exception $e) {
+ print "Error: " . get_class($e) . ": " . $e->getMessage() . "
";
+ }
+}
print "