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)

Reply via email to