Author: jprantan
Date: Mon Apr  6 05:06:43 2009
New Revision: 1687

Modified:
   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:
1) New way to log suite/test names with parent name in smaller font now handles splitted outputs, 2) Fixed linking to split logs from stat table, 3) Misc cleanup

Modified: trunk/src/robot/common/statistics.py
==============================================================================
--- trunk/src/robot/common/statistics.py        (original)
+++ trunk/src/robot/common/statistics.py        Mon Apr  6 05:06:43 2009
@@ -41,8 +41,8 @@

     def __init__(self, name=None, doc=None, link=None):
         self.name = name
-        self.doc = doc
-        self.link = link
+        self._doc = doc
+        self._link = link
         self.passed = 0
         self.failed = 0

@@ -59,18 +59,12 @@
     def fail_all(self):
         self.failed += self.passed
         self.passed = 0
-
-    def get_name(self, split_level=-1):
-        return self.name

     def get_doc(self, split_level=-1):
-        return self.doc
+        return self._doc

     def get_link(self, split_level=-1):
-        return self.link
-
-    def should_link_to_sub_log(self, split_level=-1):
-        return False
+        return self._link

     def __cmp__(self, other):
         return cmp(self.name, other.name)
@@ -82,20 +76,14 @@

     def __init__(self, suite):
         Stat.__init__(self, suite.name)
-        self._suite = suite
-
-    def get_name(self, split_level=-1):
-        return self._suite.get_medium_name(split_level=split_level)
+        self.get_long_name = suite.get_long_name

     def get_doc(self, split_level=-1):
-        return self._suite.get_long_name(split_level=split_level)
+        return self.get_long_name(split_level=split_level)

     def get_link(self, split_level=-1):
-        return self._suite.get_long_name(split_level=split_level)
+        return self.get_long_name(split_level=split_level)

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


Modified: trunk/src/robot/output/xmllogger.py
==============================================================================
--- trunk/src/robot/output/xmllogger.py (original)
+++ trunk/src/robot/output/xmllogger.py Mon Apr  6 05:06:43 2009
@@ -173,18 +173,20 @@
         self._stat(stat)

     def suite_stat(self, stat):
-        self._stat(stat)
+        self._stat(stat, stat.get_long_name(split_level=self._split_level))

     def tag_stat(self, stat):
-        self._stat(stat)
+        self._stat(stat, attrs={'info': self._get_tag_stat_info(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)
-        if stat.doc is not None:
-            attrs['doc'] = stat.get_doc(self._split_level)
- self._writer.element('stat', stat.get_name(self._split_level), attrs)
+    def _stat(self, stat, name=None, attrs=None):
+        name = name or stat.name
+        attrs = attrs or {}
+        attrs['pass'] = str(stat.passed)
+        attrs['fail'] = str(stat.failed)
+        doc = stat.get_doc(self._split_level)
+        if doc:
+            attrs['doc'] = doc
+        self._writer.element('stat', name, attrs)

     def _get_tag_stat_info(self, stat):
         if stat.critical is True:

Modified: trunk/src/robot/serializing/reportserializers.py
==============================================================================
--- trunk/src/robot/serializing/reportserializers.py    (original)
+++ trunk/src/robot/serializing/reportserializers.py Mon Apr 6 05:06:43 2009
@@ -205,7 +205,7 @@
                              newline=False)
         self._writer.content(stat.name)
         self._writer.end('td')
- doc = stat.doc and utils.html_escape(stat.doc, formatting=True) or ''
+        doc = utils.html_escape(stat.get_doc() or '', formatting=True)
         self._writer.element('td', doc, {'class': 'col_doc'}, escape=False)
self._writer.element('td', 'N/A', {'class': 'col_tags not_available'}) self._writer.element('td', self._get_crit(stat), {'class': 'col_crit'})

Modified: trunk/src/robot/serializing/statserializers.py
==============================================================================
--- trunk/src/robot/serializing/statserializers.py      (original)
+++ trunk/src/robot/serializing/statserializers.py      Mon Apr  6 05:06:43 2009
@@ -20,8 +20,9 @@

 class _StatSerializer:

-    def __init__(self, output):
+    def __init__(self, output, split_level=-1):
         self._writer = utils.HtmlWriter(output)
+        self._split_level = split_level

     def start_statistics(self, statistics):
         self._writer.element('h2', 'Test Statistics')
@@ -66,21 +67,17 @@
         self._writer.start('td', {'class': 'col_stat_name'})
         self._writer.start('div', {'class': 'stat_name'}, newline=False)
         elem, attrs = self._get_element_name_and_attrs(stat)
-        doc = self._get_doc(stat)
+        doc = stat.get_doc(self._split_level)
         if doc:
             attrs['title'] = doc
         self._writer.start(elem, attrs, newline=False)
         return elem

     def _write_stat_name(self, stat):
-        self._writer.content(self._get_name(stat))
+        self._writer.content(stat.name)

     def _write_suite_stat_name(self, stat):
-        # TODO:
-        # 1) Should handle also split levels
-        # 2) Can _get_name be removed?
-        # 3) Can mediumname be removed altogether??
-        tokens = stat._suite.get_long_name(separator=None)
+ tokens = stat.get_long_name(separator=None, split_level=self._split_level)
         if len(tokens) > 1:
             self._writer.element('span', ' . '.join(tokens[:-1]+['']),
                                  {'class': 'parent_name'}, newline=False)
@@ -145,12 +142,6 @@
                                          'style': 'width: 100%;'})
         self._writer.end_many(['div', 'td', 'tr'])

-    def _get_doc(self, stat):
-        return stat.get_doc()
-
-    def _get_name(self, stat):
-        return stat.get_name()
-
     def _write_tag_criticality(self, stat):
         if stat.critical:
             self._writer.content(' (critical)')
@@ -168,11 +159,7 @@
         self._writer.end('div')


-class _BaseLogStatSerializer(_StatSerializer):
-
-    def __init__(self, output, split_level=-1):
-        _StatSerializer.__init__(self, output)
-        self._split_level = split_level
+class LogStatSerializer(_StatSerializer):

     def _get_element_name_and_attrs(self, stat):
         if stat.type == 'suite':
@@ -180,31 +167,31 @@
         return 'span', {}

     def _get_link_attributes(self, stat):
-        target = '%s_%s' % (stat.type, stat.get_link(self._split_level))
+        target = 'suite_%s' % stat.get_link(self._split_level)
         return {'href': '#' + target,
                 'onclick': "set_element_visible('%s')" % target}


-class LogStatSerializer(_BaseLogStatSerializer):
-
-    def _get_doc(self, stat):
-        return stat.get_doc(self._split_level)
-
-    def _get_name(self, stat):
-        return stat.get_name(self._split_level)
-
-
-class SplitLogStatSerializer(_BaseLogStatSerializer):
+class SplitLogStatSerializer(LogStatSerializer):

     def __init__(self, output, split_level):
-        _BaseLogStatSerializer.__init__(self, output, split_level)
+        LogStatSerializer.__init__(self, output, split_level=-1)
+        self._split_border = split_level
+        self._link_target = None
self._namegen = utils.FileNameGenerator(os.path.basename(output.name))

-    def _get_link_attributes(self, stat):
-        if stat.should_link_to_sub_log(self._split_level):
- return {'href': '%s#%s_%s' % (self._namegen.get_name(), stat.type, - stat.get_link(self._split_level))}
-        return _BaseLogStatSerializer._get_link_attributes(self, stat)
+    def _get_link_attributes(self, stat):
+        border = self._before_after_or_on_split_border(stat)
+        if border < 0:
+            return LogStatSerializer._get_link_attributes(self, stat)
+        if border == 0:
+            self._link_target = self._namegen.get_name()
+        return {'href': '%s#suite_%s' % (self._link_target,
+ stat.get_link(self._split_border))}
+
+    def _before_after_or_on_split_border(self, stat):
+        tokens = stat.get_long_name(separator=None)
+        return cmp(len(tokens), self._split_border+1)


 class ReportStatSerializer(_StatSerializer):

Reply via email to