| // Copyright 2013 The Closure Library Authors. All Rights Reserved. |
| // |
| // Licensed under the Apache License, Version 2.0 (the "License"); |
| // you may not use this file except in compliance with the License. |
| // You may obtain a copy of the License at |
| // |
| // http://www.apache.org/licenses/LICENSE-2.0 |
| // |
| // Unless required by applicable law or agreed to in writing, software |
| // distributed under the License is distributed on an "AS-IS" BASIS, |
| // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| // See the License for the specific language governing permissions and |
| // limitations under the License. |
| |
| /** |
| * @fileoverview Unit tests for goog.log. |
| */ |
| |
| /** @suppress {extraProvide} */ |
| goog.provide('goog.logTest'); |
| |
| goog.require('goog.debug.LogManager'); |
| goog.require('goog.log'); |
| goog.require('goog.log.Level'); |
| goog.require('goog.testing.jsunit'); |
| |
| |
| |
| goog.setTestOnly('goog.logTest'); |
| |
| |
| |
| /** |
| * A simple log handler that remembers the last record published. |
| * @constructor |
| * @private |
| */ |
| function TestHandler_() { |
| this.logRecord = null; |
| } |
| |
| TestHandler_.prototype.onPublish = function(logRecord) { |
| this.logRecord = logRecord; |
| }; |
| |
| |
| TestHandler_.prototype.reset = function() { |
| this.logRecord = null; |
| }; |
| |
| |
| function testParents() { |
| var logger2sibling1 = goog.log.getLogger('goog.test'); |
| var logger2sibling2 = goog.log.getLogger('goog.bar'); |
| var logger3sibling1 = goog.log.getLogger('goog.bar.foo'); |
| var logger3siblint2 = goog.log.getLogger('goog.bar.baaz'); |
| var rootLogger = goog.debug.LogManager.getRoot(); |
| var googLogger = goog.log.getLogger('goog'); |
| assertEquals(rootLogger, googLogger.getParent()); |
| assertEquals(googLogger, logger2sibling1.getParent()); |
| assertEquals(googLogger, logger2sibling2.getParent()); |
| assertEquals(logger2sibling2, logger3sibling1.getParent()); |
| assertEquals(logger2sibling2, logger3siblint2.getParent()); |
| } |
| |
| function testLogging1() { |
| var root = goog.debug.LogManager.getRoot(); |
| var handler = new TestHandler_(); |
| var f = goog.bind(handler.onPublish, handler); |
| goog.log.addHandler(root, f); |
| var logger = goog.log.getLogger('goog.bar.baaz'); |
| goog.log.log(logger, goog.log.Level.WARNING, 'foo'); |
| assertNotNull(handler.logRecord); |
| assertEquals(goog.log.Level.WARNING, handler.logRecord.getLevel()); |
| assertEquals('foo', handler.logRecord.getMessage()); |
| handler.logRecord = null; |
| |
| goog.log.removeHandler(root, f); |
| goog.log.log(logger, goog.log.Level.WARNING, 'foo'); |
| assertNull(handler.logRecord); |
| } |
| |
| function testLogging2() { |
| var root = goog.debug.LogManager.getRoot(); |
| var handler = new TestHandler_(); |
| var f = goog.bind(handler.onPublish, handler); |
| goog.log.addHandler(root, f); |
| var logger = goog.log.getLogger('goog.bar.baaz'); |
| goog.log.warning(logger, 'foo'); |
| assertNotNull(handler.logRecord); |
| assertEquals(goog.log.Level.WARNING, handler.logRecord.getLevel()); |
| assertEquals('foo', handler.logRecord.getMessage()); |
| handler.logRecord = null; |
| |
| goog.log.removeHandler(root, f); |
| goog.log.log(logger, goog.log.Level.WARNING, 'foo'); |
| assertNull(handler.logRecord); |
| } |
| |
| |
| function testFiltering() { |
| var root = goog.debug.LogManager.getRoot(); |
| var handler = new TestHandler_(); |
| var f = goog.bind(handler.onPublish, handler); |
| root.addHandler(f); |
| var logger1 = goog.log.getLogger('goog.bar.foo', goog.log.Level.WARNING); |
| var logger2 = goog.log.getLogger('goog.bar.baaz', goog.log.Level.INFO); |
| goog.log.warning(logger2, 'foo'); |
| assertNotNull(handler.logRecord); |
| assertEquals(goog.log.Level.WARNING, handler.logRecord.getLevel()); |
| assertEquals('foo', handler.logRecord.getMessage()); |
| handler.reset(); |
| goog.log.info(logger1, 'bar'); |
| assertNull(handler.logRecord); |
| goog.log.warning(logger1, 'baaz'); |
| assertNotNull(handler.logRecord); |
| handler.reset(); |
| goog.log.error(logger1, 'baaz'); |
| assertNotNull(handler.logRecord); |
| } |
| |
| |
| function testException() { |
| var root = goog.debug.LogManager.getRoot(); |
| var handler = new TestHandler_(); |
| var f = goog.bind(handler.onPublish, handler); |
| root.addHandler(f); |
| var logger = goog.log.getLogger('goog.debug.logger_test'); |
| var ex = Error('boo!'); |
| goog.log.error(logger, 'hello', ex); |
| assertNotNull(handler.logRecord); |
| assertEquals(goog.log.Level.SEVERE, handler.logRecord.getLevel()); |
| assertEquals('hello', handler.logRecord.getMessage()); |
| assertEquals(ex, handler.logRecord.getException()); |
| } |
| |
| |
| function testMessageCallbacks() { |
| var root = goog.debug.LogManager.getRoot(); |
| var handler = new TestHandler_(); |
| var f = goog.bind(handler.onPublish, handler); |
| root.addHandler(f); |
| var logger = goog.log.getLogger('goog.bar.foo'); |
| logger.setLevel(goog.log.Level.WARNING); |
| |
| logger.log(goog.log.Level.INFO, function() { |
| throw "Message callback shouldn't be called when below logger's level!"; |
| }); |
| assertNull(handler.logRecord); |
| |
| logger.log(goog.log.Level.WARNING, function() {return 'heya'}); |
| assertNotNull(handler.logRecord); |
| assertEquals(goog.log.Level.WARNING, handler.logRecord.getLevel()); |
| assertEquals('heya', handler.logRecord.getMessage()); |
| } |
| |
| |
| function testGetLogRecord() { |
| var name = 'test.get.log.record'; |
| var level = goog.log.Level.FINE; |
| var msg = 'msg'; |
| |
| var logger = goog.log.getLogger(name); |
| var logRecord = logger.getLogRecord(level, msg); |
| |
| assertEquals(name, logRecord.getLoggerName()); |
| assertEquals(level, logRecord.getLevel()); |
| assertEquals(msg, logRecord.getMessage()); |
| |
| assertNull(logRecord.getException()); |
| } |
| |
| function testGetLogRecordWithException() { |
| var name = 'test.get.log.record'; |
| var level = goog.log.Level.FINE; |
| var msg = 'msg'; |
| var ex = Error('Hi'); |
| |
| var logger = goog.log.getLogger(name); |
| var logRecord = logger.getLogRecord(level, msg, ex); |
| |
| assertEquals(name, logRecord.getLoggerName()); |
| assertEquals(level, logRecord.getLevel()); |
| assertEquals(msg, logRecord.getMessage()); |
| assertEquals(ex, logRecord.getException()); |
| } |
| |