2 new revisions:
Revision: c6264d025db8
Author: Pekka Klärck
Date: Tue Jan 3 03:42:43 2012
Log: Importer: use LOGGER as logger if logger is None
http://code.google.com/p/robotframework/source/detail?r=c6264d025db8
Revision: eaf1314435fa
Author: Pekka Klärck
Date: Tue Jan 3 04:26:44 2012
Log: listener import/instantiate cleanup
http://code.google.com/p/robotframework/source/detail?r=eaf1314435fa
==============================================================================
Revision: c6264d025db8
Author: Pekka Klärck
Date: Tue Jan 3 03:42:43 2012
Log: Importer: use LOGGER as logger if logger is None
http://code.google.com/p/robotframework/source/detail?r=c6264d025db8
Modified:
/src/robot/output/listeners.py
/src/robot/running/testlibraries.py
/src/robot/utils/importer.py
=======================================
--- /src/robot/output/listeners.py Sun Jan 1 15:02:56 2012
+++ /src/robot/output/listeners.py Tue Jan 3 03:42:43 2012
@@ -217,7 +217,7 @@
self.is_java = utils.is_jython and isinstance(listener, Object)
def _import_listener(self, name, args):
- importer = utils.Importer('listener', logger=LOGGER)
+ importer = utils.Importer('listener')
listener = importer.import_class_or_module(os.path.normpath(name))
if not inspect.ismodule(listener):
listener = listener(*args)
=======================================
--- /src/robot/running/testlibraries.py Sun Jan 1 15:02:56 2012
+++ /src/robot/running/testlibraries.py Tue Jan 3 03:42:43 2012
@@ -33,7 +33,7 @@
def TestLibrary(name, args=None, variables=None, create_handlers=True):
with OutputCapturer(library_import=True):
- importer = utils.Importer('test library', logger=LOGGER)
+ importer = utils.Importer('test library')
libcode = importer.import_class_or_module(name)
libclass = _get_lib_class(libcode)
lib = libclass(libcode, name, args or [], variables)
=======================================
--- /src/robot/utils/importer.py Mon Jan 2 14:42:34 2012
+++ /src/robot/utils/importer.py Tue Jan 3 03:42:43 2012
@@ -34,6 +34,8 @@
class Importer(object):
def __init__(self, type=None, logger=None):
+ if not logger:
+ from robot.output import LOGGER as logger
self._type = type or ''
self._logger = logger
self._importers = [ByPathImporter(), NonDottedImporter(),
DottedImporter()]
==============================================================================
Revision: eaf1314435fa
Author: Pekka Klärck
Date: Tue Jan 3 04:26:44 2012
Log: listener import/instantiate cleanup
http://code.google.com/p/robotframework/source/detail?r=eaf1314435fa
Modified:
/atest/robot/output/listener_interface/importing_listeners.txt
/atest/robot/output/listener_interface/listener_resource.txt
/atest/robot/output/listener_interface/old_importing_listeners.txt
/src/robot/output/listeners.py
=======================================
--- /atest/robot/output/listener_interface/importing_listeners.txt Sun Jan
1 15:03:52 2012
+++ /atest/robot/output/listener_interface/importing_listeners.txt Tue Jan
3 04:26:44 2012
@@ -27,12 +27,18 @@
Listener With Wrong Number Of Arguments
[Template] Check Syslog Contains
- Taking listener 'listeners.WithArgs' into use failed: TypeError:
__init__() takes at least 2 arguments (1 given)
- Taking listener 'listeners.WithArgs:1:2:3' into use failed: TypeError:
__init__()
+ Taking listener 'listeners.WithArgs' into use failed:
+ ... Creating instance failed:
+ ... TypeError: __init__() takes at least 2 arguments (1
given)${EMPTY TB}
+ Taking listener 'listeners.WithArgs:1:2:3' into use failed:
+ ... Creating instance failed:
+ ... TypeError: __init__() takes at most 3 arguments (4
given)${EMPTY TB}
Non Existing Listener
[Template] Check Syslog Contains
- Taking listener 'NonExistingListener' into use failed: Importing
listener 'NonExistingListener' failed: ImportError:
+ Taking listener 'NonExistingListener' into use failed:
+ ... Importing listener 'NonExistingListener' failed:
+ ... ImportError: No module named NonExistingListener${EMPTY TB}
Java Listener
[Tags] jybot
@@ -47,8 +53,12 @@
Java Listener With Wrong Number Of Arguments
[Tags] jybot
[Template] Check Syslog Contains
- Taking listener 'JavaListenerWithArgs' into use failed: TypeError:
JavaListenerWithArgs(): expected 2 args; got 0
- Taking listener 'JavaListenerWithArgs:b:a:r' into use failed:
TypeError: JavaListenerWithArgs(): expected 2 args; got 3
+ Taking listener 'JavaListenerWithArgs' into use failed:
+ ... Creating instance failed:
+ ... TypeError: JavaListenerWithArgs(): expected 2 args; got
0${EMPTY TB}
+ Taking listener 'JavaListenerWithArgs:b:a:r' into use failed:
+ ... Creating instance failed:
+ ... TypeError: JavaListenerWithArgs(): expected 2 args; got
3${EMPTY TB}
*** Keywords ***
=======================================
--- /atest/robot/output/listener_interface/listener_resource.txt Sun Jan 1
15:03:52 2012
+++ /atest/robot/output/listener_interface/listener_resource.txt Tue Jan 3
04:26:44 2012
@@ -14,6 +14,7 @@
${SUITE_MSG} 1 critical test, 1 passed, 0 failed\n 2 tests total, 1
passed, 1 failed
${SUITE_MSG_2} 2 critical tests, 1 passed, 1 failed\n 2 tests total, 1
passed, 1 failed
${LISTENERS} ${CURDIR}${/}..${/}..${/}..${/}testresources${/}listeners
+${EMPTY TB} \nTraceback (most recent call last):\n${SPACE*2}None\n
*** Keywords ***
=======================================
--- /atest/robot/output/listener_interface/old_importing_listeners.txt Sun
Jan 1 15:03:52 2012
+++ /atest/robot/output/listener_interface/old_importing_listeners.txt Tue
Jan 3 04:26:44 2012
@@ -27,12 +27,18 @@
Listener With Wrong Number Of Arguments
[Template] Check Syslog contains
- Taking listener 'old_listeners.WithArgs' into use failed: TypeError:
__init__() takes at least 2 arguments (1 given)
- Taking listener 'old_listeners.WithArgs:1:2:3' into use failed:
TypeError: __init__()
+ Taking listener 'old_listeners.WithArgs' into use failed:
+ ... Creating instance failed:
+ ... TypeError: __init__() takes at least 2 arguments (1
given)${EMPTY TB}
+ Taking listener 'old_listeners.WithArgs:1:2:3' into use failed:
+ ... Creating instance failed:
+ ... TypeError: __init__() takes at most 3 arguments (4
given)${EMPTY TB}
Non Existing Listener
[Template] Check Syslog contains
- Taking listener 'NonExistingListener' into use failed: Importing
listener 'NonExistingListener' failed: ImportError:
+ Taking listener 'NonExistingListener' into use failed:
+ ... Importing listener 'NonExistingListener' failed:
+ ... ImportError: No module named NonExistingListener${EMPTY TB}
Java Listener
[Tags] jybot
@@ -47,8 +53,12 @@
Java Listener With Wrong Number Of Arguments
[Tags] jybot
[Template] Check Syslog contains
- Taking listener 'OldJavaListenerWithArgs' into use failed: TypeError:
OldJavaListenerWithArgs(): expected 2 args; got 0
- Taking listener 'OldJavaListenerWithArgs:b:a:r' into use failed:
TypeError: OldJavaListenerWithArgs(): expected 2 args; got 3
+ Taking listener 'OldJavaListenerWithArgs' into use failed:
+ ... Creating instance failed:
+ ... TypeError: OldJavaListenerWithArgs(): expected 2 args; got
0${EMPTY TB}
+ Taking listener 'OldJavaListenerWithArgs:b:a:r' into use failed:
+ ... Creating instance failed:
+ ... TypeError: OldJavaListenerWithArgs(): expected 2 args; got
3${EMPTY TB}
*** Keywords ***
=======================================
--- /src/robot/output/listeners.py Tue Jan 3 03:42:43 2012
+++ /src/robot/output/listeners.py Tue Jan 3 04:26:44 2012
@@ -68,13 +68,11 @@
for name, args in listener_data:
try:
listeners.append(_ListenerProxy(name, args))
- except:
- message, details = utils.get_error_details()
+ except DataError, err:
if args:
name += ':' + ':'.join(args)
LOGGER.error("Taking listener '%s' into use failed: %s"
- % (name, message))
- LOGGER.info("Details:\n%s" % details)
+ % (name, unicode(err)))
return listeners
def start_suite(self, suite):
@@ -219,11 +217,18 @@
def _import_listener(self, name, args):
importer = utils.Importer('listener')
listener = importer.import_class_or_module(os.path.normpath(name))
- if not inspect.ismodule(listener):
- listener = listener(*args)
- elif args:
- raise DataError("Listeners implemented as modules do not take
arguments")
- return listener
+ if inspect.isclass(listener):
+ return self._instantiate_listener_class(listener, args)
+ if not args:
+ return listener
+ raise DataError("Listeners implemented as modules do not take
arguments")
+
+ def _instantiate_listener_class(self, listener, args):
+ try:
+ return listener(*args)
+ except:
+ raise DataError('Creating instance failed: %s\n%s'
+ % utils.get_error_details())
def _get_version(self, listener):
try: