First Local Commit - After Clean up.
Signed-off-by: Rick Hays <rhays@haysgang.com>
This commit is contained in:
25
tests/_support/Log/Handlers/MockChromeHandler.php
Normal file
25
tests/_support/Log/Handlers/MockChromeHandler.php
Normal file
@@ -0,0 +1,25 @@
|
||||
<?php namespace Tests\Support\Log\Handlers;
|
||||
|
||||
/**
|
||||
* Class MockHandler
|
||||
*
|
||||
* Extends ChromeLoggerHandler, exposing some inner workings
|
||||
*/
|
||||
|
||||
class MockChromeHandler extends \CodeIgniter\Log\Handlers\ChromeLoggerHandler
|
||||
{
|
||||
|
||||
//--------------------------------------------------------------------
|
||||
|
||||
public function __construct(array $config)
|
||||
{
|
||||
parent::__construct($config);
|
||||
}
|
||||
|
||||
// retrieve the message from the JSON response
|
||||
public function peekaboo()
|
||||
{
|
||||
return $this->json['rows'][0];
|
||||
}
|
||||
|
||||
}
|
||||
25
tests/_support/Log/Handlers/MockFileHandler.php
Normal file
25
tests/_support/Log/Handlers/MockFileHandler.php
Normal file
@@ -0,0 +1,25 @@
|
||||
<?php namespace Tests\Support\Log\Handlers;
|
||||
|
||||
/**
|
||||
* Class MockHandler
|
||||
*
|
||||
* Extends FileHandler, exposing some inner workings
|
||||
*/
|
||||
|
||||
class MockFileHandler extends \CodeIgniter\Log\Handlers\FileHandler
|
||||
{
|
||||
/**
|
||||
* Where would the log be written?
|
||||
*/
|
||||
public $destination;
|
||||
|
||||
//--------------------------------------------------------------------
|
||||
|
||||
public function __construct(array $config)
|
||||
{
|
||||
parent::__construct($config);
|
||||
$this->handles = $config['handles'] ?? [];
|
||||
$this->destination = $this->path . 'log-' . date('Y-m-d') . '.' . $this->fileExtension;
|
||||
}
|
||||
|
||||
}
|
||||
64
tests/_support/Log/Handlers/TestHandler.php
Normal file
64
tests/_support/Log/Handlers/TestHandler.php
Normal file
@@ -0,0 +1,64 @@
|
||||
<?php namespace Tests\Support\Log\Handlers;
|
||||
|
||||
/**
|
||||
* Class TestHandler
|
||||
*
|
||||
* A simple LogHandler that stores the logs in memory.
|
||||
* Only used for testing purposes.
|
||||
*/
|
||||
|
||||
class TestHandler extends \CodeIgniter\Log\Handlers\FileHandler
|
||||
{
|
||||
|
||||
/**
|
||||
* Local storage for logs.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected static $logs = [];
|
||||
|
||||
/**
|
||||
* Where would the log be written?
|
||||
*/
|
||||
//--------------------------------------------------------------------
|
||||
|
||||
public function __construct(array $config)
|
||||
{
|
||||
parent::__construct($config);
|
||||
$this->handles = $config['handles'] ?? [];
|
||||
$this->destination = $this->path . 'log-' . date('Y-m-d') . '.' . $this->fileExtension;
|
||||
|
||||
self::$logs = [];
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------
|
||||
|
||||
/**
|
||||
* Handles logging the message.
|
||||
* If the handler returns false, then execution of handlers
|
||||
* will stop. Any handlers that have not run, yet, will not
|
||||
* be run.
|
||||
*
|
||||
* @param $level
|
||||
* @param $message
|
||||
*
|
||||
* @return boolean
|
||||
*/
|
||||
public function handle($level, $message): bool
|
||||
{
|
||||
$date = date($this->dateFormat);
|
||||
|
||||
self::$logs[] = strtoupper($level) . ' - ' . $date . ' --> ' . $message;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------
|
||||
|
||||
public static function getLogs()
|
||||
{
|
||||
return self::$logs;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------
|
||||
}
|
||||
82
tests/_support/Log/TestLogger.php
Normal file
82
tests/_support/Log/TestLogger.php
Normal file
@@ -0,0 +1,82 @@
|
||||
<?php namespace Tests\Support\Log;
|
||||
|
||||
use CodeIgniter\Log\Logger;
|
||||
|
||||
class TestLogger extends Logger
|
||||
{
|
||||
|
||||
protected static $op_logs = [];
|
||||
|
||||
//--------------------------------------------------------------------
|
||||
|
||||
/**
|
||||
* The log method is overridden so that we can store log history during
|
||||
* the tests to allow us to check ->assertLogged() methods.
|
||||
*
|
||||
* @param string $level
|
||||
* @param string $message
|
||||
* @param array $context
|
||||
*
|
||||
* @return boolean
|
||||
*/
|
||||
public function log($level, $message, array $context = []): bool
|
||||
{
|
||||
// While this requires duplicate work, we want to ensure
|
||||
// we have the final message to test against.
|
||||
$log_message = $this->interpolate($message, $context);
|
||||
|
||||
// Determine the file and line by finding the first
|
||||
// backtrace that is not part of our logging system.
|
||||
$trace = debug_backtrace();
|
||||
$file = null;
|
||||
|
||||
foreach ($trace as $row)
|
||||
{
|
||||
if (! in_array($row['function'], ['log', 'log_message']))
|
||||
{
|
||||
$file = basename($row['file'] ?? '');
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
self::$op_logs[] = [
|
||||
'level' => $level,
|
||||
'message' => $log_message,
|
||||
'file' => $file,
|
||||
];
|
||||
|
||||
// Let the parent do it's thing.
|
||||
return parent::log($level, $message, $context);
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------
|
||||
|
||||
/**
|
||||
* Used by CIUnitTestCase class to provide ->assertLogged() methods.
|
||||
*
|
||||
* @param string $level
|
||||
* @param string $message
|
||||
*
|
||||
* @return boolean
|
||||
*/
|
||||
public static function didLog(string $level, $message)
|
||||
{
|
||||
foreach (self::$op_logs as $log)
|
||||
{
|
||||
if (strtolower($log['level']) === strtolower($level) && $message === $log['message'])
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------
|
||||
// Expose cleanFileNames()
|
||||
public function cleanup($file)
|
||||
{
|
||||
return $this->cleanFileNames($file);
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user