diff options
Diffstat (limited to 'src/test/LoggerTest.py')
-rw-r--r-- | src/test/LoggerTest.py | 96 |
1 files changed, 96 insertions, 0 deletions
diff --git a/src/test/LoggerTest.py b/src/test/LoggerTest.py new file mode 100644 index 0000000..9848dcd --- /dev/null +++ b/src/test/LoggerTest.py @@ -0,0 +1,96 @@ +# -*- coding: utf-8 -*- +# libavg - Media Playback Engine. +# Copyright (C) 2003-2014 Ulrich von Zadow +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# Current versions can be found at www.libavg.de +# + +import StringIO +import logging + +from libavg import logger + +from testcase import * + + +class LoggerTestCase(AVGTestCase): + def __init__(self, testFuncName): + AVGTestCase.__init__(self, testFuncName) + self.testMsg = u'福 means good fortune' + + def setUp(self): + self.stream = StringIO.StringIO() + self.hdlr = logging.StreamHandler(self.stream) + self.pyLogger = logging.getLogger(__name__) + self.pyLogger.addHandler(self.hdlr) + self.pyLogger.propagate = False + self.pyLogger.level = logging.DEBUG + logger.addSink(self.pyLogger) + logger.removeStdLogSink() + + def tearDown(self): + self.pyLogger.removeHandler(self.hdlr) + + def _assertMsg(self): + self.stream.flush() + self.assert_(self.stream.getvalue().decode('utf8').find(self.testMsg) != -1) + self.stream.close() + + def _assertNoMsg(self): + self.stream.flush() + self.assert_(self.stream.getvalue().decode('utf8').find(self.testMsg) == -1) + self.stream.close() + + def testRemoveSink(self): + logger.removeSink(self.pyLogger) + logger.info(self.testMsg) + self._assertNoMsg() + + def testConfigureCategory(self): + snowmanCategory = logger.configureCategory(u'☃ Category') + logger.warning(self.testMsg, snowmanCategory) + self._assertMsg() + + def testReconfigureCategory(self): + snowmanCategory = logger.configureCategory(u'☃ Category', logger.Severity.INFO) + logger.info(self.testMsg, snowmanCategory) + self._assertMsg() + + def testOmitCategory(self): + logger.configureCategory(logger.Category.APP, logger.Severity.CRIT) + logger.info(self.testMsg) + self._assertNoMsg() + + def testLogCategory(self): + logger.configureCategory(logger.Category.APP, logger.Severity.INFO) + logger.info(self.testMsg) + self._assertMsg() + + def testUnknownCategoryWarning(self): + self.assertException(lambda: logger.error("Foo", "Bar")) + + +def loggerTestSuite(tests): + availableTests = ( + "testRemoveSink", + "testConfigureCategory", + "testReconfigureCategory", + "testOmitCategory", + "testLogCategory", + "testUnknownCategoryWarning", + ) + return createAVGTestSuite(availableTests, LoggerTestCase, tests) |