Revision: 3122
Author: janne.t.harkonen
Date: Mon May 3 05:28:24 2010
Log: hack to fix continuable errors in nested user keywords, to be
refactored
http://code.google.com/p/robotframework/source/detail?r=3122
Modified:
/trunk/src/robot/running/runerrors.py
/trunk/src/robot/running/userkeyword.py
=======================================
--- /trunk/src/robot/running/runerrors.py Mon May 3 00:10:16 2010
+++ /trunk/src/robot/running/runerrors.py Mon May 3 05:28:24 2010
@@ -121,16 +121,25 @@
self._init_err = err
def setup_err(self, err):
- self._setup_err = err
+ if isinstance(err, basestring):
+ self._setup_err = err
+ else:
+ self._setup_err = self._form_error_message(err)
def setup_failed(self):
return bool(self._setup_err)
def kw_err(self, err):
- self._kw_errs.append(err)
+ if isinstance(err, basestring):
+ self._kw_errs.append(err)
+ else:
+ self._kw_errs.extend(err)
def teardown_err(self, err):
- self._teardown_err = err
+ if isinstance(err, basestring):
+ self._teardown_err = err
+ else:
+ self._teardown_err = self._form_error_message(err)
def teardown_failed(self):
return bool(self._teardown_err)
@@ -138,7 +147,7 @@
def get_message(self):
if self._setup_err:
return 'Setup failed:\n%s' % self._setup_err
- return _form_error_message(self._kw_errs)
+ return self._form_error_message(self._kw_errs)
def get_teardown_message(self, message):
if message == '':
@@ -147,24 +156,8 @@
def parent_or_init_error(self):
return self._parent_err or self._init_err
-
-
-class UserKeywordRunErrors(object):
-
- def __init__(self):
- self._errors = []
-
- def add(self, msg):
- self._errors.append(msg)
-
- def has_errors(self):
- return bool(self._errors)
-
- def get_message(self):
- return _form_error_message(self._errors)
-
-
-def _form_error_message(errors):
- """Returns list of errors formatted as a string (empty string is
returned if list is empty)"""
- return '\n\n'.join(errors if len(errors) == 1 else [ 'Error %d: %s' %
(i+1, err)
- for i, err in
enumerate(errors) ])
+
+ def _form_error_message(self, errors):
+ """Returns list of errors formatted as a string (empty string is
returned if list is empty)"""
+ return '\n\n'.join(errors if len(errors) == 1 else
[ 'Error %d: %s' % (i+1, err)
+ for i, err in
enumerate(errors) ])
=======================================
--- /trunk/src/robot/running/userkeyword.py Mon May 3 02:44:18 2010
+++ /trunk/src/robot/running/userkeyword.py Mon May 3 05:28:24 2010
@@ -23,7 +23,6 @@
from keywords import KeywordFactory
from timeouts import KeywordTimeout
from arguments import UserKeywordArguments
-from runerrors import UserKeywordRunErrors
def PublicUserLibrary(path):
@@ -144,11 +143,11 @@
output)
self._verify_keyword_is_valid()
self.timeout.start()
- errs = UserKeywordRunErrors()
+ errs = []
for kw in self.keywords:
self._run_with_error_handling(kw, output, namespace, errs)
- if errs.has_errors():
- raise ExecutionFailed(errs.get_message(), cont=True)
+ if errs:
+ raise ExecutionFailed(errs, cont=True)
return self._get_return_value(namespace.variables)
def _verify_keyword_is_valid(self):
@@ -163,9 +162,13 @@
try:
kw.run(output, namespace)
except ExecutionFailed, err:
- errs.add(err.msg)
+ if isinstance(err.msg, basestring):
+ errs.append(err.msg)
+ else:
+ errs.extend(err.msg)
if not err.cont:
- raise
ExecutionFailed(errs.get_message(),exit=err.exit,syntax=err.syntax,timeout=err.timeout)
+ raise ExecutionFailed(errs, exit=err.exit,
+
syntax=err.syntax,timeout=err.timeout)
def _get_return_value(self, variables):
if not self.return_value: