3 new revisions:

Revision: 4f48ea625352
Author:   Mikko Korpela <[email protected]>
Date:     Sat Nov 12 04:33:10 2011
Log:      Add combiningvisitor and removingvisitor
http://code.google.com/p/robotframework/source/detail?r=4f48ea625352

Revision: ce1f2ba89e0c
Author:   Mikko Korpela <[email protected]>
Date:     Sat Nov 12 04:55:26 2011
Log:      Add visit_statistics
http://code.google.com/p/robotframework/source/detail?r=ce1f2ba89e0c

Revision: fc35b00f63b6
Author:   Mikko Korpela <[email protected]>
Date:     Sat Nov 12 04:59:53 2011
Log:      Preparation for RemovingVisitor integration
http://code.google.com/p/robotframework/source/detail?r=fc35b00f63b6

==============================================================================
Revision: 4f48ea625352
Author:   Mikko Korpela <[email protected]>
Date:     Sat Nov 12 04:33:10 2011
Log:      Add combiningvisitor and removingvisitor
http://code.google.com/p/robotframework/source/detail?r=4f48ea625352

Added:
 /src/robot/result/combiningvisitor.py
 /utest/result/test_combiningvisitor.py

=======================================
--- /dev/null
+++ /src/robot/result/combiningvisitor.py       Sat Nov 12 04:33:10 2011
@@ -0,0 +1,46 @@
+#  Copyright 2008-2011 Nokia Siemens Networks Oyj
+#
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+from robot.result.visitor import ResultVisitor
+
+
+class CombiningVisitor(ResultVisitor):
+
+    def __init__(self, *visitors):
+        self._visitors = visitors
+
+def _create_method(method_name):
+    def delegate_call(self, item):
+        for visitor in self._visitors:
+            getattr(visitor, method_name)(item)
+    setattr(CombiningVisitor, method_name, delegate_call)
+
+for method_name in (pre+'_'+post
+                    for pre in ('start', 'end') \
+                    for post in ('suite', 'test', 'keyword', 'message')):
+    _create_method(method_name)
+
+
+class RemovingVisitor(ResultVisitor):
+
+    def end_keyword(self, keyword):
+        keyword.keywords = []
+        keyword.messaged = []
+
+    def end_test(self, test):
+        test.keywords = []
+
+    def end_suite(self, suite):
+        suite.suites = []
+        suite.keywords = []
+        suite.tests = []
=======================================
--- /dev/null
+++ /utest/result/test_combiningvisitor.py      Sat Nov 12 04:33:10 2011
@@ -0,0 +1,66 @@
+import unittest
+from robot.result.combiningvisitor import CombiningVisitor
+from robot.result.testsuite import TestSuite
+from robot.result.visitor import ResultVisitor
+from robot.utils.asserts import assert_equals, assert_true
+
+
+class MyTestCase(unittest.TestCase, ResultVisitor):
+
+    def setUp(self):
+        self._start_suite_calls = 0
+        self._start_test_calls = 0
+        self._start_keyword_calls = 0
+        self._end_suite_calls = 0
+        self._end_test_calls = 0
+        self._end_keyword_calls = 0
+        self._start_message_calls = 0
+        self._end_message_calls = 0
+
+    def start_suite(self, suite):
+        self._start_suite_calls += 1
+
+    def end_suite(self, suite):
+        assert_true(self._end_test_calls > 0)
+        self._end_suite_calls += 1
+
+    def start_test(self, test):
+        assert_true(self._start_suite_calls > 0)
+        self._start_test_calls += 1
+
+    def end_test(self, test):
+        assert_true(self._end_keyword_calls > 0)
+        self._end_test_calls += 1
+
+    def start_keyword(self, keyword):
+        assert_true(self._start_test_calls > 0)
+        self._start_keyword_calls += 1
+
+    def end_keyword(self, keyword):
+        assert_true(self._end_message_calls > 0)
+        self._end_keyword_calls += 1
+
+    def start_message(self, msg):
+        assert_true(self._start_keyword_calls > 0)
+        self._start_message_calls += 1
+
+    def end_message(self, msg):
+        assert_true(self._start_message_calls > 0)
+        self._end_message_calls += 1
+
+    def test_combining_visitor(self):
+        suite = TestSuite(name='hello')
+ suite.tests.create(name='test').keywords.create(name='foo').messages.create(message='hello')
+        suite.visit(CombiningVisitor(self, self))
+        assert_equals(self._start_suite_calls, 2)
+        assert_equals(self._start_test_calls, 2)
+        assert_equals(self._start_keyword_calls, 2)
+        assert_equals(self._start_message_calls, 2)
+        assert_equals(self._end_suite_calls, 2)
+        assert_equals(self._end_test_calls, 2)
+        assert_equals(self._end_keyword_calls, 2)
+        assert_equals(self._end_message_calls, 2)
+
+
+if __name__ == '__main__':
+    unittest.main()

==============================================================================
Revision: ce1f2ba89e0c
Author:   Mikko Korpela <[email protected]>
Date:     Sat Nov 12 04:55:26 2011
Log:      Add visit_statistics
http://code.google.com/p/robotframework/source/detail?r=ce1f2ba89e0c

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

=======================================
--- /src/robot/result/combiningvisitor.py       Sat Nov 12 04:33:10 2011
+++ /src/robot/result/combiningvisitor.py       Sat Nov 12 04:55:26 2011
@@ -27,8 +27,9 @@

 for method_name in (pre+'_'+post
                     for pre in ('start', 'end') \
-                    for post in ('suite', 'test', 'keyword', 'message')):
+ for post in ('suite', 'test', 'keyword', 'message', 'errors')):
     _create_method(method_name)
+_create_method('visit_statistics')


 class RemovingVisitor(ResultVisitor):

==============================================================================
Revision: fc35b00f63b6
Author:   Mikko Korpela <[email protected]>
Date:     Sat Nov 12 04:59:53 2011
Log:      Preparation for RemovingVisitor integration
http://code.google.com/p/robotframework/source/detail?r=fc35b00f63b6

Modified:
 /src/robot/reporting/resultwriter.py
 /src/robot/result/datamodel.py
 /utest/result/test_jsoning.py
 /utest/result/test_resultserializer.py

=======================================
--- /src/robot/reporting/resultwriter.py        Wed Nov  9 06:57:03 2011
+++ /src/robot/reporting/resultwriter.py        Sat Nov 12 04:59:53 2011
@@ -12,7 +12,6 @@
 #  See the License for the specific language governing permissions and
 #  limitations under the License.

-from robot.common import Statistics
 from robot.errors import DataError
 from robot.output import LOGGER
 from robot.reporting.jsondatamodel import DataModelWriter
@@ -82,6 +81,7 @@
         visitor = DatamodelVisitor(self._execution_result,
                                    log_path=self.settings['Log'],
                                    split_log=self.settings['SplitLog'])
+        self._execution_result.visit(visitor)
         self._data_model = DataModelWriter(visitor.datamodel)
         self.write_robot_results(None)
         return self._execution_result
=======================================
--- /src/robot/result/datamodel.py      Wed Nov  9 04:49:34 2011
+++ /src/robot/result/datamodel.py      Sat Nov 12 04:59:53 2011
@@ -23,7 +23,6 @@
         self._elements = []
         self._context = Context(log_path=log_path, split_log=split_log)
self._elements.append(ExecutionResultHandler(self._context, result))
-        result.visit(self)

     def _start(self, func):
         next = func(self._elements[-1])
@@ -51,7 +50,7 @@

     end_suite = end_keyword = end_test = end_errors = _end

-    def visit_message(self, msg):
+    def end_message(self, msg):
         self._elements[-1].message(msg)

     @property
=======================================
--- /utest/result/test_jsoning.py       Fri Nov 11 04:30:04 2011
+++ /utest/result/test_jsoning.py       Sat Nov 12 04:59:53 2011
@@ -1,5 +1,6 @@
 import unittest
 from robot import utils
+from robot.result.combiningvisitor import RemovingVisitor, CombiningVisitor
 from robot.result.executionresult import ExecutionResult
 from robot.result.keyword import Keyword
 from robot.model.message import Message
=======================================
--- /utest/result/test_resultserializer.py      Tue Nov  8 03:38:18 2011
+++ /utest/result/test_resultserializer.py      Sat Nov 12 04:59:53 2011
@@ -42,7 +42,9 @@
         output_parser = OutputParser()
         output_parser._parse_fileobj(StringIO(GOLDEN_XML))
         self._expected = output_parser._get_data_model()._robot_data
-        visitor = DatamodelVisitor(ResultFromXML(StringIO(GOLDEN_XML)))
+        result = ResultFromXML(StringIO(GOLDEN_XML))
+        visitor = DatamodelVisitor(result)
+        result.visit(visitor)
         self._datamodel = visitor.datamodel

     def test_datamodel_suite(self):

Reply via email to