Compare commits

...

7 Commits

Author SHA1 Message Date
Clemens Schwaighofer
b022662dfc Removed restrictions for printAr to only accept arrays
print_r call takes any value, changed that for all functions

array -> mixed
2023-06-01 12:00:20 +09:00
Clemens Schwaighofer
3039ebf913 Unlink files after test 2023-06-01 11:02:53 +09:00
Clemens Schwaighofer
e2e080c404 Bug fix for DB\IO 2023-06-01 10:58:11 +09:00
Clemens Schwaighofer
4671143d1c phpunit debug fixes 2023-06-01 09:13:59 +09:00
Clemens Schwaighofer
b492558cca Logging unit test regex fix 2023-06-01 08:54:47 +09:00
Clemens Schwaighofer
64e76530d4 deprecated log method call name change in test file 2023-06-01 08:43:47 +09:00
Clemens Schwaighofer
0b93f9f146 Bug fixes and minor updates
- Removed echo from Support Debug dumpVar call
- deprecated DB\IO toggle dbDebug and changed set/get to be like normal
  ones where set just sets and doesn't return anything
- Renamed the logJsDebug to loggingLevelIsDebug
  (other levels can be checked with ->getLoggingLevel()->includes(Level::...))

Adjusted tests for all changes
2023-06-01 08:40:55 +09:00
9 changed files with 98 additions and 119 deletions

View File

@@ -99,7 +99,6 @@ final class CoreLibsDBIOTest extends TestCase
], ],
]; ];
private static $log; private static $log;
private static bool $db_debug = false;
/** /**
* Test if pgsql module loaded * Test if pgsql module loaded
@@ -123,7 +122,6 @@ final class CoreLibsDBIOTest extends TestCase
'log_file_id' => 'CoreLibs-DB-IO-Test', 'log_file_id' => 'CoreLibs-DB-IO-Test',
]); ]);
// will be true, default logging is true // will be true, default logging is true
self::$db_debug = self::$log->getLoggingLevel()->includes(Level::Debug);
$db = new \CoreLibs\DB\IO( $db = new \CoreLibs\DB\IO(
self::$db_config['valid'], self::$db_config['valid'],
self::$log self::$log
@@ -521,6 +519,9 @@ final class CoreLibsDBIOTest extends TestCase
*/ */
public function debugSetProvider(): array public function debugSetProvider(): array
{ {
// 0: db connecdtion
// 1: override log flag, null for default
// 2: set flag
return [ return [
'default debug set' => [ 'default debug set' => [
// what base connection // what base connection
@@ -538,95 +539,46 @@ final class CoreLibsDBIOTest extends TestCase
]; ];
} }
/**
* test set for toggleDEbug
*
* @return array
*/
public function debugToggleProvider(): array
{
return [
'default debug set' => [
// what base connection
'valid',
// actions
null,
// toggle is inverse
self::$db_debug ? true : false,
],
'toggle debug to false' => [
'valid',
false,
false,
]
];
}
/** /**
* Test dbSetDbug, dbGetDebug * Test dbSetDbug, dbGetDebug
* *
* @covers ::dbGetDbug * @covers ::dbGetDbug
* @covers ::dbSetDebug * @covers ::dbSetDebug
* @dataProvider debugSetProvider * @testdox Set and Get Debug flag
* @testdox Setting debug $set will be $expected [$_dataName]
* *
* @return void * @return void
*/ */
public function testDbSetDebug( public function testDbSetDebug(): void
string $connection, {
?bool $set, $connection = 'valid';
bool $expected // default set, expect true
): void {
$db = new \CoreLibs\DB\IO( $db = new \CoreLibs\DB\IO(
self::$db_config[$connection], self::$db_config[$connection],
self::$log self::$log
); );
echo "Expected: " . self::$db_debug . "\n"; $this->assertTrue(
$this->assertEquals( $db->dbGetDebug()
$expected,
$set === null ?
$db->dbSetDebug() :
$db->dbSetDebug($set)
); );
// must always match // switch off
$this->assertEquals( $db->dbSetDebug(false);
$expected, $this->assertFalse(
$db->dbGetDebug() $db->dbGetDebug()
); );
$db->dbClose(); $db->dbClose();
} // second conenction with log set NOT debug
$log = new \CoreLibs\Logging\Logging([
/** // 'log_folder' => __DIR__ . DIRECTORY_SEPARATOR . 'log',
* Test dbToggleDebug, dbGetDebug 'log_folder' => DIRECTORY_SEPARATOR . 'tmp',
* 'log_file_id' => 'CoreLibs-DB-IO-Test',
* @covers ::dbGetDbug 'log_level' => \CoreLibs\Logging\Logger\Level::Notice,
* @covers ::dbSetDebug ]);
* @dataProvider debugToggleProvider
* @testdox Toggle debug $toggle will be $expected [$_dataName]
*
* @return void
*/
public function testDbToggleDebug(
string $connection,
?bool $toggle,
bool $expected
): void {
$db = new \CoreLibs\DB\IO( $db = new \CoreLibs\DB\IO(
self::$db_config[$connection], self::$db_config[$connection],
self::$log $log
); );
$this->assertEquals( $this->assertFalse(
$expected,
$toggle === null ?
$db->dbToggleDebug() :
$db->dbToggleDebug($toggle)
);
// must always match
$this->assertEquals(
$expected,
$db->dbGetDebug() $db->dbGetDebug()
); );
$db->dbClose();
} }
// - set max query call sets // - set max query call sets

View File

@@ -460,16 +460,18 @@ final class CoreLibsDebugSupportTest extends TestCase
* Undocumented function * Undocumented function
* *
* @cover ::getCallerFileLine * @cover ::getCallerFileLine
* @testWith ["/storage/var/www/html/developers/clemens/core_data/php_libraries/trunk/www/vendor/phpunit/phpunit/src/Framework/TestCase.php:1608"] * @testWith ["vendor/phpunit/phpunit/src/Framework/TestCase.php:"]
* @testdox getCallerFileLine check if it returns $expected [$_dataName] * @testdox getCallerFileLine check based on regex /[\w\-\/]/vendor/phpunit/phpunit/src/Framework/TestCase.php:\d+ [$_dataName]
* *
* @param string $expected * @param string $expected
* @return void * @return void
*/ */
public function testGetCallerFileLine(string $expected): void public function testGetCallerFileLine(): void
{ {
$this->assertEquals( // regex prefix with path "/../" and then fixed vendor + \d+
$expected, $regex = "/^\/[\w\-\/]+\/vendor\/phpunit\/phpunit\/src\/Framework\/TestCase.php:\d+$/";
$this->assertMatchesRegularExpression(
$regex,
Support::getCallerFileLine() Support::getCallerFileLine()
); );
} }
@@ -518,11 +520,17 @@ final class CoreLibsDebugSupportTest extends TestCase
break; break;
case 11: case 11:
// add one "run" before "runBare" // add one "run" before "runBare"
// array_splice(
// $expected,
// 7,
// 0,
// ['run']
// );
array_splice( array_splice(
$expected, $expected,
7,
0, 0,
['run'] 0,
['include']
); );
$this->assertEquals( $this->assertEquals(
$expected, $expected,

View File

@@ -20,10 +20,15 @@ final class CoreLibsLoggingLoggingTest extends TestCase
private const LOG_FOLDER = __DIR__ . DIRECTORY_SEPARATOR . 'log' . DIRECTORY_SEPARATOR; private const LOG_FOLDER = __DIR__ . DIRECTORY_SEPARATOR . 'log' . DIRECTORY_SEPARATOR;
private const REGEX_BASE = "\[[\d\-\s\.:]+\]\s{1}" // date private const REGEX_BASE = "\[[\d\-\s\.:]+\]\s{1}" // date
. "\[[\w\.]+(:\d+)?\]\s{1}" // host:port . "\[[\w\.]+(:\d+)?\]\s{1}" // host:port
. "\[[\w+\.\/]+:\d+\]\s{1}" // folder/file . "\[[\w\-\.\/]+:\d+\]\s{1}" // folder/file
. "\[\w+\]\s{1}" // run id . "\[\w+\]\s{1}" // run id
. "{[\w\\\\]+(::\w+)?}\s{1}"; // class . "{[\w\\\\]+(::\w+)?}\s{1}"; // class
public static function tearDownAfterClass(): void
{
array_map('unlink', glob(self::LOG_FOLDER . '*.log'));
}
/** /**
* test set for options BASIC * test set for options BASIC
* *
@@ -217,14 +222,14 @@ final class CoreLibsLoggingLoggingTest extends TestCase
// setLoggingLevel // setLoggingLevel
// getLoggingLevel // getLoggingLevel
// getJsDebug // loggingLevelIsDebug
/** /**
* Undocumented function * Undocumented function
* *
* @covers ::setLoggingLevel * @covers ::setLoggingLevel
* @covers ::getLoggingLevel * @covers ::getLoggingLevel
* @covers ::getJsDebug * @covers ::loggingLevelIsDebug
* @testdox setLoggingLevel set/get checks * @testdox setLoggingLevel set/get checks
* *
* @return void * @return void
@@ -242,7 +247,7 @@ final class CoreLibsLoggingLoggingTest extends TestCase
$log->getLoggingLevel() $log->getLoggingLevel()
); );
$this->assertFalse( $this->assertFalse(
$log->getJsDebug() $log->loggingLevelIsDebug()
); );
// not set, should be debug] // not set, should be debug]
$log = new \CoreLibs\Logging\Logging([ $log = new \CoreLibs\Logging\Logging([
@@ -254,7 +259,7 @@ final class CoreLibsLoggingLoggingTest extends TestCase
$log->getLoggingLevel() $log->getLoggingLevel()
); );
$this->assertTrue( $this->assertTrue(
$log->getJsDebug() $log->loggingLevelIsDebug()
); );
// invalid, should be debug, will throw excpetion too // invalid, should be debug, will throw excpetion too
$this->expectException(\InvalidArgumentException::class); $this->expectException(\InvalidArgumentException::class);
@@ -269,7 +274,7 @@ final class CoreLibsLoggingLoggingTest extends TestCase
$log->getLoggingLevel() $log->getLoggingLevel()
); );
$this->assertTrue( $this->assertTrue(
$log->getJsDebug() $log->loggingLevelIsDebug()
); );
// set valid, then change // set valid, then change
$log = new \CoreLibs\Logging\Logging([ $log = new \CoreLibs\Logging\Logging([

View File

@@ -23,6 +23,8 @@ ob_end_flush();
$ECHO_ALL = true; $ECHO_ALL = true;
// use CoreLibs\Debug\Support; // use CoreLibs\Debug\Support;
use CoreLibs\Debug\Support;
use CoreLibs\Logging\Logger\Level; use CoreLibs\Logging\Logger\Level;
use CoreLibs\Logging\Logger\Flag; use CoreLibs\Logging\Logger\Flag;
// use CoreLibs\Debug\Support; // use CoreLibs\Debug\Support;
@@ -51,7 +53,18 @@ print "Flag: per_run ->value: " . Flag::per_class->value . "<br>";
$log->setLogUniqueId(); $log->setLogUniqueId();
print "LogUniqId: " . $log->getLogUniqueId() . "<br>"; print "LogUniqId: " . $log->getLogUniqueId() . "<br>";
print "DUMP: " . $log->dV(['something' => 'error']) . "<br>"; print "Is Debug (check): " . Support::printBool($log->getLoggingLevel()->includes(
Level::Debug
)) . "<br>";
print "Is Debug (fk): " . Support::printBool($log->loggingLevelIsDebug()) . "<br>";
$log->setLoggingLevel(Level::Notice);
print "Is Debug (check): " . Support::printBool($log->getLoggingLevel()->includes(
Level::Debug
)) . "<br>";
print "Is Debug (fk): " . Support::printBool($log->loggingLevelIsDebug()) . "<br>";
$log->setLoggingLevel(Level::Debug);
print "DUMP: <pre>" . $log->dV(['something' => 'error']) . "</pre><br>";
$log->debug('LEGACY', 'Some legacy shit here'); $log->debug('LEGACY', 'Some legacy shit here');
$log->debug('ARRAY', 'Dump some data: ' . $log->dV(['something' => 'error'])); $log->debug('ARRAY', 'Dump some data: ' . $log->dV(['something' => 'error']));

View File

@@ -52,7 +52,7 @@ print "<body>";
print '<div><a href="class_test.php">Class Test Master</a></div>'; print '<div><a href="class_test.php">Class Test Master</a></div>';
print '<div><h1>' . $PAGE_NAME . '</h1></div>'; print '<div><h1>' . $PAGE_NAME . '</h1></div>';
$smarty->DATA['JS_DEBUG'] = $log->getJsDebug(); $smarty->DATA['JS_DEBUG'] = $log->loggingLevelIsDebug();
$smarty->MASTER_TEMPLATE_NAME = 'main_body.tpl'; $smarty->MASTER_TEMPLATE_NAME = 'main_body.tpl';
$smarty->TEMPLATE_NAME = 'smarty_test.tpl'; $smarty->TEMPLATE_NAME = 'smarty_test.tpl';
$smarty->CSS_SPECIAL_TEMPLATE_NAME = 'smart_test.css'; $smarty->CSS_SPECIAL_TEMPLATE_NAME = 'smart_test.css';

View File

@@ -121,6 +121,6 @@ if (!$login->loginActionRun()) {
//------------------------------ logging end //------------------------------ logging end
// pass on DEBUG flag to JS via smarty variable // pass on DEBUG flag to JS via smarty variable
$smarty->DATA['JS_DEBUG'] = $log->getJsDebug(); $smarty->DATA['JS_DEBUG'] = $log->loggingLevelIsDebug();
// __END__ // __END__

View File

@@ -382,7 +382,7 @@ class IO
/** @var array<mixed> */ /** @var array<mixed> */
private array $pk_name_table = []; private array $pk_name_table = [];
/** @var string internal primary key name, for cross calls in async */ /** @var string internal primary key name, for cross calls in async */
private string $pk_name; private string $pk_name = '';
/** @var bool if we use RETURNING in the INSERT call */ /** @var bool if we use RETURNING in the INSERT call */
private bool $returning_id = false; private bool $returning_id = false;
/** @var string if a sync is running holds the hash key of the query */ /** @var string if a sync is running holds the hash key of the query */
@@ -1267,7 +1267,7 @@ class IO
// ONLY insert with set pk name // ONLY insert with set pk name
($this->__checkQueryForInsert($this->query, true) && $this->pk_name != 'NULL') || ($this->__checkQueryForInsert($this->query, true) && $this->pk_name != 'NULL') ||
// insert or update with returning add // insert or update with returning add
($this->__checkQueryForInsert($this->query) && $this->returning_id) ($this->__checkQueryForInsert($this->query) && $this->returning_id)
) { ) {
$this->__dbSetInsertId( $this->__dbSetInsertId(
$this->returning_id, $this->returning_id,
@@ -3123,16 +3123,13 @@ class IO
/** /**
* switches the debug flag on or off * switches the debug flag on or off
* if none given, then return current set only *
* @param bool|null $debug true/false or null for just getting current set * @param bool $debug True/False to turn debugging in this calss on or off
* @return bool Current debug flag as set * @return void
*/ */
public function dbSetDebug(?bool $debug = null): bool public function dbSetDebug(bool $debug): void
{ {
if ($debug !== null) { $this->db_debug = $debug;
$this->db_debug = $debug;
}
return $this->db_debug;
} }
/** /**
@@ -3140,9 +3137,11 @@ class IO
* OR * OR
* with the optional parameter fix sets debug * with the optional parameter fix sets debug
* returns current set stats * returns current set stats
*
* @param bool|null $debug Flag to turn debug on off or null for toggle * @param bool|null $debug Flag to turn debug on off or null for toggle
* @return bool Current debug status * @return bool Current debug status
* True for debug is on, False for off * True for debug is on, False for off
* @deprecated Use dbSetDebug and dbGetDebug
*/ */
public function dbToggleDebug(?bool $debug = null): bool public function dbToggleDebug(?bool $debug = null): bool
{ {
@@ -3156,6 +3155,7 @@ class IO
/** /**
* Return current set db debug flag status * Return current set db debug flag status
*
* @return bool Current debug status * @return bool Current debug status
*/ */
public function dbGetDebug(): bool public function dbGetDebug(): bool

View File

@@ -34,29 +34,29 @@ class Support
} }
/** /**
* prints a html formatted (pre) array * prints a html formatted (pre) data
* *
* @param array<mixed> $array any array * @param mixed $data any data
* @param bool $no_html default add <pre> * @param bool $no_html default add <pre>
* @return string formatted array for output with <pre> tag added * @return string formatted array for output with <pre> tag added
*/ */
public static function printAr(array $array, bool $no_html = false): string public static function printAr(mixed $data, bool $no_html = false): string
{ {
return $no_html ? return $no_html ?
print_r($array, true) : print_r($data, true) :
'<pre>' . print_r($array, true) . '</pre>'; '<pre>' . print_r($data, true) . '</pre>';
} }
/** /**
* alternate name for printAr function * alternate name for printAr function
* *
* @param array<mixed> $array any array * @param mixed $data any array
* @param bool $no_html default add <pre> * @param bool $no_html default add <pre>
* @return string formatted array for output with <pre> tag added * @return string formatted array for output with <pre> tag added
*/ */
public static function printArray(array $array, bool $no_html = false): string public static function printArray(mixed $data, bool $no_html = false): string
{ {
return self::printAr($array, $no_html); return self::printAr($data, $no_html);
} }
/** /**
@@ -65,12 +65,12 @@ class Support
* Do not use this without using it in a string in debug function * Do not use this without using it in a string in debug function
* Note: for full data debug dumps use Support::dumpVar() * Note: for full data debug dumps use Support::dumpVar()
* *
* @param array<mixed> $a Array to format * @param mixed $data Data to print
* @return string print_r formated * @return string print_r formated
*/ */
public static function prAr(array $a): string public static function prAr(mixed $data): string
{ {
return self::printAr($a, true); return self::printAr($data, true);
} }
/** /**
@@ -177,7 +177,6 @@ class Support
$caller_level = 1; $caller_level = 1;
$caller_list = self::getCallerMethodList(); $caller_list = self::getCallerMethodList();
if ($caller_list[0] == 'dV') { if ($caller_list[0] == 'dV') {
echo "Raise caller level<br>: " . $caller_list[0] . "<br>";
$caller_level = 2; $caller_level = 2;
} }
// we need to strip the string in <small></small that is // we need to strip the string in <small></small that is

View File

@@ -675,9 +675,11 @@ class Logging
* *
* @return bool True, we are at debug level * @return bool True, we are at debug level
*/ */
public function getJsDebug(): bool public function loggingLevelIsDebug(): bool
{ {
return $this->log_level === Level::Debug ? true : false; return $this->getLoggingLevel()->includes(
Level::Debug
);
} }
// log file id set (file name prefix) // log file id set (file name prefix)
@@ -1080,12 +1082,12 @@ class Logging
* But this does not wrap it in <pre></pre> * But this does not wrap it in <pre></pre>
* Do not use this without using it in a string in debug function * Do not use this without using it in a string in debug function
* *
* @param array<mixed> $a Array to format * @param mixed $data Data to format
* @return string print_r formated * @return string print_r formated
*/ */
public function prAr(array $a): string public function prAr(mixed $data): string
{ {
return Support::printArray($a, true); return Support::printArray($data, true);
} }
/** /**