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:

Reply via email to