Compare commits

...

7 Commits

Author SHA1 Message Date
cliphouse de912d837e DB IO postgresql: supress warning on connection failure 2026-06-25 18:24:00 +09:00
cliphouse d991a1d663 Test updates 2026-06-25 18:10:44 +09:00
cliphouse e881854583 Test updates 2026-06-25 17:26:48 +09:00
cliphouse 55aebb5373 Test updates 2026-06-25 16:42:02 +09:00
cliphouse 6aa79dacc9 Test updates 2026-06-25 16:28:03 +09:00
cliphouse c0236ee4d9 Test updates 2026-06-25 15:55:20 +09:00
cliphouse 8c5ce49f70 Github action call updates 2026-06-25 15:35:55 +09:00
24 changed files with 267 additions and 184 deletions
@@ -8,8 +8,8 @@ on:
jobs:
call-check-and-build-local:
# call local workflow if repository name is NOT CoreLibs-Composer-All
if: github.event.repository.name != 'CoreLibs-Composer-All'
# call local workflow if repository name is NOT Composer.corelibs-composer-all
if: github.event.repository.name != 'Composer.corelibs-composer-all'
uses: ./.github/workflows/php-static-checks-and-tests.yml
with:
php-version: '8.4,8.5'
@@ -22,8 +22,8 @@ jobs:
opj-package-api-key: ${{ secrets.OPJ_PACKAGE_API_KEY }}
call-check-and-build-remote:
# call remote workflow if repository name is CoreLibs-Composer-All
if: github.event.repository.name == 'CoreLibs-Composer-All'
# call remote workflow if repository name is Composer.corelibs-composer-all
if: github.event.repository.name == 'Composer.corelibs-composer-all'
uses: OmnicomProduction-Japan/Content.github-actions/.github/workflows/php-static-checks-and-tests.yml@v1
with:
php-version: '8.4,8.5'
@@ -194,11 +194,23 @@ jobs:
- name: Test with phpunit
id: run-phpunit
run: |
phpunit --colors=never \
--no-coverage \
--coverage-text=phpunit-coverage.txt \
--only-summary-for-coverage-text \
--coverage-openclover=phpunit-openclover.xml
# if we are older than 12 there is no openclover
# version can start with ^ and then have numbers, so we need to remove the ^ and then compare the version numbers
phpunit_version="${{ matrix.phpunit-version }}"
phpunit_version="${phpunit_version#^}"
phpunit_version="${phpunit_version%%.*}"
if [ "$phpunit_version" -lt 12 ]; then
phpunit --colors=never \
--no-coverage \
--coverage-text=phpunit-coverage.txt \
--coverage-clover=phpunit-openclover.xml
else
phpunit --colors=never \
--no-coverage \
--coverage-text=phpunit-coverage.txt \
--only-summary-for-coverage-text \
--coverage-openclover=phpunit-openclover.xml
fi;
- name: Code Coverage Summary Report
uses: saschanowak/CloverCodeCoverageSummary@1.1.1
@@ -248,33 +260,6 @@ jobs:
</details>
EOF
if [ -f phpunit-coverage.txt ]; then
{
echo "<h3>Code Coverage</h3>"
echo ""
echo "| Metric | Coverage | Status |"
echo "| --- | --- | --- |"
grep -E '^\s+(Classes|Methods|Lines):' phpunit-coverage.txt | head -3 | while IFS= read -r line; do
name=$(echo "$line" | sed 's/^[[:space:]]*//' | cut -d: -f1)
value=$(echo "$line" | cut -d: -f2- | sed 's/^[[:space:]]*//')
pct=$(echo "$value" | grep -oE '[0-9]+\.[0-9]+' | head -1)
circle=$(awk -v p="$pct" 'BEGIN { if (p+0 == 100) print "🟢"; else if (p+0 >= 60) print "🟠"; else print "🔴" }')
echo "| $name | $value | $circle |"
done
echo ""
echo "<details><summary>Full coverage report</summary>"
echo ""
echo '```'
cat phpunit-coverage.txt
echo '```'
echo ""
echo "</details>"
} >> $GITHUB_STEP_SUMMARY
fi
cat code-coverage-summary.md >> $GITHUB_STEP_SUMMARY
cat code-coverage-details.md >> $GITHUB_STEP_SUMMARY
if [ -f "$COMPOSER_AUDIT_FILE" ] && jq empty "$COMPOSER_AUDIT_FILE" 2>/dev/null; then
{
echo "<h3>Composer Audit</h3>"
@@ -307,3 +292,37 @@ jobs:
echo "</details>"
} >> $GITHUB_STEP_SUMMARY
fi
if [ -f phpunit-coverage.txt ]; then
{
echo "<h3>Code Coverage</h3>"
echo ""
echo "| Metric | Coverage | Status |"
echo "| --- | --- | --- |"
grep -E '^\s+(Classes|Methods|Lines):' phpunit-coverage.txt | head -3 | while IFS= read -r line; do
name=$(echo "$line" | sed 's/^[[:space:]]*//' | cut -d: -f1)
value=$(echo "$line" | cut -d: -f2- | sed 's/^[[:space:]]*//')
pct=$(echo "$value" | grep -oE '[0-9]+\.[0-9]+' | head -1)
circle=$(awk -v p="$pct" 'BEGIN { if (p+0 == 100) print "🟢"; else if (p+0 >= 60) print "🟠"; else print "🔴" }')
echo "| $name | $value | $circle |"
done
echo ""
echo "<details><summary>Full coverage report</summary>"
echo ""
echo '```'
cat phpunit-coverage.txt
echo '```'
echo ""
echo "</details>"
} >> $GITHUB_STEP_SUMMARY
fi
if [ -f phpunit-openclover.xml ]; then
if [ -f code-coverage-summary.md ]; then
cat code-coverage-summary.md >> $GITHUB_STEP_SUMMARY
fi
if [ -f code-coverage-details.md ]; then
cat code-coverage-details.md >> $GITHUB_STEP_SUMMARY
fi
fi
+1 -6
View File
@@ -12,15 +12,10 @@
</testsuites>
<coverage processUncoveredFiles="true">
<include>
<directory suffix=".php">./www/lib/CoreLibs</directory>
<directory suffix=".php">./src</directory>
</include>
<!-- <report>
<html outputDirectory="build/coverage-report"/>
</report> -->
</coverage>
<!-- <source>
<include>
<directory>./src</directory>
</include>
</source> -->
</phpunit>
+1 -1
View File
@@ -536,7 +536,7 @@ class PgSQL implements Interface\SqlFunctions
$connection_string[] = 'sslmode=' . $db_ssl;
}
// connect
$this->dbh = pg_connect(join(' ', $connection_string));
$this->dbh = @pg_connect(join(' ', $connection_string));
return $this->dbh;
}
+4 -4
View File
@@ -32,11 +32,11 @@ class FileWriter
if (!is_writeable($folder)) {
return false;
}
// if last is not / then add
if (substr($folder, -1, 1) != DIRECTORY_SEPARATOR) {
$folder .= DIRECTORY_SEPARATOR;
if (!is_dir($folder)) {
return false;
}
self::$debug_folder = $folder;
// if last is not / then add
self::$debug_folder = rtrim($folder, DIRECTORY_SEPARATOR) . DIRECTORY_SEPARATOR;
return true;
}
@@ -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);
}
}
+21 -15
View File
@@ -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;
@@ -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;
@@ -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]
*
@@ -1,4 +1,4 @@
<?php
<?php // phpcs:disable Generic.Files.LineLength
declare(strict_types=1);
@@ -71,15 +71,16 @@ final class CoreLibsCombinedDateTimeTest extends TestCase
*
* @covers ::dateStringFormat
* @dataProvider timestampProvider
* @testdox dateStringFormat $input (microtime $flag) will be $expected [$_dataName]
* @testdox dateStringFormat $input (mt $flag_show_micro, float mt $flag_micro_as_float) will be $expected [$_dataName]
*
* @param int|float $input
* @param bool $flag
* @param bool $flag_show_micro
* @param bool $flag_micro_as_float
* @param string $expected
* @return void
*/
public function testDateStringFormat(
$input,
int|float $input,
bool $flag_show_micro,
bool $flag_micro_as_float,
string $expected
@@ -101,7 +101,7 @@ final class CoreLibsConvertColorTest extends TestCase
* @covers ::rgbToHwb
* @covers ::hsbToRgb
* @covers ::hslToRgb
* @covers ::hwebToRgb
* @covers ::hwbToRgb
* @testdox Convert from and to RGB via HSL, HWB, HSB/V
*
* @return void
@@ -298,7 +298,6 @@ final class CoreLibsConvertColorTest extends TestCase
/**
* Undocumented function
*
* @covers ::returnAsHex()
* @testdox Convert from and to RGB via hex
*
* @return void
@@ -342,8 +341,6 @@ final class CoreLibsConvertColorTest extends TestCase
/**
* linear RGB conversion tests
*
* @covers ::fromLinear
* @covers ::toLinear
* @testdox Convert from and to RGB linear conversion check
*
* @return void
@@ -933,7 +930,6 @@ final class CoreLibsConvertColorTest extends TestCase
/**
* Undocumented function
*
* @covers ::__get
* @testdox Exception handling for RGB general calls
*
* @return void
@@ -958,7 +954,6 @@ final class CoreLibsConvertColorTest extends TestCase
/**
* Undocumented function
*
* @covers ::setFromHex
* @testdox Exception handling for RGB setFromHex failues
*
* @return void
@@ -1086,7 +1081,6 @@ final class CoreLibsConvertColorTest extends TestCase
/**
* Undocumented function
*
* @covers ::__get
* @testdox Exception handling for Lab general calls
*
* @return void
@@ -1120,7 +1114,6 @@ final class CoreLibsConvertColorTest extends TestCase
/**
* Undocumented function
*
* @covers ::__get
* @testdox Exception handling for LCH general calls
*
* @return void
@@ -1155,7 +1148,6 @@ final class CoreLibsConvertColorTest extends TestCase
/**
* Undocumented function
*
* @covers ::__get
* @testdox Exception handling for XYZ general calls
*
* @return void
@@ -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]
*
@@ -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]
*
@@ -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]
*
@@ -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
+10 -8
View File
@@ -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]
*
@@ -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)
);
}
+33 -20
View File
@@ -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,7 +460,6 @@ 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]
*
* @return void
@@ -470,10 +469,13 @@ 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(
@@ -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);
@@ -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]
@@ -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()
) ?: '';
@@ -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
@@ -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
@@ -42,7 +42,6 @@ final class CoreLibsTemplateHtmlBuilderElementTest extends TestCase
/**
* Undocumented function
*
* @covers ::Element
* @covers ::buildHtml
* @covers ::getTag
* @covers ::getId
@@ -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<string,mixed> $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, [