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