Author: janne.t.harkonen
Date: Wed Mar 25 05:59:30 2009
New Revision: 1534
Modified:
trunk/src/robot/output/readers.py
trunk/src/robot/output/xmllogger.py
trunk/src/robot/parsing/model.py
trunk/src/robot/running/model.py
trunk/src/robot/serializing/serializer.py
Log:
Implementation for creating links to suite source in Log.
Modified: trunk/src/robot/output/readers.py
==============================================================================
--- trunk/src/robot/output/readers.py (original)
+++ trunk/src/robot/output/readers.py Wed Mar 25 05:59:30 2009
@@ -110,6 +110,7 @@
def __init__(self, node):
_TestAndSuiteReader.__init__(self, node)
+ self.source = node.attrs.get('source', None)
del(self.keywords)
for metanode in node.get_nodes('metadata/item'):
self.metadata[metanode.get_attr('name')] = metanode.text
Modified: trunk/src/robot/output/xmllogger.py
==============================================================================
--- trunk/src/robot/output/xmllogger.py (original)
+++ trunk/src/robot/output/xmllogger.py Wed Mar 25 05:59:30 2009
@@ -90,6 +90,8 @@
def _start_suite(self, suite, extra_attrs=None):
attrs = extra_attrs is not None and extra_attrs or {}
attrs['name'] = suite.name
+ if suite.source:
+ attrs['source'] = suite.source
self._writer.start_element('suite', attrs)
self._writer.whole_element('doc', suite.doc)
self._writer.start_element('metadata')
Modified: trunk/src/robot/parsing/model.py
==============================================================================
--- trunk/src/robot/parsing/model.py (original)
+++ trunk/src/robot/parsing/model.py Wed Mar 25 05:59:30 2009
@@ -103,8 +103,8 @@
if
self._is_in_incl_suites(os.path.basename(os.path.normpath(path)),
suitenames):
suitenames = []
- subitems, initfile = self._get_suite_items(path, suitenames)
- rawdata = self._get_rawdata(path, initfile)
+ subitems, self.initfile = self._get_suite_items(path, suitenames)
+ rawdata = self._get_rawdata(path)
_BaseSuite.__init__(self, rawdata)
self._process_subsuites(subitems, suitenames)
if self.get_test_count() == 0 and len(suitenames) == 0:
@@ -133,16 +133,16 @@
files.append(path)
return files, initfile
- def _get_rawdata(self, path, initfile):
- if initfile is None:
+ def _get_rawdata(self, path):
+ if self.initfile is None:
SYSLOG.info("No test suite directory init file")
return RawData(path)
- SYSLOG.info("Parsing test suite directory init file '%s'" %
initfile)
- rawdata = RawData(initfile)
+ SYSLOG.info("Parsing test suite directory init file '%s'" %
self.initfile)
+ rawdata = RawData(self.initfile)
if rawdata.get_type() in [rawdata.INITFILE, rawdata.EMPTY]:
return rawdata
SYSLOG.error("Test suite directory initialization file '%s' "
- "contains test cases and is ignored." % initfile)
+ "contains test cases and is ignored." % self.initfile)
return RawData(path)
def _process_subsuites(self, paths, suitenames):
Modified: trunk/src/robot/running/model.py
==============================================================================
--- trunk/src/robot/running/model.py (original)
+++ trunk/src/robot/running/model.py Wed Mar 25 05:59:30 2009
@@ -39,6 +39,7 @@
BaseTestSuite.__init__(self, suitedata.name, suitedata.source)
self.variables = GLOBAL_VARIABLES.copy()
self.variables.set_from_variable_table(suitedata.variables)
+ self.source = suitedata.source
self.doc = suitedata.doc or ''
self.metadata = suitedata.metadata
self.imports = suitedata.imports
Modified: trunk/src/robot/serializing/serializer.py
==============================================================================
--- trunk/src/robot/serializing/serializer.py (original)
+++ trunk/src/robot/serializing/serializer.py Wed Mar 25 05:59:30 2009
@@ -365,6 +365,12 @@
self._start_suite_or_test_metadata(suite)
for name, value in suite.get_metadata(html=True):
self._write_metadata_row(name, value, escape=False,
write_empty=True)
+ if suite.source:
+ if os.path.exists(suite.source):
+ path = '<a href="%s">%s</a>' % (suite.source, suite.source)
+ else:
+ path = suite.source
+ self._write_metadata_row('Source', path, escape=False)
self._write_times(suite)
self._write_metadata_row('Overall Status', suite.status,
{'class': suite.status.lower()})