Revision: 3818
Author: jussi.ao.malinen
Date: Thu Jul 22 05:40:36 2010
Log: Redo of commit r3815, with the change that now an optional argument is needed to enable two phase initialization of testlibraries.
http://code.google.com/p/robotframework/source/detail?r=3818

Modified:
 /trunk/src/robot/running/importer.py
 /trunk/src/robot/running/testlibraries.py

=======================================
--- /trunk/src/robot/running/importer.py        Tue Jul 20 06:53:37 2010
+++ /trunk/src/robot/running/importer.py        Thu Jul 22 05:40:36 2010
@@ -28,7 +28,7 @@
         self._resources = _LibraryCache()

     def import_library(self, name, args, alias, variables):
-        lib = TestLibrary(name, args, variables)
+        lib = TestLibrary(name, args, variables, create_handlers=False)
         positional, named = lib.positional_args, lib.named_args
         lib = self._import_library(name, positional, named, lib)
         if alias and name != alias:
@@ -50,6 +50,7 @@
LOGGER.info("Found test library '%s' with arguments %s from cache"
                         % (name, utils.seq2str2(positional)))
             return self._libraries[key]
+        lib.create_handlers()
         self._libraries[key] = lib
         libtype = lib.__class__.__name__.replace('Library', '').lower()[1:]
         LOGGER.info("Imported library '%s' with arguments %s (version %s, "
=======================================
--- /trunk/src/robot/running/testlibraries.py   Tue Jul 20 06:53:37 2010
+++ /trunk/src/robot/running/testlibraries.py   Thu Jul 22 05:40:36 2010
@@ -28,10 +28,13 @@
     from java.lang import Object


-def TestLibrary(name, args=None, variables=None):
+def TestLibrary(name, args=None, variables=None, create_handlers=True):
     libcode, source = utils.import_(name)
     libclass = _get_lib_class(libcode)
-    return libclass(libcode, source, name, args or [], variables)
+    lib = libclass(libcode, source, name, args or [], variables)
+    if create_handlers:
+        lib.create_handlers()
+    return lib


 def _get_lib_class(libcode):
@@ -76,6 +79,9 @@
             self._libcode = libcode
             self.init =  self._create_init_handler(libcode)
self.positional_args, self.named_args = self.init.arguments.resolve(args, variables)
+
+    def create_handlers(self):
+        if self._libcode:
             self._libinst = self.get_instance()
             self.handlers = self._create_handlers(self._libinst)
             self.init_scope_handling()

Reply via email to