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()