Revision: c47a6d31568a
Author:   Pekka Klärck
Date:     Mon May  9 06:35:23 2011
Log:      Cleaned up handling execution errors slightly.

Update issue 771
http://code.google.com/p/robotframework/source/detail?r=c47a6d31568a

Modified:
 /src/robot/errors.py

=======================================
--- /src/robot/errors.py        Fri May  6 06:28:25 2011
+++ /src/robot/errors.py        Mon May  9 06:35:23 2011
@@ -121,21 +121,23 @@
 class ExecutionFailures(ExecutionFailed):

     def __init__(self, errors):
-        msg = self._format_message(*(unicode(e) for e in errors))
-        ExecutionFailed.__init__(self, msg,
-                                 any(err.timeout for err in errors),
-                                 any(err.syntax for err in errors),
-                                 any(err.exit for err in errors),
-                                 all(err.cont for err in errors),
-                                 all(err.exit_for_loop for err in errors))
+        msg = self._format_message([unicode(e) for e in errors])
+        ExecutionFailed.__init__(self, msg, **self._get_attrs(errors))
         self._errors = errors

-    def _format_message(self, *msgs):
-        if len(msgs) == 1:
-            return msgs[0]
+    def _format_message(self, messages):
+        if len(messages) == 1:
+            return messages[0]
         lines = ['Several failures occurred:'] \
-                + ['%d) %s' % (i+1, m) for i, m in enumerate(msgs)]
+                + ['%d) %s' % (i+1, m) for i, m in enumerate(messages)]
         return '\n\n'.join(lines)
+
+    def _get_attrs(self, errors):
+        return {'timeout': any(err.timeout for err in errors),
+                'syntax': any(err.syntax for err in errors),
+                'exit': any(err.exit for err in errors),
+                'cont': all(err.cont for err in errors),
+                'exit_for_loop': all(err.exit_for_loop for err in errors)}

     def get_errors(self):
         return self._errors
@@ -143,15 +145,17 @@

 class UserKeywordExecutionFailed(ExecutionFailures):

-    def __init__(self, run_error, teardown_error):
-        no_error = ExecutionFailed('', cont=True, exit_for_loop=True)
-        errors = (run_error or no_error,
-                  teardown_error or no_error)
-        ExecutionFailures.__init__(self, errors)
-        self._errors = run_error.get_errors() if \
-        (run_error and not teardown_error) else [self]
-
-    def _format_message(self, run_msg, td_msg):
+    def __init__(self, run_errors=None, teardown_errors=None):
+        no_errors = ExecutionFailed('', cont=True, exit_for_loop=True)
+        ExecutionFailures.__init__(self, [run_errors or no_errors,
+                                          teardown_errors or no_errors])
+        if run_errors and not teardown_errors:
+            self._errors = run_errors.get_errors()
+        else:
+            self._errors = [self]
+
+    def _format_message(self, messages):
+        run_msg, td_msg = messages
         if not td_msg:
             return run_msg
         if not run_msg:

Reply via email to