Revision: 71fcbb69a536
Author:   Pekka Klärck
Date:     Sat Nov 19 14:42:56 2011
Log: KeywordRemover: 1) Use suite.statistics.all instead of to-be-removed suite.all_stats. 2) Little cleanup.
http://code.google.com/p/robotframework/source/detail?r=71fcbb69a536

Modified:
 /src/robot/result/keywordremover.py

=======================================
--- /src/robot/result/keywordremover.py Wed Nov  9 09:48:30 2011
+++ /src/robot/result/keywordremover.py Sat Nov 19 14:42:56 2011
@@ -29,13 +29,32 @@
 class _KeywordRemover(SuiteVisitor):

     def _clear_content(self, keyword):
-        keyword.messages = []
         keyword.keywords = []
+        keyword.messages = []

     def _contains_warning(self, item):
-        contains_warning_visitor = ContainsWarningVisitor()
-        item.visit(contains_warning_visitor)
-        return contains_warning_visitor.result
+        contains_warning = ContainsWarning()
+        item.visit(contains_warning)
+        return contains_warning.result
+
+
+class ContainsWarning(SuiteVisitor):
+
+    def __init__(self):
+        self.result = False
+
+    def start_suite(self, suite):
+        return not self.result
+
+    def start_test(self, test):
+        return not self.result
+
+    def start_keyword(self, keyword):
+        return not self.result
+
+    def visit_message(self, msg):
+        if msg.level == 'WARN':
+            self.result = True


 class AllKeywordsRemover(_KeywordRemover):
@@ -47,7 +66,7 @@
 class PassedKeywordRemover(_KeywordRemover):

     def start_suite(self, suite):
-        if not suite.all_stats.failed:
+        if not suite.statistics.all.failed:
             for keyword in suite.keywords:
                 if not self._contains_warning(keyword):
                     self._clear_content(keyword)
@@ -57,43 +76,20 @@
             for keyword in test.keywords:
                 self._clear_content(keyword)

-    def visit_keyword(self, keyword):
-        pass
-
     def _should_be_cleared(self, item):
         return item.is_passed and not self._contains_warning(item)

+    def visit_keyword(self, keyword):
+        pass
+

 class ForLoopItemsRemover(_KeywordRemover):

+    def start_test(self, test):
+        return test.is_passed and not self._contains_warning(test)
+
     def start_keyword(self, keyword):
-        if not keyword.is_passed:
-            return False
         if keyword.is_forloop:
             self._clear_content(keyword)
             return False
-
-    def start_test(self, test):
-        return test.is_passed and not self._contains_warning(test)
-
-
-def _stop_if_result(method):
-    def wrapped(s, i):
-        if s.result:
-            return
-        method(s, i)
-    return wrapped
-
-
-class ContainsWarningVisitor(SuiteVisitor):
-
-    def __init__(self):
-        self.result = False
-
-    def visit_message(self, msg):
-        self.result |= msg.level == 'WARN'
-
-    visit_keyword = _stop_if_result(SuiteVisitor.visit_keyword)
-    visit_suite = _stop_if_result(SuiteVisitor.visit_suite)
-    visit_test = _stop_if_result(SuiteVisitor.visit_test)
-
+        return keyword.is_passed

Reply via email to