3 new revisions:

Revision: e52ec73b11b3
Author:   Mikko Korpela <[email protected]>
Date:     Tue Nov  8 01:09:46 2011
Log:      unpack XML->JSON start_child_element to start_(suite|test|keyword)
http://code.google.com/p/robotframework/source/detail?r=e52ec73b11b3

Revision: 7157a8be3120
Author:   Mikko Korpela <[email protected]>
Date:     Tue Nov  8 02:44:58 2011
Log:      json stats
http://code.google.com/p/robotframework/source/detail?r=7157a8be3120

Revision: feae4eb7e137
Author:   Mikko Korpela <[email protected]>
Date:     Tue Nov  8 03:38:18 2011
Log:      add errors
http://code.google.com/p/robotframework/source/detail?r=feae4eb7e137

==============================================================================
Revision: e52ec73b11b3
Author:   Mikko Korpela <[email protected]>
Date:     Tue Nov  8 01:09:46 2011
Log:      unpack XML->JSON start_child_element to start_(suite|test|keyword)
http://code.google.com/p/robotframework/source/detail?r=e52ec73b11b3

Modified:
 /src/robot/result/datamodel.py
 /src/robot/result/jsondatamodelhandlers.py

=======================================
--- /src/robot/result/datamodel.py      Sat Nov  5 02:54:53 2011
+++ /src/robot/result/datamodel.py      Tue Nov  8 01:09:46 2011
@@ -17,7 +17,6 @@

 from robot.result.visitor import ResultVisitor

-
 class DatamodelVisitor(ResultVisitor):

     def __init__(self, result):
@@ -26,15 +25,23 @@
self._elements.append(ExecutionResultHandler(self._context, result))
         result.visit(self)

-    def _start(self, item):
-        next = self._elements[-1].start_child_element(item)
+    def _start(self, func):
+        next = func(self._elements[-1])
         self._elements.append(next)

-    start_suite = start_keyword = start_test = _start
+    def start_suite(self, suite):
+        self._start(lambda p: p.start_suite(suite))
+
+    def start_keyword(self, keyword):
+        self._start(lambda p: p.start_keyword(keyword))
+
+    def start_test(self, test):
+        self._start(lambda p: p.start_test(test))

     def _end(self, item):
         item_datamodel = self._elements.pop().end_element(item)
         self._elements[-1].add_child_data(item_datamodel)
+
     end_suite = end_keyword = end_test = _end

     def visit_message(self, msg):
=======================================
--- /src/robot/result/jsondatamodelhandlers.py  Fri Nov  4 06:55:32 2011
+++ /src/robot/result/jsondatamodelhandlers.py  Tue Nov  8 01:09:46 2011
@@ -30,17 +30,17 @@
     def add_child_data(self, data):
         self._data_from_children.append(data)

-    def start_child_element(self, child):
-        if isinstance(child, TestSuite):
-            self._current_children = self._suites
-            return SuiteHandler(self._context, child)
-        if isinstance(child, Keyword):
-            self._current_children = self._keywords
-            return KeywordHandler(self._context, child)
-        if isinstance(child, TestCase):
-            self._current_children = self._tests
-            return TestHandler(self._context, child)
-        raise AssertionError('unknown child type %r' % type(child))
+    def start_suite(self, suite):
+        self._current_children = self._suites
+        return SuiteHandler(self._context, suite)
+
+    def start_keyword(self, keyword):
+        self._current_children = self._keywords
+        return KeywordHandler(self._context, keyword)
+
+    def start_test(self, test):
+        self._current_children = self._tests
+        return TestHandler(self._context, test)

     def message(self, message):
self._data_from_children.append(_MsgHandler(self._context, message).end_element(message.message))

==============================================================================
Revision: 7157a8be3120
Author:   Mikko Korpela <[email protected]>
Date:     Tue Nov  8 02:44:58 2011
Log:      json stats
http://code.google.com/p/robotframework/source/detail?r=7157a8be3120

Modified:
 /src/robot/result/datamodel.py
 /src/robot/result/jsondatamodelhandlers.py
 /utest/result/test_resultserializer.py

=======================================
--- /src/robot/result/datamodel.py      Tue Nov  8 01:09:46 2011
+++ /src/robot/result/datamodel.py      Tue Nov  8 02:44:58 2011
@@ -38,6 +38,10 @@
     def start_test(self, test):
         self._start(lambda p: p.start_test(test))

+    def visit_statistics(self, stats):
+        self._start(lambda p: p.visit_statistics(stats))
+        self._end(stats)
+
     def _end(self, item):
         item_datamodel = self._elements.pop().end_element(item)
         self._elements[-1].add_child_data(item_datamodel)
=======================================
--- /src/robot/result/jsondatamodelhandlers.py  Tue Nov  8 01:09:46 2011
+++ /src/robot/result/jsondatamodelhandlers.py  Tue Nov  8 02:44:58 2011
@@ -25,6 +25,7 @@
         self._suites = []
         self._keywords = []
         self._tests = []
+        self._stats = []
         self._data_from_children = []

     def add_child_data(self, data):
@@ -60,20 +61,51 @@
     def _last_child_status(self):
         return self._data_from_children[-1][0]

-
 class ExecutionResultHandler(_Handler):

     def __init__(self, context, execution_result):
         _Handler.__init__(self, context)
         self._generator = execution_result.generator

+    def visit_statistics(self, stats):
+        self._current_children = self._stats
+        return StatisticsHandler(self._stats, stats)
+
     def end_element(self, text):
         return {'generator': self._generator,
                 'suite': self._data_from_children[0],
-#                'stats': self._data_from_children[1],
-#                'errors': self._data_from_children[2],
+                'stats': self._stats,
+                #                'errors': self._data_from_children[2],
                 'baseMillis': self._context.basemillis,
                 'strings': self._context.dump_texts()}
+
+class StatisticsHandler(object):
+
+    def __init__(self, stats_list, stats):
+        self._result = stats_list
+        self._result.append(self._parse_totals(stats.total))
+        self._result.append(self._parse_tag(stats.tags))
+        self._result.append(self._parse_suite(stats.suite))
+
+    def _parse_totals(self, total):
+ return [self._create_stat(total.critical), self._create_stat(total.all)]
+
+    def _parse_tag(self, tags):
+        return [self._create_stat(tag) for tag in tags.stats.values()]
+
+    def _parse_suite(self, suite):
+        all_stat = self._create_stat(suite.all)
+        all_stat['id'] = suite.all.id
+        all_stat['name'] = suite.all.longname
+        return [all_stat]
+
+    def _create_stat(self, stat_elem):
+        return {'pass':stat_elem.passed,
+                'fail':stat_elem.failed,
+                'label':stat_elem.name}
+
+    def end_element(self, text):
+        return self._result


 class SuiteHandler(_Handler):
=======================================
--- /utest/result/test_resultserializer.py      Sat Nov  5 02:54:53 2011
+++ /utest/result/test_resultserializer.py      Tue Nov  8 02:44:58 2011
@@ -54,8 +54,12 @@
     def test_datamodel_strings(self):
         self._equals('strings')

+    def test_datamodel_statistics(self):
+        self._equals('stats')
+
     def _equals(self, key):
         if isinstance(self._expected[key], list):
+ assert_equals(len(self._expected[key]), len(self._datamodel[key]))
             for exp, act in zip(self._expected[key], self._datamodel[key]):
                 assert_equals(exp, act)
         else:

==============================================================================
Revision: feae4eb7e137
Author:   Mikko Korpela <[email protected]>
Date:     Tue Nov  8 03:38:18 2011
Log:      add errors
http://code.google.com/p/robotframework/source/detail?r=feae4eb7e137

Modified:
 /src/robot/result/datamodel.py
 /src/robot/result/jsondatamodelhandlers.py
 /utest/result/test_resultserializer.py

=======================================
--- /src/robot/result/datamodel.py      Tue Nov  8 02:44:58 2011
+++ /src/robot/result/datamodel.py      Tue Nov  8 03:38:18 2011
@@ -38,6 +38,9 @@
     def start_test(self, test):
         self._start(lambda p: p.start_test(test))

+    def start_errors(self, errors):
+        self._start(lambda p: p.start_errors(errors))
+
     def visit_statistics(self, stats):
         self._start(lambda p: p.visit_statistics(stats))
         self._end(stats)
@@ -46,7 +49,7 @@
         item_datamodel = self._elements.pop().end_element(item)
         self._elements[-1].add_child_data(item_datamodel)

-    end_suite = end_keyword = end_test = _end
+    end_suite = end_keyword = end_test = end_errors = _end

     def visit_message(self, msg):
         self._elements[-1].message(msg)
=======================================
--- /src/robot/result/jsondatamodelhandlers.py  Tue Nov  8 02:44:58 2011
+++ /src/robot/result/jsondatamodelhandlers.py  Tue Nov  8 03:38:18 2011
@@ -43,6 +43,9 @@
         self._current_children = self._tests
         return TestHandler(self._context, test)

+    def start_errors(self, errors):
+        return _Handler(self._context)
+
     def message(self, message):
self._data_from_children.append(_MsgHandler(self._context, message).end_element(message.message))

@@ -75,7 +78,7 @@
         return {'generator': self._generator,
                 'suite': self._data_from_children[0],
                 'stats': self._stats,
-                #                'errors': self._data_from_children[2],
+                'errors': self._data_from_children[2],
                 'baseMillis': self._context.basemillis,
                 'strings': self._context.dump_texts()}

=======================================
--- /utest/result/test_resultserializer.py      Tue Nov  8 02:44:58 2011
+++ /utest/result/test_resultserializer.py      Tue Nov  8 03:38:18 2011
@@ -57,6 +57,9 @@
     def test_datamodel_statistics(self):
         self._equals('stats')

+    def test_datamodel_errors(self):
+        self._equals('errors')
+
     def _equals(self, key):
         if isinstance(self._expected[key], list):
assert_equals(len(self._expected[key]), len(self._datamodel[key]))

Reply via email to