20 split_args_from_name_or_path, type_name)
22 from .listenermethods
import ListenerMethods, LibraryListenerMethods
23 from .loggerhelper
import AbstractLoggerProxy, IsLogged
24 from .logger
import LOGGER
32 _method_names = (
'start_suite',
'end_suite',
'start_test',
'end_test',
33 'start_keyword',
'end_keyword',
'log_message',
'message',
34 'output_file',
'report_file',
'log_file',
'debug_file',
35 'xunit_file',
'library_import',
'resource_import',
36 'variables_import',
'close')
38 def __init__(self, listeners, log_level='INFO'):
40 listeners = ListenerProxy.import_listeners(listeners,
44 if name.endswith((
'_file',
'_import',
'log_message')):
46 setattr(self, name, method)
53 self._log_message(msg)
56 method = getattr(self,
'_%s_import' % import_type.lower())
60 method = getattr(self,
'_%s_file' % file_type.lower())
64 return any(isinstance(method, ListenerMethods)
and method
65 for method
in self.__dict__.values())
72 _method_names = (
'start_suite',
'end_suite',
'start_test',
'end_test',
73 'start_keyword',
'end_keyword',
'log_message',
'message',
80 if name ==
'log_message':
82 setattr(self, name, method)
85 listeners = ListenerProxy.import_listeners(listeners,
90 method.register(listeners, library)
93 return [method
for method
in self.__dict__.values()
94 if isinstance(method, LibraryListenerMethods)]
98 self.close(library=library)
100 method.unregister(library)
104 method.new_suite_scope()
108 method.discard_suite_scope()
115 self._log_message(msg)
124 class ListenerProxy(AbstractLoggerProxy):
130 def __init__(self, listener, method_names, prefix=None):
132 AbstractLoggerProxy.__init__(self, listener, method_names, prefix)
142 name = getattr(listener,
'__name__',
None)
or type_name(listener)
143 return listener, name
145 importer = Importer(
'listener')
146 listener = importer.import_class_or_module(os.path.normpath(name),
147 instantiate_with_args=args)
148 return listener, name
152 version =
int(listener.ROBOT_LISTENER_API_VERSION)
153 if version
not in (2, 3):
155 except AttributeError:
156 raise DataError(
"Listener '%s' does not have mandatory "
157 "'ROBOT_LISTENER_API_VERSION' attribute."
159 except (ValueError, TypeError):
160 raise DataError(
"Listener '%s' uses unsupported API version '%s'."
161 % (self.
namename, listener.ROBOT_LISTENER_API_VERSION))
166 raise_on_error=False):
168 for listener
in listeners:
170 imported.append(cls(listener, method_names, prefix))
171 except DataError
as err:
173 msg =
"Taking listener '%s' into use failed: %s" % (name, err)
Used when variable does not exist.
def set_log_level(self, level)
def register(self, listeners, library)
def imported(self, import_type, name, attrs)
def unregister(self, library, close=False)
def discard_suite_scope(self)
def _listener_methods(self)
def output_file(self, file_type, path)
def log_message(self, msg)
def new_suite_scope(self)
def __init__(self, log_level='INFO')
def __init__(self, listener, method_names, prefix=None)
def import_listeners(cls, listeners, method_names, prefix=None, raise_on_error=False)
def _get_version(self, listener)
def _import_listener(self, listener)
def log_message(self, msg)
def __init__(self, listeners, log_level='INFO')
def imported(self, import_type, name, attrs)
def set_log_level(self, level)
def output_file(self, file_type, path)
def split_args_from_name_or_path(name)