Revision: 82a531c91bee
Author:   Mikko Korpela <[email protected]>
Date:     Mon Nov 14 03:22:03 2011
Log:      Add keywordRemoving functionality to rebot
http://code.google.com/p/robotframework/source/detail?r=82a531c91bee

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

=======================================
--- /src/robot/reporting/resultwriter.py        Sat Nov 12 04:59:53 2011
+++ /src/robot/reporting/resultwriter.py        Mon Nov 14 03:22:03 2011
@@ -16,6 +16,7 @@
 from robot.output import LOGGER
 from robot.reporting.jsondatamodel import DataModelWriter
 from robot.result.builders import ResultFromXML as RFX
+from robot.result.combiningvisitor import CombiningVisitor, KeywordRemovingVisitor
 from robot.result.datamodel import DatamodelVisitor
 from robot.result.serializer import RebotXMLWriter
 from robot import utils
@@ -74,14 +75,19 @@
         XUnitBuilder(self).build()

     def write_rebot_results(self, *data_sources):
+        # FIXME: cleanup!!!
         self._data_sources = data_sources
-        self.result_from_xml
+ self.result_from_xml # this line is insanely ugly .. only here for the side-effects
         if self.settings['Output']:
             OutputBuilder(self).build()
         visitor = DatamodelVisitor(self._execution_result,
                                    log_path=self.settings['Log'],
                                    split_log=self.settings['SplitLog'])
-        self._execution_result.visit(visitor)
+ # Remove keywords while visiting as JSON datamodel visitor is the last
+        # thing that needs keywords from the model
+        # this saves memory -- possibly a lot.
+        self._execution_result.visit(CombiningVisitor(visitor,
+ KeywordRemovingVisitor()))
         self._data_model = DataModelWriter(visitor.datamodel)
         self.write_robot_results(None)
         return self._execution_result
=======================================
--- /src/robot/result/combiningvisitor.py       Sat Nov 12 04:55:26 2011
+++ /src/robot/result/combiningvisitor.py       Mon Nov 14 03:22:03 2011
@@ -32,16 +32,13 @@
 _create_method('visit_statistics')


-class RemovingVisitor(ResultVisitor):
+class KeywordRemovingVisitor(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 = []
=======================================
--- /utest/result/test_jsoning.py       Sat Nov 12 04:59:53 2011
+++ /utest/result/test_jsoning.py       Mon Nov 14 03:22:03 2011
@@ -1,6 +1,6 @@
 import unittest
 from robot import utils
-from robot.result.combiningvisitor import RemovingVisitor, CombiningVisitor
+from robot.result.combiningvisitor import KeywordRemovingVisitor, CombiningVisitor
 from robot.result.executionresult import ExecutionResult
 from robot.result.keyword import Keyword
 from robot.model.message import Message
=======================================
--- /utest/result/test_resultserializer.py      Sat Nov 12 04:59:53 2011
+++ /utest/result/test_resultserializer.py      Mon Nov 14 03:22:03 2011
@@ -6,6 +6,7 @@
 from robot.reporting.outputparser import OutputParser

 from robot.result.builders import ResultFromXML
+from robot.result.combiningvisitor import KeywordRemovingVisitor, CombiningVisitor
 from robot.result.serializer import RebotXMLWriter
 from robot.result.datamodel import DatamodelVisitor
 from robot.utils.asserts import assert_equals
@@ -44,7 +45,8 @@
         self._expected = output_parser._get_data_model()._robot_data
         result = ResultFromXML(StringIO(GOLDEN_XML))
         visitor = DatamodelVisitor(result)
-        result.visit(visitor)
+        result.visit(CombiningVisitor(visitor,
+                                      KeywordRemovingVisitor()))
         self._datamodel = visitor.datamodel

     def test_datamodel_suite(self):

Reply via email to