Author: pekka.klarck
Date: Sun Apr 5 14:29:01 2009
New Revision: 1679
Modified:
trunk/src/robot/common/__init__.py
trunk/src/robot/common/statistics.py
trunk/src/robot/output/xmllogger.py
trunk/src/robot/serializing/reportserializers.py
trunk/src/robot/serializing/statserializers.py
Log:
Refactored how a) statistics are serialized (separate
total_stat/suite_stat/tag_stat methods instead of just generic stat), and
b) how test/suite names are written to report. There should be no
functional changes (I hope tests agree with me) but these changes make
functional changes easier.
Modified: trunk/src/robot/common/__init__.py
==============================================================================
--- trunk/src/robot/common/__init__.py (original)
+++ trunk/src/robot/common/__init__.py Sun Apr 5 14:29:01 2009
@@ -17,4 +17,4 @@
from keyword import BaseKeyword
from handlers import BaseHandler, UserErrorHandler
from libraries import BaseLibrary
-from statistics import Statistics, Stat
+from statistics import Statistics
Modified: trunk/src/robot/common/statistics.py
==============================================================================
--- trunk/src/robot/common/statistics.py (original)
+++ trunk/src/robot/common/statistics.py Sun Apr 5 14:29:01 2009
@@ -60,12 +60,6 @@
self.failed += self.passed
self.passed = 0
- def serialize(self, serializer):
- serializer.stat(self)
-
- def __cmp__(self, other):
- return cmp(self.name, other.name)
-
def get_name(self, split_level=-1):
return self.name
@@ -78,6 +72,9 @@
def should_link_to_sub_log(self, split_level=-1):
return False
+ def __cmp__(self, other):
+ return cmp(self.name, other.name)
+
class SuiteStat(Stat):
@@ -99,6 +96,9 @@
def should_link_to_sub_log(self, split_level=-1):
return len(self._suite.get_long_name(separator=None)) ==
split_level+1
+ def serialize(self, serializer):
+ serializer.suite_stat(self)
+
class TagStat(Stat):
@@ -126,6 +126,9 @@
return self.combined is True and -1 or 1
return cmp(self.name, other.name)
+ def serialize(self, serializer):
+ serializer.tag_stat(self)
+
class CombinedTagStat(TagStat):
@@ -135,10 +138,18 @@
class TotalStat(Stat):
-
+
type = 'total'
-
+ def __init__(self, name, suite_stat):
+ Stat.__init__(self, name)
+ self.passed = suite_stat.passed
+ self.failed = suite_stat.failed
+
+ def serialize(self, serializer):
+ serializer.total_stat(self)
+
+
class SuiteStatistics:
def __init__(self, suite, tag_stats, suite_stat_level=-1):
@@ -271,15 +282,9 @@
class TotalStatistics:
def __init__(self, suite):
- self.critical = self._get_stat('Critical Tests', suite.critical)
- self.all = self._get_stat('All Tests', suite.all)
+ self.critical = TotalStat('Critical Tests', suite.critical)
+ self.all = TotalStat('All Tests', suite.all)
- def _get_stat(self, name, suite_stat):
- stat = TotalStat(name)
- stat.passed = suite_stat.passed
- stat.failed = suite_stat.failed
- return stat
-
def serialize(self, serializer):
serializer.start_total_stats(self)
self.critical.serialize(serializer)
Modified: trunk/src/robot/output/xmllogger.py
==============================================================================
--- trunk/src/robot/output/xmllogger.py (original)
+++ trunk/src/robot/output/xmllogger.py Sun Apr 5 14:29:01 2009
@@ -169,7 +169,16 @@
def end_suite_stats(self, tag_stats):
self._writer.end('suite')
- def stat(self, stat):
+ def total_stat(self, stat):
+ self._stat(stat)
+
+ def suite_stat(self, stat):
+ self._stat(stat)
+
+ def tag_stat(self, stat):
+ self._stat(stat)
+
+ def _stat(self, stat):
attrs = { 'pass' : str(stat.passed), 'fail' : str(stat.failed) }
if stat.type == 'tag':
attrs['info'] = self._get_tag_stat_info(stat)
Modified: trunk/src/robot/serializing/reportserializers.py
==============================================================================
--- trunk/src/robot/serializing/reportserializers.py (original)
+++ trunk/src/robot/serializing/reportserializers.py Sun Apr 5 14:29:01
2009
@@ -43,25 +43,25 @@
def _start_suite_or_test_row(self, item, type_):
self._writer.start('tr', {'class': '%s_row' % type_})
self._writer.start('td', {'class': 'col_name'}, newline=False)
- name, elem, attrs = self._get_name_params(item, type_)
- self._writer.element(elem, name, attrs, newline=False)
+ self._write_name(item, type_)
self._writer.end('td')
self._writer.element('td', item.htmldoc, {'class': 'col_doc'},
escape=False)
- def _get_name_params(self, item, type_):
+ def _write_name(self, item, type_):
attrs = {'id': '%s_%s' % (type_,item.longname), 'title':
item.longname}
if item.linkpath:
elem = 'a'
attrs['href'] = '%s#%s_%s' % (item.linkpath, type_,
item.linkname)
else:
elem = 'span'
- return self._get_name(item, type_), elem, attrs
-
- def _get_name(self, item, type_):
- if type_ == 'suite':
- return item.longname
- return item.name
+ self._writer.start(elem, attrs, newline=False)
+ self._write_item_name(item, type_)
+ self._writer.end(elem, newline=False)
+
+ def _write_item_name(self, item, type_):
+ name = type_ == 'suite' and item.longname or item.name
+ return self._writer.content(name)
def _end_test_row(self, test):
self._writer.element('td', ', '.join(test.tags),
{'class': 'col_tags'})
@@ -187,13 +187,13 @@
if stats.stats:
self._writer.end('table')
- def stat(self, stat):
+ def tag_stat(self, stat):
self._tag_row(stat)
for test in stat.tests:
self._test_row(test)
- def _get_name(self, stat, type_is_ignored):
- return stat.mediumname
+ def _write_item_name(self, stat, type_is_ignored):
+ self._writer.content(stat.mediumname)
def _tag_row(self, stat):
self._writer.start('tr', {'class': 'tag_row'})
Modified: trunk/src/robot/serializing/statserializers.py
==============================================================================
--- trunk/src/robot/serializing/statserializers.py (original)
+++ trunk/src/robot/serializing/statserializers.py Sun Apr 5 14:29:01 2009
@@ -43,7 +43,16 @@
end_tag_stats = end_suite_stats = end_total_stats
- def stat(self, stat):
+ def total_stat(self, stat):
+ self._stat(stat)
+
+ def suite_stat(self, stat):
+ self._stat(stat)
+
+ def tag_stat(self, stat):
+ self._stat(stat)
+
+ def _stat(self, stat):
self._writer.start('tr')
self._writer.start('td', {'class': 'col_stat_name'})
self._stat_name(stat)