Update PostgreSQL DB libs for PHP 8.1, update PHP version check

PHP version check now works with only max too, if called with (null,
'1.2.3') then php version will be checked <= 1.2.3

Debug Support has a to string print method printToString which tries to
print all types of var content as string (bool, int, float, resource,
object, etc)
Debug Support printAr supports ##HTMLPRE## style too (flag true)

DB/IO + PgSQL is changed from is_resource check to "false" check to be
compatible with new PHP 8.1 pgsql connect interface where all resources
are changed to objects PgSql\Connect|Resource|...
This commit is contained in:
Clemens Schwaighofer
2022-01-19 15:20:46 +09:00
parent 4a51f841c5
commit 33766e1e2d
10 changed files with 262 additions and 90 deletions

View File

@@ -62,6 +62,67 @@ final class CoreLibsDebugSupportTest extends TestCase
];
}
public function printToStringProvider(): array
{
return [
'string' => [
'a string',
null,
'a string',
],
'a number' => [
1234,
null,
'1234',
],
'a float number' => [
1234.5678,
null,
'1234.5678',
],
'bool true' => [
true,
null,
'TRUE',
],
'bool false' => [
false,
null,
'FALSE',
],
'an array default' => [
['a', 'b'],
null,
"<pre>Array\n(\n"
. " [0] => a\n"
. " [1] => b\n"
. ")\n</pre>",
],
'an array, no html' => [
['a', 'b'],
true,
"##HTMLPRE##"
. "Array\n(\n"
. " [0] => a\n"
. " [1] => b\n"
. ")\n"
. "##/HTMLPRE##",
],
// resource
'a resource' => [
tmpfile(),
null,
'/^Resource id #\d+$/',
],
// object
'an object' => [
new \CoreLibs\Debug\Support(),
null,
'CoreLibs\Debug\Support',
]
];
}
/**
* Undocumented function
*
@@ -119,7 +180,7 @@ final class CoreLibsDebugSupportTest extends TestCase
*
* @cover ::printAr
* @dataProvider printArProvider
* @testdox printAr $input will be $expected[$_dataName]
* @testdox printAr $input will be $expected [$_dataName]
*
* @param array $input
* @param string $expected
@@ -133,6 +194,41 @@ final class CoreLibsDebugSupportTest extends TestCase
);
}
/**
* Undocumented function
*
* @cover ::printToString
* @dataProvider printToStringProvider
* @testdox printToString $input with $flag will be $expected [$_dataName]
*
* @param mixed $input
* @param boolean|null $flag
* @param string $expected
* @return void
*/
public function testPrintToString($input, ?bool $flag, string $expected): void
{
if ($flag === null) {
// if expected starts with / and ends with / then this is a regex compare
if (substr($expected, 0, 1) == '/' && substr($expected, -1, 1) == '/') {
$this->assertMatchesRegularExpression(
$expected,
\CoreLibs\Debug\Support::printToString($input)
);
} else {
$this->assertEquals(
$expected,
\CoreLibs\Debug\Support::printToString($input)
);
}
} else {
$this->assertEquals(
$expected,
\CoreLibs\Debug\Support::printToString($input, $flag)
);
}
}
/**
* Undocumented function
*