Author: janne.t.harkonen
Date: Tue Mar 24 05:59:07 2009
New Revision: 1499
Modified:
trunk/src/robot/output/systemlogger.py
trunk/utest/output/test_systemlogger.py
Log:
Loggers don't need to have all syslog methods.
Modified: trunk/src/robot/output/systemlogger.py
==============================================================================
--- trunk/src/robot/output/systemlogger.py (original)
+++ trunk/src/robot/output/systemlogger.py Tue Mar 24 05:59:07 2009
@@ -24,15 +24,18 @@
class SystemLogger2(AbstractLogger):
def __init__(self):
- self._loggers = []
-
- def write(self, message, level='INFO'):
- msg = Message(message, level)
- for logger in self._loggers:
- logger.write(msg, level)
+ self._writers = []
+ self._output_filers = []
+ self._closers = []
def register_logger(self, *loggers):
- self._loggers.extend(loggers)
+ for logger in loggers:
+ if hasattr(logger, 'write'):
+ self._writers.append(logger.write)
+ if hasattr(logger, 'output_file'):
+ self._output_filers.append(logger.output_file)
+ if hasattr(logger, 'close'):
+ self._closers.append(logger.close)
def register_file_logger(self, path=None, level='INFO'):
if not path:
@@ -41,13 +44,18 @@
if path:
self.register_logger(_FileLogger(path, level))
- def close(self):
- for logger in self._loggers:
- logger.close()
+ def write(self, message, level='INFO'):
+ msg = Message(message, level)
+ for write in self._writers:
+ write(msg, level)
def output_file(self, name, path):
- for logger in self._loggers:
- logger.output_file(name, path)
+ for output_file in self._output_filers:
+ output_file(name, path)
+
+ def close(self):
+ for close in self._closers:
+ close()
class SystemLogger(AbstractLogger):
Modified: trunk/utest/output/test_systemlogger.py
==============================================================================
--- trunk/utest/output/test_systemlogger.py (original)
+++ trunk/utest/output/test_systemlogger.py Tue Mar 24 05:59:07 2009
@@ -32,6 +32,14 @@
return LoggerMock(*self.expected)
+class LoggerMock2(LoggerMock):
+
+ def output_file(self, name, path):
+ self.output_file = (name, path)
+
+ def close(self):
+ self.closed = True
+
class TestSystemFileLogger(unittest.TestCase):
def setUp(self):
@@ -101,6 +109,21 @@
assert_equals(logger.msg.message, msg)
assert_equals(logger.msg.level, level)
+ def test_all_methods(self):
+ logger = LoggerMock2(('Hello, world!', 'INFO'))
+ self.syslog.register_logger(logger)
+ self.syslog.output_file('name', 'path')
+ self.syslog.close()
+ assert_equals(logger.output_file, ('name', 'path'))
+ assert_true(logger.closed)
+
+ def test_registered_logger_does_not_need_all_methods(self):
+ logger = LoggerMock(('Hello, world!', 'INFO'))
+ self.syslog.register_logger(logger)
+ self.syslog.output_file('name', 'path')
+ self.syslog.close()
+
if __name__ == "__main__":
unittest.main()
+