pictcode / lib / Cake / Test / Case / Log / CakeLogTest.php @ 635eef61
履歴 | 表示 | アノテート | ダウンロード (19.993 KB)
1 |
<?php
|
---|---|
2 |
/**
|
3 |
* CakeLogTest file
|
4 |
*
|
5 |
* CakePHP(tm) Tests <http://book.cakephp.org/2.0/en/development/testing.html>
|
6 |
* Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org)
|
7 |
*
|
8 |
* Licensed under The MIT License
|
9 |
* For full copyright and license information, please see the LICENSE.txt
|
10 |
* Redistributions of files must retain the above copyright notice
|
11 |
*
|
12 |
* @copyright Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org)
|
13 |
* @link http://book.cakephp.org/2.0/en/development/testing.html CakePHP(tm) Tests
|
14 |
* @package Cake.Test.Case.Log
|
15 |
* @since CakePHP(tm) v 1.2.0.5432
|
16 |
* @license http://www.opensource.org/licenses/mit-license.php MIT License
|
17 |
*/
|
18 |
|
19 |
App::uses('CakeLog', 'Log'); |
20 |
App::uses('FileLog', 'Log/Engine'); |
21 |
|
22 |
/**
|
23 |
* CakeLogTest class
|
24 |
*
|
25 |
* @package Cake.Test.Case.Log
|
26 |
*/
|
27 |
class CakeLogTest extends CakeTestCase { |
28 |
|
29 |
/**
|
30 |
* Start test callback, clears all streams enabled.
|
31 |
*
|
32 |
* @return void
|
33 |
*/
|
34 |
public function setUp() { |
35 |
parent::setUp();
|
36 |
$streams = CakeLog::configured(); |
37 |
foreach ($streams as $stream) { |
38 |
CakeLog::drop($stream); |
39 |
} |
40 |
} |
41 |
|
42 |
/**
|
43 |
* test importing loggers from app/libs and plugins.
|
44 |
*
|
45 |
* @return void
|
46 |
*/
|
47 |
public function testImportingLoggers() { |
48 |
App::build(array( |
49 |
'Lib' => array(CAKE . 'Test' . DS . 'test_app' . DS . 'Lib' . DS), |
50 |
'Plugin' => array(CAKE . 'Test' . DS . 'test_app' . DS . 'Plugin' . DS) |
51 |
), App::RESET); |
52 |
CakePlugin::load('TestPlugin'); |
53 |
|
54 |
$result = CakeLog::config('libtest', array( |
55 |
'engine' => 'TestAppLog' |
56 |
)); |
57 |
$this->assertTrue($result); |
58 |
$this->assertEquals(CakeLog::configured(), array('libtest')); |
59 |
|
60 |
$result = CakeLog::config('plugintest', array( |
61 |
'engine' => 'TestPlugin.TestPluginLog' |
62 |
)); |
63 |
$this->assertTrue($result); |
64 |
$this->assertEquals(CakeLog::configured(), array('libtest', 'plugintest')); |
65 |
|
66 |
CakeLog::write(LOG_INFO, 'TestPluginLog is not a BaseLog descendant'); |
67 |
|
68 |
App::build();
|
69 |
CakePlugin::unload();
|
70 |
} |
71 |
|
72 |
/**
|
73 |
* test all the errors from failed logger imports
|
74 |
*
|
75 |
* @expectedException CakeLogException
|
76 |
* @return void
|
77 |
*/
|
78 |
public function testImportingLoggerFailure() { |
79 |
CakeLog::config('fail', array()); |
80 |
} |
81 |
|
82 |
/**
|
83 |
* test config() with valid key name
|
84 |
*
|
85 |
* @return void
|
86 |
*/
|
87 |
public function testValidKeyName() { |
88 |
CakeLog::config('valid', array('engine' => 'File')); |
89 |
$stream = CakeLog::stream('valid'); |
90 |
$this->assertInstanceOf('FileLog', $stream); |
91 |
CakeLog::drop('valid'); |
92 |
} |
93 |
|
94 |
/**
|
95 |
* test config() with valid key name including the deprecated Log suffix
|
96 |
*
|
97 |
* @return void
|
98 |
*/
|
99 |
public function testValidKeyNameLogSuffix() { |
100 |
CakeLog::config('valid', array('engine' => 'FileLog')); |
101 |
$stream = CakeLog::stream('valid'); |
102 |
$this->assertInstanceOf('FileLog', $stream); |
103 |
CakeLog::drop('valid'); |
104 |
} |
105 |
|
106 |
/**
|
107 |
* test config() with invalid key name
|
108 |
*
|
109 |
* @expectedException CakeLogException
|
110 |
* @return void
|
111 |
*/
|
112 |
public function testInvalidKeyName() { |
113 |
CakeLog::config('1nv', array('engine' => 'File')); |
114 |
} |
115 |
|
116 |
/**
|
117 |
* test that loggers have to implement the correct interface.
|
118 |
*
|
119 |
* @expectedException CakeLogException
|
120 |
* @return void
|
121 |
*/
|
122 |
public function testNotImplementingInterface() { |
123 |
CakeLog::config('fail', array('engine' => 'stdClass')); |
124 |
} |
125 |
|
126 |
/**
|
127 |
* Test that CakeLog does not auto create logs when no streams are there to listen.
|
128 |
*
|
129 |
* @return void
|
130 |
*/
|
131 |
public function testNoStreamListenting() { |
132 |
if (file_exists(LOGS . 'error.log')) { |
133 |
unlink(LOGS . 'error.log'); |
134 |
} |
135 |
$res = CakeLog::write(LOG_WARNING, 'Test warning'); |
136 |
$this->assertFalse($res); |
137 |
$this->assertFalse(file_exists(LOGS . 'error.log')); |
138 |
|
139 |
$result = CakeLog::configured(); |
140 |
$this->assertEquals(array(), $result); |
141 |
} |
142 |
|
143 |
/**
|
144 |
* test configuring log streams
|
145 |
*
|
146 |
* @return void
|
147 |
*/
|
148 |
public function testConfig() { |
149 |
CakeLog::config('file', array( |
150 |
'engine' => 'File', |
151 |
'path' => LOGS |
152 |
)); |
153 |
$result = CakeLog::configured(); |
154 |
$this->assertEquals(array('file'), $result); |
155 |
|
156 |
if (file_exists(LOGS . 'error.log')) { |
157 |
unlink(LOGS . 'error.log'); |
158 |
} |
159 |
CakeLog::write(LOG_WARNING, 'Test warning'); |
160 |
$this->assertTrue(file_exists(LOGS . 'error.log')); |
161 |
|
162 |
$result = file_get_contents(LOGS . 'error.log'); |
163 |
$this->assertRegExp('/^2[0-9]{3}-[0-9]+-[0-9]+ [0-9]+:[0-9]+:[0-9]+ Warning: Test warning/', $result); |
164 |
unlink(LOGS . 'error.log'); |
165 |
} |
166 |
|
167 |
/**
|
168 |
* explicit tests for drop()
|
169 |
*
|
170 |
* @return void
|
171 |
*/
|
172 |
public function testDrop() { |
173 |
CakeLog::config('file', array( |
174 |
'engine' => 'File', |
175 |
'path' => LOGS |
176 |
)); |
177 |
$result = CakeLog::configured(); |
178 |
$this->assertEquals(array('file'), $result); |
179 |
|
180 |
CakeLog::drop('file'); |
181 |
$result = CakeLog::configured(); |
182 |
$this->assertSame(array(), $result); |
183 |
} |
184 |
|
185 |
/**
|
186 |
* testLogFileWriting method
|
187 |
*
|
188 |
* @return void
|
189 |
*/
|
190 |
public function testLogFileWriting() { |
191 |
CakeLog::config('file', array( |
192 |
'engine' => 'File', |
193 |
'path' => LOGS |
194 |
)); |
195 |
if (file_exists(LOGS . 'error.log')) { |
196 |
unlink(LOGS . 'error.log'); |
197 |
} |
198 |
$result = CakeLog::write(LOG_WARNING, 'Test warning'); |
199 |
$this->assertTrue($result); |
200 |
$this->assertTrue(file_exists(LOGS . 'error.log')); |
201 |
unlink(LOGS . 'error.log'); |
202 |
|
203 |
CakeLog::write(LOG_WARNING, 'Test warning 1'); |
204 |
CakeLog::write(LOG_WARNING, 'Test warning 2'); |
205 |
$result = file_get_contents(LOGS . 'error.log'); |
206 |
$this->assertRegExp('/^2[0-9]{3}-[0-9]+-[0-9]+ [0-9]+:[0-9]+:[0-9]+ Warning: Test warning 1/', $result); |
207 |
$this->assertRegExp('/2[0-9]{3}-[0-9]+-[0-9]+ [0-9]+:[0-9]+:[0-9]+ Warning: Test warning 2$/', $result); |
208 |
unlink(LOGS . 'error.log'); |
209 |
} |
210 |
|
211 |
/**
|
212 |
* test selective logging by level/type
|
213 |
*
|
214 |
* @return void
|
215 |
*/
|
216 |
public function testSelectiveLoggingByLevel() { |
217 |
if (file_exists(LOGS . 'spam.log')) { |
218 |
unlink(LOGS . 'spam.log'); |
219 |
} |
220 |
if (file_exists(LOGS . 'eggs.log')) { |
221 |
unlink(LOGS . 'eggs.log'); |
222 |
} |
223 |
CakeLog::config('spam', array( |
224 |
'engine' => 'File', |
225 |
'types' => 'debug', |
226 |
'file' => 'spam', |
227 |
)); |
228 |
CakeLog::config('eggs', array( |
229 |
'engine' => 'File', |
230 |
'types' => array('eggs', 'debug', 'error', 'warning'), |
231 |
'file' => 'eggs', |
232 |
)); |
233 |
|
234 |
$testMessage = 'selective logging'; |
235 |
CakeLog::write(LOG_WARNING, $testMessage); |
236 |
|
237 |
$this->assertTrue(file_exists(LOGS . 'eggs.log')); |
238 |
$this->assertFalse(file_exists(LOGS . 'spam.log')); |
239 |
|
240 |
CakeLog::write(LOG_DEBUG, $testMessage); |
241 |
$this->assertTrue(file_exists(LOGS . 'spam.log')); |
242 |
|
243 |
$contents = file_get_contents(LOGS . 'spam.log'); |
244 |
$this->assertContains('Debug: ' . $testMessage, $contents); |
245 |
$contents = file_get_contents(LOGS . 'eggs.log'); |
246 |
$this->assertContains('Debug: ' . $testMessage, $contents); |
247 |
|
248 |
if (file_exists(LOGS . 'spam.log')) { |
249 |
unlink(LOGS . 'spam.log'); |
250 |
} |
251 |
if (file_exists(LOGS . 'eggs.log')) { |
252 |
unlink(LOGS . 'eggs.log'); |
253 |
} |
254 |
} |
255 |
|
256 |
/**
|
257 |
* test enable
|
258 |
*
|
259 |
* @expectedException CakeLogException
|
260 |
* @return void
|
261 |
*/
|
262 |
public function testStreamEnable() { |
263 |
CakeLog::config('spam', array( |
264 |
'engine' => 'File', |
265 |
'file' => 'spam', |
266 |
)); |
267 |
$this->assertTrue(CakeLog::enabled('spam')); |
268 |
CakeLog::drop('spam'); |
269 |
CakeLog::enable('bogus_stream'); |
270 |
} |
271 |
|
272 |
/**
|
273 |
* test disable
|
274 |
*
|
275 |
* @expectedException CakeLogException
|
276 |
* @return void
|
277 |
*/
|
278 |
public function testStreamDisable() { |
279 |
CakeLog::config('spam', array( |
280 |
'engine' => 'File', |
281 |
'file' => 'spam', |
282 |
)); |
283 |
$this->assertTrue(CakeLog::enabled('spam')); |
284 |
CakeLog::disable('spam'); |
285 |
$this->assertFalse(CakeLog::enabled('spam')); |
286 |
CakeLog::drop('spam'); |
287 |
CakeLog::enable('bogus_stream'); |
288 |
} |
289 |
|
290 |
/**
|
291 |
* test enabled() invalid stream
|
292 |
*
|
293 |
* @expectedException CakeLogException
|
294 |
* @return void
|
295 |
*/
|
296 |
public function testStreamEnabledInvalid() { |
297 |
CakeLog::enabled('bogus_stream'); |
298 |
} |
299 |
|
300 |
/**
|
301 |
* test disable invalid stream
|
302 |
*
|
303 |
* @expectedException CakeLogException
|
304 |
* @return void
|
305 |
*/
|
306 |
public function testStreamDisableInvalid() { |
307 |
CakeLog::disable('bogus_stream'); |
308 |
} |
309 |
|
310 |
/**
|
311 |
* resets log config
|
312 |
*
|
313 |
* @return void
|
314 |
*/
|
315 |
protected function _resetLogConfig() { |
316 |
CakeLog::config('debug', array( |
317 |
'engine' => 'File', |
318 |
'types' => array('notice', 'info', 'debug'), |
319 |
'file' => 'debug', |
320 |
)); |
321 |
CakeLog::config('error', array( |
322 |
'engine' => 'File', |
323 |
'types' => array('warning', 'error', 'critical', 'alert', 'emergency'), |
324 |
'file' => 'error', |
325 |
)); |
326 |
} |
327 |
|
328 |
/**
|
329 |
* delete logs
|
330 |
*
|
331 |
* @return void
|
332 |
*/
|
333 |
protected function _deleteLogs() { |
334 |
if (file_exists(LOGS . 'shops.log')) { |
335 |
unlink(LOGS . 'shops.log'); |
336 |
} |
337 |
if (file_exists(LOGS . 'error.log')) { |
338 |
unlink(LOGS . 'error.log'); |
339 |
} |
340 |
if (file_exists(LOGS . 'debug.log')) { |
341 |
unlink(LOGS . 'debug.log'); |
342 |
} |
343 |
if (file_exists(LOGS . 'bogus.log')) { |
344 |
unlink(LOGS . 'bogus.log'); |
345 |
} |
346 |
if (file_exists(LOGS . 'spam.log')) { |
347 |
unlink(LOGS . 'spam.log'); |
348 |
} |
349 |
if (file_exists(LOGS . 'eggs.log')) { |
350 |
unlink(LOGS . 'eggs.log'); |
351 |
} |
352 |
} |
353 |
|
354 |
/**
|
355 |
* test backward compatible scoped logging
|
356 |
*
|
357 |
* @return void
|
358 |
*/
|
359 |
public function testScopedLoggingBC() { |
360 |
$this->_resetLogConfig();
|
361 |
|
362 |
CakeLog::config('shops', array( |
363 |
'engine' => 'File', |
364 |
'types' => array('info', 'notice', 'warning'), |
365 |
'scopes' => array('transactions', 'orders'), |
366 |
'file' => 'shops', |
367 |
)); |
368 |
$this->_deleteLogs();
|
369 |
|
370 |
CakeLog::write('info', 'info message'); |
371 |
$this->assertFalse(file_exists(LOGS . 'error.log')); |
372 |
$this->assertTrue(file_exists(LOGS . 'debug.log')); |
373 |
|
374 |
$this->_deleteLogs();
|
375 |
|
376 |
CakeLog::write('transactions', 'transaction message'); |
377 |
$this->assertTrue(file_exists(LOGS . 'shops.log')); |
378 |
$this->assertFalse(file_exists(LOGS . 'transactions.log')); |
379 |
$this->assertFalse(file_exists(LOGS . 'error.log')); |
380 |
$this->assertFalse(file_exists(LOGS . 'debug.log')); |
381 |
|
382 |
$this->_deleteLogs();
|
383 |
|
384 |
CakeLog::write('error', 'error message'); |
385 |
$this->assertTrue(file_exists(LOGS . 'error.log')); |
386 |
$this->assertFalse(file_exists(LOGS . 'debug.log')); |
387 |
$this->assertFalse(file_exists(LOGS . 'shops.log')); |
388 |
|
389 |
$this->_deleteLogs();
|
390 |
|
391 |
CakeLog::write('orders', 'order message'); |
392 |
$this->assertFalse(file_exists(LOGS . 'error.log')); |
393 |
$this->assertFalse(file_exists(LOGS . 'debug.log')); |
394 |
$this->assertFalse(file_exists(LOGS . 'orders.log')); |
395 |
$this->assertTrue(file_exists(LOGS . 'shops.log')); |
396 |
|
397 |
$this->_deleteLogs();
|
398 |
|
399 |
CakeLog::write('warning', 'warning message'); |
400 |
$this->assertTrue(file_exists(LOGS . 'error.log')); |
401 |
$this->assertFalse(file_exists(LOGS . 'debug.log')); |
402 |
|
403 |
$this->_deleteLogs();
|
404 |
|
405 |
CakeLog::drop('shops'); |
406 |
} |
407 |
|
408 |
/**
|
409 |
* Test that scopes are exclusive and don't bleed.
|
410 |
*
|
411 |
* @return void
|
412 |
*/
|
413 |
public function testScopedLoggingExclusive() { |
414 |
$this->_deleteLogs();
|
415 |
|
416 |
CakeLog::config('shops', array( |
417 |
'engine' => 'File', |
418 |
'types' => array('info', 'notice', 'warning'), |
419 |
'scopes' => array('transactions', 'orders'), |
420 |
'file' => 'shops.log', |
421 |
)); |
422 |
CakeLog::config('eggs', array( |
423 |
'engine' => 'File', |
424 |
'types' => array('info', 'notice', 'warning'), |
425 |
'scopes' => array('eggs'), |
426 |
'file' => 'eggs.log', |
427 |
)); |
428 |
|
429 |
CakeLog::write('info', 'transactions message', 'transactions'); |
430 |
$this->assertFalse(file_exists(LOGS . 'eggs.log')); |
431 |
$this->assertTrue(file_exists(LOGS . 'shops.log')); |
432 |
|
433 |
$this->_deleteLogs();
|
434 |
|
435 |
CakeLog::write('info', 'eggs message', 'eggs'); |
436 |
$this->assertTrue(file_exists(LOGS . 'eggs.log')); |
437 |
$this->assertFalse(file_exists(LOGS . 'shops.log')); |
438 |
} |
439 |
|
440 |
/**
|
441 |
* test scoped logging
|
442 |
*
|
443 |
* @return void
|
444 |
*/
|
445 |
public function testScopedLogging() { |
446 |
$this->_resetLogConfig();
|
447 |
$this->_deleteLogs();
|
448 |
|
449 |
CakeLog::config('string-scope', array( |
450 |
'engine' => 'File', |
451 |
'types' => array('info', 'notice', 'warning'), |
452 |
'scopes' => 'string-scope', |
453 |
'file' => 'string-scope.log' |
454 |
)); |
455 |
CakeLog::write('info', 'info message', 'string-scope'); |
456 |
$this->assertTrue(file_exists(LOGS . 'string-scope.log')); |
457 |
|
458 |
CakeLog::drop('string-scope'); |
459 |
|
460 |
CakeLog::config('shops', array( |
461 |
'engine' => 'File', |
462 |
'types' => array('info', 'notice', 'warning'), |
463 |
'scopes' => array('transactions', 'orders'), |
464 |
'file' => 'shops.log', |
465 |
)); |
466 |
|
467 |
CakeLog::write('info', 'info message', 'transactions'); |
468 |
$this->assertFalse(file_exists(LOGS . 'error.log')); |
469 |
$this->assertTrue(file_exists(LOGS . 'shops.log')); |
470 |
$this->assertTrue(file_exists(LOGS . 'debug.log')); |
471 |
|
472 |
$this->_deleteLogs();
|
473 |
|
474 |
CakeLog::write('transactions', 'transaction message', 'orders'); |
475 |
$this->assertTrue(file_exists(LOGS . 'shops.log')); |
476 |
$this->assertFalse(file_exists(LOGS . 'transactions.log')); |
477 |
$this->assertFalse(file_exists(LOGS . 'error.log')); |
478 |
$this->assertFalse(file_exists(LOGS . 'debug.log')); |
479 |
|
480 |
$this->_deleteLogs();
|
481 |
|
482 |
CakeLog::write('error', 'error message', 'orders'); |
483 |
$this->assertTrue(file_exists(LOGS . 'error.log')); |
484 |
$this->assertFalse(file_exists(LOGS . 'debug.log')); |
485 |
$this->assertFalse(file_exists(LOGS . 'shops.log')); |
486 |
|
487 |
$this->_deleteLogs();
|
488 |
|
489 |
CakeLog::write('orders', 'order message', 'transactions'); |
490 |
$this->assertFalse(file_exists(LOGS . 'error.log')); |
491 |
$this->assertFalse(file_exists(LOGS . 'debug.log')); |
492 |
$this->assertFalse(file_exists(LOGS . 'orders.log')); |
493 |
$this->assertTrue(file_exists(LOGS . 'shops.log')); |
494 |
|
495 |
$this->_deleteLogs();
|
496 |
|
497 |
CakeLog::write('warning', 'warning message', 'orders'); |
498 |
$this->assertTrue(file_exists(LOGS . 'error.log')); |
499 |
$this->assertTrue(file_exists(LOGS . 'shops.log')); |
500 |
$this->assertFalse(file_exists(LOGS . 'debug.log')); |
501 |
|
502 |
$this->_deleteLogs();
|
503 |
|
504 |
CakeLog::drop('shops'); |
505 |
} |
506 |
|
507 |
/**
|
508 |
* test bogus type and scope
|
509 |
*
|
510 |
* @return void
|
511 |
*/
|
512 |
public function testBogusTypeAndScope() { |
513 |
$this->_resetLogConfig();
|
514 |
$this->_deleteLogs();
|
515 |
|
516 |
CakeLog::config('file', array( |
517 |
'engine' => 'File', |
518 |
'path' => LOGS |
519 |
)); |
520 |
|
521 |
CakeLog::write('bogus', 'bogus message'); |
522 |
$this->assertTrue(file_exists(LOGS . 'bogus.log')); |
523 |
$this->assertFalse(file_exists(LOGS . 'error.log')); |
524 |
$this->assertFalse(file_exists(LOGS . 'debug.log')); |
525 |
$this->_deleteLogs();
|
526 |
|
527 |
CakeLog::write('bogus', 'bogus message', 'bogus'); |
528 |
$this->assertTrue(file_exists(LOGS . 'bogus.log')); |
529 |
$this->assertFalse(file_exists(LOGS . 'error.log')); |
530 |
$this->assertFalse(file_exists(LOGS . 'debug.log')); |
531 |
$this->_deleteLogs();
|
532 |
|
533 |
CakeLog::write('error', 'bogus message', 'bogus'); |
534 |
$this->assertFalse(file_exists(LOGS . 'bogus.log')); |
535 |
$this->assertTrue(file_exists(LOGS . 'error.log')); |
536 |
$this->assertFalse(file_exists(LOGS . 'debug.log')); |
537 |
$this->_deleteLogs();
|
538 |
} |
539 |
|
540 |
/**
|
541 |
* test scoped logging with convenience methods
|
542 |
*
|
543 |
* @return void
|
544 |
*/
|
545 |
public function testConvenienceScopedLogging() { |
546 |
if (file_exists(LOGS . 'shops.log')) { |
547 |
unlink(LOGS . 'shops.log'); |
548 |
} |
549 |
if (file_exists(LOGS . 'error.log')) { |
550 |
unlink(LOGS . 'error.log'); |
551 |
} |
552 |
if (file_exists(LOGS . 'debug.log')) { |
553 |
unlink(LOGS . 'debug.log'); |
554 |
} |
555 |
|
556 |
$this->_resetLogConfig();
|
557 |
CakeLog::config('shops', array( |
558 |
'engine' => 'File', |
559 |
'types' => array('info', 'debug', 'notice', 'warning'), |
560 |
'scopes' => array('transactions', 'orders'), |
561 |
'file' => 'shops', |
562 |
)); |
563 |
|
564 |
CakeLog::info('info message', 'transactions'); |
565 |
$this->assertFalse(file_exists(LOGS . 'error.log')); |
566 |
$this->assertTrue(file_exists(LOGS . 'shops.log')); |
567 |
$this->assertTrue(file_exists(LOGS . 'debug.log')); |
568 |
|
569 |
$this->_deleteLogs();
|
570 |
|
571 |
CakeLog::error('error message', 'orders'); |
572 |
$this->assertTrue(file_exists(LOGS . 'error.log')); |
573 |
$this->assertFalse(file_exists(LOGS . 'debug.log')); |
574 |
$this->assertFalse(file_exists(LOGS . 'shops.log')); |
575 |
|
576 |
$this->_deleteLogs();
|
577 |
|
578 |
CakeLog::warning('warning message', 'orders'); |
579 |
$this->assertTrue(file_exists(LOGS . 'error.log')); |
580 |
$this->assertTrue(file_exists(LOGS . 'shops.log')); |
581 |
$this->assertFalse(file_exists(LOGS . 'debug.log')); |
582 |
|
583 |
$this->_deleteLogs();
|
584 |
|
585 |
CakeLog::drop('shops'); |
586 |
} |
587 |
|
588 |
/**
|
589 |
* test convenience methods
|
590 |
*
|
591 |
* @return void
|
592 |
*/
|
593 |
public function testConvenienceMethods() { |
594 |
$this->_deleteLogs();
|
595 |
|
596 |
CakeLog::config('debug', array( |
597 |
'engine' => 'File', |
598 |
'types' => array('notice', 'info', 'debug'), |
599 |
'file' => 'debug', |
600 |
)); |
601 |
CakeLog::config('error', array( |
602 |
'engine' => 'File', |
603 |
'types' => array('emergency', 'alert', 'critical', 'error', 'warning'), |
604 |
'file' => 'error', |
605 |
)); |
606 |
|
607 |
$testMessage = 'emergency message'; |
608 |
CakeLog::emergency($testMessage); |
609 |
$contents = file_get_contents(LOGS . 'error.log'); |
610 |
$this->assertRegExp('/(Emergency|Critical): ' . $testMessage . '/', $contents); |
611 |
$this->assertFalse(file_exists(LOGS . 'debug.log')); |
612 |
$this->_deleteLogs();
|
613 |
|
614 |
$testMessage = 'alert message'; |
615 |
CakeLog::alert($testMessage); |
616 |
$contents = file_get_contents(LOGS . 'error.log'); |
617 |
$this->assertRegExp('/(Alert|Critical): ' . $testMessage . '/', $contents); |
618 |
$this->assertFalse(file_exists(LOGS . 'debug.log')); |
619 |
$this->_deleteLogs();
|
620 |
|
621 |
$testMessage = 'critical message'; |
622 |
CakeLog::critical($testMessage); |
623 |
$contents = file_get_contents(LOGS . 'error.log'); |
624 |
$this->assertContains('Critical: ' . $testMessage, $contents); |
625 |
$this->assertFalse(file_exists(LOGS . 'debug.log')); |
626 |
$this->_deleteLogs();
|
627 |
|
628 |
$testMessage = 'error message'; |
629 |
CakeLog::error($testMessage); |
630 |
$contents = file_get_contents(LOGS . 'error.log'); |
631 |
$this->assertContains('Error: ' . $testMessage, $contents); |
632 |
$this->assertFalse(file_exists(LOGS . 'debug.log')); |
633 |
$this->_deleteLogs();
|
634 |
|
635 |
$testMessage = 'warning message'; |
636 |
CakeLog::warning($testMessage); |
637 |
$contents = file_get_contents(LOGS . 'error.log'); |
638 |
$this->assertContains('Warning: ' . $testMessage, $contents); |
639 |
$this->assertFalse(file_exists(LOGS . 'debug.log')); |
640 |
$this->_deleteLogs();
|
641 |
|
642 |
$testMessage = 'notice message'; |
643 |
CakeLog::notice($testMessage); |
644 |
$contents = file_get_contents(LOGS . 'debug.log'); |
645 |
$this->assertRegExp('/(Notice|Debug): ' . $testMessage . '/', $contents); |
646 |
$this->assertFalse(file_exists(LOGS . 'error.log')); |
647 |
$this->_deleteLogs();
|
648 |
|
649 |
$testMessage = 'info message'; |
650 |
CakeLog::info($testMessage); |
651 |
$contents = file_get_contents(LOGS . 'debug.log'); |
652 |
$this->assertRegExp('/(Info|Debug): ' . $testMessage . '/', $contents); |
653 |
$this->assertFalse(file_exists(LOGS . 'error.log')); |
654 |
$this->_deleteLogs();
|
655 |
|
656 |
$testMessage = 'debug message'; |
657 |
CakeLog::debug($testMessage); |
658 |
$contents = file_get_contents(LOGS . 'debug.log'); |
659 |
$this->assertContains('Debug: ' . $testMessage, $contents); |
660 |
$this->assertFalse(file_exists(LOGS . 'error.log')); |
661 |
$this->_deleteLogs();
|
662 |
} |
663 |
|
664 |
/**
|
665 |
* test levels customization
|
666 |
*
|
667 |
* @return void
|
668 |
*/
|
669 |
public function testLevelCustomization() { |
670 |
$this->skipIf(DIRECTORY_SEPARATOR === '\\', 'Log level tests not supported on Windows.'); |
671 |
|
672 |
$levels = CakeLog::defaultLevels(); |
673 |
$this->assertNotEmpty($levels); |
674 |
$result = array_keys($levels); |
675 |
$this->assertEquals(array(0, 1, 2, 3, 4, 5, 6, 7), $result); |
676 |
|
677 |
$levels = CakeLog::levels(array('foo', 'bar')); |
678 |
CakeLog::defaultLevels();
|
679 |
$this->assertEquals('foo', $levels[8]); |
680 |
$this->assertEquals('bar', $levels[9]); |
681 |
|
682 |
$levels = CakeLog::levels(array(11 => 'spam', 'bar' => 'eggs')); |
683 |
CakeLog::defaultLevels();
|
684 |
$this->assertEquals('spam', $levels[8]); |
685 |
$this->assertEquals('eggs', $levels[9]); |
686 |
|
687 |
$levels = CakeLog::levels(array(11 => 'spam', 'bar' => 'eggs'), false); |
688 |
CakeLog::defaultLevels();
|
689 |
$this->assertEquals(array('spam', 'eggs'), $levels); |
690 |
|
691 |
$levels = CakeLog::levels(array('ham', 9 => 'spam', '12' => 'fam'), false); |
692 |
CakeLog::defaultLevels();
|
693 |
$this->assertEquals(array('ham', 'spam', 'fam'), $levels); |
694 |
} |
695 |
|
696 |
/**
|
697 |
* Test writing log files with custom levels
|
698 |
*
|
699 |
* @return void
|
700 |
*/
|
701 |
public function testCustomLevelWrites() { |
702 |
$this->_deleteLogs();
|
703 |
$this->_resetLogConfig();
|
704 |
|
705 |
CakeLog::levels(array('spam', 'eggs')); |
706 |
|
707 |
$testMessage = 'error message'; |
708 |
CakeLog::write('error', $testMessage); |
709 |
CakeLog::defaultLevels();
|
710 |
$this->assertTrue(file_exists(LOGS . 'error.log')); |
711 |
$contents = file_get_contents(LOGS . 'error.log'); |
712 |
$this->assertContains('Error: ' . $testMessage, $contents); |
713 |
|
714 |
CakeLog::config('spam', array( |
715 |
'engine' => 'File', |
716 |
'file' => 'spam.log', |
717 |
'types' => 'spam', |
718 |
)); |
719 |
CakeLog::config('eggs', array( |
720 |
'engine' => 'File', |
721 |
'file' => 'eggs.log', |
722 |
'types' => array('spam', 'eggs'), |
723 |
)); |
724 |
|
725 |
$testMessage = 'spam message'; |
726 |
CakeLog::write('spam', $testMessage); |
727 |
CakeLog::defaultLevels();
|
728 |
$this->assertTrue(file_exists(LOGS . 'spam.log')); |
729 |
$this->assertTrue(file_exists(LOGS . 'eggs.log')); |
730 |
$contents = file_get_contents(LOGS . 'spam.log'); |
731 |
$this->assertContains('Spam: ' . $testMessage, $contents); |
732 |
|
733 |
$testMessage = 'egg message'; |
734 |
CakeLog::write('eggs', $testMessage); |
735 |
CakeLog::defaultLevels();
|
736 |
$contents = file_get_contents(LOGS . 'spam.log'); |
737 |
$this->assertNotContains('Eggs: ' . $testMessage, $contents); |
738 |
$contents = file_get_contents(LOGS . 'eggs.log'); |
739 |
$this->assertContains('Eggs: ' . $testMessage, $contents); |
740 |
|
741 |
CakeLog::drop('spam'); |
742 |
CakeLog::drop('eggs'); |
743 |
|
744 |
$this->_deleteLogs();
|
745 |
} |
746 |
|
747 |
} |