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):