Mercurial > hg > Members > shoshi > webvirt
diff cake/tests/cases/libs/cake_log.test.php @ 0:261e66bd5a0c
hg init
author | Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Sun, 24 Jul 2011 21:08:31 +0900 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/cake/tests/cases/libs/cake_log.test.php Sun Jul 24 21:08:31 2011 +0900 @@ -0,0 +1,183 @@ +<?php +/** + * CakeLogTest file + * + * PHP versions 4 and 5 + * + * CakePHP(tm) Tests <http://book.cakephp.org/view/1196/Testing> + * Copyright 2005-2010, Cake Software Foundation, Inc. (http://cakefoundation.org) + * + * Licensed under The Open Group Test Suite License + * Redistributions of files must retain the above copyright notice. + * + * @copyright Copyright 2005-2010, Cake Software Foundation, Inc. (http://cakefoundation.org) + * @link http://book.cakephp.org/view/1196/Testing CakePHP(tm) Tests + * @package cake + * @subpackage cake.tests.cases.libs + * @since CakePHP(tm) v 1.2.0.5432 + * @license http://www.opensource.org/licenses/opengroup.php The Open Group Test Suite License + */ +App::import('Core', 'Log'); +App::import('Core', 'log/FileLog'); + +/** + * CakeLogTest class + * + * @package cake + * @subpackage cake.tests.cases.libs + */ +class CakeLogTest extends CakeTestCase { + +/** + * Start test callback, clears all streams enabled. + * + * @return void + */ + function startTest() { + $streams = CakeLog::configured(); + foreach ($streams as $stream) { + CakeLog::drop($stream); + } + } + +/** + * test importing loggers from app/libs and plugins. + * + * @return void + */ + function testImportingLoggers() { + App::build(array( + 'libs' => array(TEST_CAKE_CORE_INCLUDE_PATH . 'tests' . DS . 'test_app' . DS . 'libs' . DS), + 'plugins' => array(TEST_CAKE_CORE_INCLUDE_PATH . 'tests' . DS . 'test_app' . DS . 'plugins' . DS) + ), true); + + $result = CakeLog::config('libtest', array( + 'engine' => 'TestAppLog' + )); + $this->assertTrue($result); + $this->assertEqual(CakeLog::configured(), array('libtest')); + + $result = CakeLog::config('plugintest', array( + 'engine' => 'TestPlugin.TestPluginLog' + )); + $this->assertTrue($result); + $this->assertEqual(CakeLog::configured(), array('libtest', 'plugintest')); + + App::build(); + } + +/** + * test all the errors from failed logger imports + * + * @return void + */ + function testImportingLoggerFailure() { + $this->expectError('Missing logger classname'); + CakeLog::config('fail', array()); + + $this->expectError('Could not load logger class born to fail'); + CakeLog::config('fail', array('engine' => 'born to fail')); + + $this->expectError('logger class stdClass does not implement a write method.'); + CakeLog::config('fail', array('engine' => 'stdClass')); + } + +/** + * Test that CakeLog autoconfigures itself to use a FileLogger with the LOGS dir. + * When no streams are there. + * + * @return void + */ + function testAutoConfig() { + @unlink(LOGS . 'error.log'); + CakeLog::write(LOG_WARNING, 'Test warning'); + $this->assertTrue(file_exists(LOGS . 'error.log')); + + $result = CakeLog::configured(); + $this->assertEqual($result, array('default')); + unlink(LOGS . 'error.log'); + } + +/** + * test configuring log streams + * + * @return void + */ + function testConfig() { + CakeLog::config('file', array( + 'engine' => 'FileLog', + 'path' => LOGS + )); + $result = CakeLog::configured(); + $this->assertEqual($result, array('file')); + + @unlink(LOGS . 'error.log'); + CakeLog::write(LOG_WARNING, 'Test warning'); + $this->assertTrue(file_exists(LOGS . 'error.log')); + + $result = file_get_contents(LOGS . 'error.log'); + $this->assertPattern('/^2[0-9]{3}-[0-9]+-[0-9]+ [0-9]+:[0-9]+:[0-9]+ Warning: Test warning/', $result); + unlink(LOGS . 'error.log'); + } + +/** + * explict tests for drop() + * + * @return void + **/ + function testDrop() { + CakeLog::config('file', array( + 'engine' => 'FileLog', + 'path' => LOGS + )); + $result = CakeLog::configured(); + $this->assertEqual($result, array('file')); + + CakeLog::drop('file'); + $result = CakeLog::configured(); + $this->assertEqual($result, array()); + } + +/** + * testLogFileWriting method + * + * @access public + * @return void + */ + function testLogFileWriting() { + @unlink(LOGS . 'error.log'); + $result = CakeLog::write(LOG_WARNING, 'Test warning'); + $this->assertTrue($result); + $this->assertTrue(file_exists(LOGS . 'error.log')); + unlink(LOGS . 'error.log'); + + CakeLog::write(LOG_WARNING, 'Test warning 1'); + CakeLog::write(LOG_WARNING, 'Test warning 2'); + $result = file_get_contents(LOGS . 'error.log'); + $this->assertPattern('/^2[0-9]{3}-[0-9]+-[0-9]+ [0-9]+:[0-9]+:[0-9]+ Warning: Test warning 1/', $result); + $this->assertPattern('/2[0-9]{3}-[0-9]+-[0-9]+ [0-9]+:[0-9]+:[0-9]+ Warning: Test warning 2$/', $result); + unlink(LOGS . 'error.log'); + } + +/** + * Test logging with the error handler. + * + * @return void + */ + function testLoggingWithErrorHandling() { + @unlink(LOGS . 'debug.log'); + Configure::write('log', E_ALL & ~E_DEPRECATED); + Configure::write('debug', 0); + + set_error_handler(array('CakeLog', 'handleError')); + $out .= ''; + + $result = file(LOGS . 'debug.log'); + $this->assertEqual(count($result), 1); + $this->assertPattern( + '/^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2} Notice: Notice \(8\): Undefined variable:\s+out in \[.+ line \d+\]$/', + $result[0] + ); + @unlink(LOGS . 'debug.log'); + } +}