Author: janne.t.harkonen
Date: Wed Mar 25 02:25:56 2009
New Revision: 1525
Modified:
trunk/src/robot/__init__.py
trunk/src/robot/conf/settings.py
trunk/src/robot/output/output.py
trunk/src/robot/output/systemlogger.py
trunk/utest/output/test_systemlogger.py
Log:
Use the caching feature of SYSLOG.
Caching makes it possible to use SYSLOG easily also when parsing settings
Modified: trunk/src/robot/__init__.py
==============================================================================
--- trunk/src/robot/__init__.py (original)
+++ trunk/src/robot/__init__.py Wed Mar 25 02:25:56 2009
@@ -40,7 +40,6 @@
_run_or_rebot_from_cli(rebot, args, usage)
def _run_or_rebot_from_cli(method, cliargs, usage, **argparser_config):
- SYSLOG.register_command_line_monitor()
SYSLOG.register_file_logger()
ap = utils.ArgumentParser(usage, utils.get_full_version())
try:
@@ -51,6 +50,7 @@
except Information, msg:
_exit(INFO_PRINTED, str(msg))
except DataError, err:
+ SYSLOG.register_command_line_monitor()
_exit(DATA_ERROR, str(err))
try:
@@ -85,12 +85,12 @@
SYSLOG.register_command_line_monitor(settings['MonitorWidth'],
settings['MonitorColors'])
output = Output(settings)
- settings.report_possible_errors()
init_global_variables(settings)
_syslog_start_info('Robot', datasources, settings)
suite = TestSuite(datasources, settings)
suite.run(output)
- SYSLOG.info("Tests executed successfully. Statistics:\n%s" %
suite.get_stat_message())
+ SYSLOG.info("Tests execution ended. Statistics:\n%s"
+ % suite.get_stat_message())
testoutput = RobotTestOutput(suite, settings)
output.close1(suite)
if settings.is_rebot_needed():
@@ -121,7 +121,7 @@
"""
settings = RebotSettings(options)
SYSLOG.register_command_line_monitor(colors=settings['MonitorColors'])
- settings.report_possible_errors()
+ SYSLOG.disable_message_cache()
_syslog_start_info('Rebot', datasources, settings)
testoutput = RebotTestOutput(datasources, settings)
testoutput.serialize(settings, generator='Rebot')
Modified: trunk/src/robot/conf/settings.py
==============================================================================
--- trunk/src/robot/conf/settings.py (original)
+++ trunk/src/robot/conf/settings.py Wed Mar 25 02:25:56 2009
@@ -63,18 +63,10 @@
def __init__(self, opts={}):
self._opts = {}
- self._errors = []
self._cli_opts.update(self._extra_cli_opts)
self._process_deprecated_cli_opts(opts)
self._process_cli_opts(opts)
- def report_possible_errors(self):
- for msg, level in self._errors:
- SYSLOG.write(msg, level)
-
- def _add_error(self, msg, level='ERROR'):
- self._errors.append((msg, level))
-
def _process_cli_opts(self, opts):
for name, (cli_name, default) in self._cli_opts.items():
try:
@@ -90,11 +82,11 @@
if oldname not in opts or opts[oldname] in [None, []]:
continue
if newname:
- self._add_error("Option '--%s' is deprecated. Use '--%s' "
- "instead." % (oldname, newname), 'WARN')
+ SYSLOG.warn("Option '--%s' is deprecated. Use '--%s'
instead."
+ % (oldname, newname))
opts[newname] = opts[oldname]
else:
- self._add_error("Option '--%s' has been removed." %
oldname)
+ SYSLOG.error("Option '--%s' has been removed." % oldname)
def __setitem__(self, name, value):
if not self._cli_opts.has_key(name):
@@ -182,19 +174,19 @@
ret = []
for item in value:
tokens = item.split(':')
- if len(tokens) < 3:
- self._add_error("Invalid format for
option '--tagstatlink'. "
- "Expected 'tag:link:title' but
got '%s'." % item)
- continue
- ret.append((tokens[0], ':'.join(tokens[1:-1]), tokens[-1]))
+ if len(tokens) >= 3:
+ ret.append((tokens[0], ':'.join(tokens[1:-1]), tokens[-1]))
+ else:
+ SYSLOG.error("Invalid format for option '--tagstatlink'. "
+ "Expected 'tag:link:title' but got '%s'." %
item)
return ret
def _convert_to_integer(self, name, value):
try:
return int(value)
except ValueError:
- self._add_error("Option '--%s' expected integer value but
got '%s'. "
- "Default value used instead." % (name.lower(),
value))
+ SYSLOG.error("Option '--%s' expected integer value but
got '%s'. "
+ "Default value used instead." % (name.lower(),
value))
return self._cli_opts[name][1]
def _split_args_from_name(self, name):
Modified: trunk/src/robot/output/output.py
==============================================================================
--- trunk/src/robot/output/output.py (original)
+++ trunk/src/robot/output/output.py Wed Mar 25 02:25:56 2009
@@ -27,7 +27,6 @@
from debugfile import DebugFile
-
class Output(AbstractLogger):
def __init__(self, settings):
@@ -36,6 +35,7 @@
self.listeners = Listeners(settings['Listeners'])
self._execution_errors = _ExecutionErrorLogger()
SYSLOG.register_logger(self.listeners, self._execution_errors)
+ SYSLOG.disable_message_cache()
self._debugfile = DebugFile(settings['DebugFile'])
self._namegen = self._get_log_name_generator(settings['Log'])
self._settings = settings
Modified: trunk/src/robot/output/systemlogger.py
==============================================================================
--- trunk/src/robot/output/systemlogger.py (original)
+++ trunk/src/robot/output/systemlogger.py Wed Mar 25 02:25:56 2009
@@ -27,15 +27,18 @@
self._writers = []
self._output_filers = []
self._closers = []
- self.message_cache = []
+ self._message_cache = []
self.monitor = None
+ def disable_message_cache(self):
+ self._message_cache = None
+
def register_logger(self, *loggers):
for logger in loggers:
if hasattr(logger, 'write'):
self._writers.append(logger.write)
- if self.message_cache:
- for msg in self.message_cache:
+ if self._message_cache:
+ for msg in self._message_cache:
logger.write(msg, msg.level)
if hasattr(logger, 'output_file'):
self._output_filers.append(logger.output_file)
@@ -43,12 +46,8 @@
self._closers.append(logger.close)
def register_command_line_monitor(self, width=78, colors=True):
- if not self.monitor:
- self.monitor = CommandLineMonitor(width, colors)
- self.register_logger(self.monitor)
- else:
- self.monitor.width = width
- self.monitor.colors = colors
+ self.monitor = CommandLineMonitor(width, colors)
+ self.register_logger(self.monitor)
def register_file_logger(self, path=None, level='INFO'):
if not path:
@@ -68,10 +67,10 @@
def write(self, message, level='INFO'):
msg = Message(message, level)
- if self.message_cache is not None:
- self.message_cache.append(msg)
for write in self._writers:
write(msg, level)
+ if self._message_cache is not None:
+ self._message_cache.append(msg)
def output_file(self, name, path):
for output_file in self._output_filers:
Modified: trunk/utest/output/test_systemlogger.py
==============================================================================
--- trunk/utest/output/test_systemlogger.py (original)
+++ trunk/utest/output/test_systemlogger.py Wed Mar 25 02:25:56 2009
@@ -143,13 +143,11 @@
assert_equals(logger.msg.message, 'Another cached message')
def test_message_cache_can_be_turned_off(self):
- self.syslog.message_cache = None
+ self.syslog.disable_message_cache()
self.syslog.write('This message is not cached', 'INFO')
logger = LoggerMock(('', ''))
self.syslog.register_logger(logger)
assert_false(hasattr(logger, 'msg'))
-
-
if __name__ == "__main__":