Add unit tests for the Debug class

This commit is contained in:
Kijin Sung 2016-02-15 16:11:00 +09:00
parent 3045ac9c42
commit 0947bafa66
2 changed files with 82 additions and 6 deletions

View file

@ -18,6 +18,11 @@ class Debug
protected static $_slow_triggers = array();
protected static $_slow_widgets = array();
/**
* Also write to error log.
*/
public static $write_to_error_log = true;
/**
* Get all entries.
*
@ -118,9 +123,12 @@ class Debug
self::$_entries[] = $entry;
// Add the entry to the error log.
$log_entry = str_replace("\0", '', sprintf('Rhymix Debug: %s in %s on line %d',
var_export($message, true), $entry->file, $entry->line));
error_log($log_entry);
if (self::$write_to_error_log)
{
$log_entry = str_replace("\0", '', sprintf('Rhymix Debug: %s in %s on line %d',
var_export($message, true), $entry->file, $entry->line));
error_log($log_entry);
}
}
/**
@ -165,9 +173,12 @@ class Debug
);
// Add the entry to the error log.
$log_entry = str_replace("\0", '', sprintf('PHP %s: %s in %s on line %d',
$errinfo->type, $errstr, $errfile, intval($errline)));
error_log($log_entry);
if (self::$write_to_error_log)
{
$log_entry = str_replace("\0", '', sprintf('PHP %s: %s in %s on line %d',
$errinfo->type, $errstr, $errfile, intval($errline)));
error_log($log_entry);
}
}
/**

View file

@ -0,0 +1,65 @@
<?php
class DebugTest extends \Codeception\TestCase\Test
{
public function testDebugEntry()
{
$file = __FILE__;
$line = __LINE__ + 2;
Rhymix\Framework\Debug::$write_to_error_log = false;
Rhymix\Framework\Debug::addEntry('foobar entry');
$entries = Rhymix\Framework\Debug::getEntries();
$this->assertEquals(1, count($entries));
$this->assertEquals('foobar entry', $entries[0]->message);
$this->assertEquals($file, $entries[0]->file);
$this->assertEquals($line, $entries[0]->line);
}
public function testDebugError()
{
$file = __FILE__;
$line = __LINE__ + 2;
Rhymix\Framework\Debug::$write_to_error_log = false;
Rhymix\Framework\Debug::addError(~0, 'Rhymix', $file, $line, null);
$errors = Rhymix\Framework\Debug::getErrors();
$this->assertEquals(1, count($errors));
$this->assertContains('Rhymix', $errors[0]->message);
$this->assertEquals($file, $errors[0]->file);
$this->assertEquals($line, $errors[0]->line);
}
public function testDebugQuery()
{
Rhymix\Framework\Debug::addQuery(array(
'result' => 'fail',
'errno' => 1234,
'errstr' => 'This is a unit test',
'connection' => 'foobar',
'query_id' => 'rhymix.unitTest',
'query' => 'SELECT foo FROM bar',
'elapsed_time' => 0.1234,
'called_file' => __FILE__,
'called_line' => __LINE__,
'called_method' => 'rhymix.unitTest',
'backtrace' => array(),
));
$queries = Rhymix\Framework\Debug::getQueries();
$this->assertEquals(1, count($queries));
$this->assertEquals('SELECT foo FROM bar', $queries[0]->query_string);
$this->assertEquals('This is a unit test', $queries[0]->message);
$this->assertEquals(1234, $queries[0]->error_code);
}
public function testDebugTranslateFilename()
{
$original_filename = __FILE__;
$trans_filename = substr($original_filename, strlen(\RX_BASEDIR));
$this->assertEquals($trans_filename, Rhymix\Framework\Debug::translateFilename($original_filename));
$original_filename = __FILE__;
$alias_filename = $original_filename . '.foobar';
$trans_filename = substr($alias_filename, strlen(\RX_BASEDIR));
Rhymix\Framework\Debug::addFilenameAlias($alias_filename, $original_filename);
$this->assertEquals($trans_filename, Rhymix\Framework\Debug::translateFilename($original_filename));
}
}