Revision: 3142
Author: KariHusa
Date: Tue May  4 04:28:08 2010
Log: Refatoring
http://code.google.com/p/robotframework/source/detail?r=3142

Modified:
 /trunk/src/robot/errors.py
 /trunk/src/robot/running/keywords.py
 /trunk/src/robot/running/runerrors.py
 /trunk/src/robot/running/userkeyword.py

=======================================
--- /trunk/src/robot/errors.py  Tue May  4 01:05:02 2010
+++ /trunk/src/robot/errors.py  Tue May  4 04:28:08 2010
@@ -46,37 +46,37 @@

 class ExecutionFailed(RobotError):
     """Used for communicating failures in test execution"""
-    msg = property(lambda self: self._msg)

     def __init__(self, message, timeout=False, exit=False, cont=False,
                  syntax=False):
         RobotError.__init__(self, message)
-        self._msg = message
         self.timeout = timeout
         self.exit = exit
         self.cont = cont
         self.syntax = syntax

     def get_errors(self):
-        return [self.msg]
+        return [self]


 class MultipleErrors(ExecutionFailed):
-    msg = property(lambda self: ''.join(self._errors))

     def __init__(self, errors):
-        exit = any(err for err in errors if err.exit)
-        cont = any(err for err in errors if err.cont)
-        timeout = any(err for err in errors if err.timeout)
-        syntax = any(err for err in errors if err.syntax)
-        self._errors= []
-        for e in errors:
-            self._errors.extend(e.get_errors())
-        ExecutionFailed.__init__(self, '', timeout, exit, cont, syntax)
+        self.exit = any(err.exit for err in errors)
+        self.cont = all(err.cont for err in errors)
+        self.timeout = any(err.timeout for err in errors)
+        self.syntax = any(err.syntax for err in errors)
+        self._errors = errors

     def get_errors(self):
         return self._errors

+    def __unicode__(self):
+        if len(self._errors) == 1:
+            return str(self._errors[0])
+        return '\n\n'.join('Error %d: %s' % (i+1, err)
+                           for i, err in enumerate(self._errors))
+

 class TimeoutError(RobotError):
     """Used when test execution is timed out"""
=======================================
--- /trunk/src/robot/running/keywords.py        Tue May  4 03:17:01 2010
+++ /trunk/src/robot/running/keywords.py        Tue May  4 04:28:08 2010
@@ -18,65 +18,28 @@
 from robot.variables import is_list_var


-class _Keywords(object):
+class Keywords(object):

     def __init__(self, kwdata):
         self._keywords = [ _KeywordFactory(kw) for kw in kwdata ]

-    def __iter__(self):
-        return iter(self._keywords)
-
-    def _run(self, output, namespace):
+    def run(self, output, namespace):
         errors = []
         for kw in self._keywords:
-            error = self._run_with_error_handling(kw, output, namespace)
-            if error:
-                errors.append(error)
-                if not error.cont:
+            try:
+                kw.run(output, namespace)
+            except ExecutionFailed, err:
+                errors.extend(err.get_errors())
+                if not err.cont:
                     break
-        return self._report_errors(errors)
-
-    def _run_with_error_handling(self, kw, output, namespace):
-        try:
-            kw.run(output, namespace)
-            return None
-        except ExecutionFailed, err:
-            self._keyword_failed(err)
-            return err
-
-    def _keyword_failed(self, err):
-        pass
+        if errors:
+            raise MultipleErrors(errors)

     def __nonzero__(self):
         return bool(self._keywords)

-
-class TestCaseKeywords(_Keywords):
-
-    def run(self, output, namespace, test_timeout, suite_run_errors):
-        self.test_timeout = test_timeout
-        self.suite_run_errors = suite_run_errors
-        return self._run(output, namespace)
-
-    def _keyword_failed(self, err):
-        self.test_timeout.set_keyword_timeout(err.timeout)
-        self.suite_run_errors.test_failed(exit=err.exit)
-
-    def _report_errors(self, errors):
-        all_errors = []
-        for err in errors:
-            all_errors.extend(err.get_errors())
-        return all_errors
-
-
-class UserKeywordKeywords(_Keywords):
-
-    def run(self, output, namespace):
-        self._run(output, namespace)
-
-    def _report_errors(self, errors):
-        if errors:
-            raise MultipleErrors(errors)
+    def __iter__(self):
+        return iter(self._keywords)


 def _KeywordFactory(kwdata):
=======================================
--- /trunk/src/robot/running/runerrors.py       Tue May  4 01:05:02 2010
+++ /trunk/src/robot/running/runerrors.py       Tue May  4 04:28:08 2010
@@ -111,7 +111,7 @@
         self._parent_err = err.child_error() if err else None
         self._init_err = None
         self._setup_err = None
-        self._kw_errs = []
+        self._kw_err = None
         self._teardown_err = None

     def is_allowed_to_run(self):
@@ -121,22 +121,16 @@
         self._init_err = err

     def setup_err(self, err):
-        if isinstance(err, basestring):
-            self._setup_err = err
-        else:
-            self._setup_err = self._form_error_message(err)
+        self._setup_err = err

     def setup_failed(self):
         return bool(self._setup_err)

-    def kw_err(self, errors):
-        self._kw_errs = errors
+    def kw_err(self, error):
+        self._kw_err = error

     def teardown_err(self, err):
-        if isinstance(err, basestring):
-            self._teardown_err = err
-        else:
-            self._teardown_err = self._form_error_message(err)
+        self._teardown_err = err

     def teardown_failed(self):
         return bool(self._teardown_err)
@@ -144,7 +138,7 @@
     def get_message(self):
         if self._setup_err:
             return 'Setup failed:\n%s' % self._setup_err
-        return self._form_error_message(self._kw_errs)
+        return self._kw_err

     def get_teardown_message(self, message):
         if message == '':
@@ -153,8 +147,3 @@

     def parent_or_init_error(self):
         return self._parent_err or self._init_err
-
-    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     Tue May  4 01:05:02 2010
+++ /trunk/src/robot/running/userkeyword.py     Tue May  4 04:28:08 2010
@@ -20,7 +20,7 @@
 from robot.variables import is_list_var, VariableSplitter
 from robot import utils

-from keywords import UserKeywordKeywords
+from keywords import Keywords
 from timeouts import KeywordTimeout
 from arguments import UserKeywordArguments

@@ -109,7 +109,7 @@
         self.name = utils.printable_name(handlerdata.name)
         self._libname = libname
         self._set_variable_dependent_metadata(handlerdata.metadata)
-        self.keywords = UserKeywordKeywords(handlerdata.keywords)
+        self.keywords = Keywords(handlerdata.keywords)
         self.arguments = UserKeywordArguments(handlerdata.args,
                                               handlerdata.defaults,
                                               handlerdata.varargs,

Reply via email to