Mercurial > bitten > bitten-test
changeset 171:51e23a05e3fa
Allow retrieving the reports for all steps of a given build.
author | cmlenz |
---|---|
date | Tue, 30 Aug 2005 10:08:28 +0000 |
parents | 46b9c9124cee |
children | d7c8d4375374 |
files | bitten/store.py |
diffstat | 1 files changed, 23 insertions(+), 12 deletions(-) [+] |
line wrap: on
line diff
--- a/bitten/store.py +++ b/bitten/store.py @@ -21,7 +21,7 @@ def store_report(build, step, xml): """Store the given report.""" - def retrieve_reports(build, step, type=None): + def retrieve_reports(build, step=None, type=None): """Retrieve reports.""" @@ -36,7 +36,7 @@ backend.__class__.__name__) backend.store_report(build, step, xml) - def retrieve_reports(self, build, step, type=None): + def retrieve_reports(self, build, step=None, type=None): backend = self._get_configured_backend() return backend.retrieve_reports(build, step, type) @@ -103,7 +103,7 @@ doc.setMetaData('', 'step', dbxml.XmlValue(step.name)) container.putDocument(doc, ctxt, dbxml.DBXML_GEN_NAME) - def retrieve_reports(self, build, step, type=None): + def retrieve_reports(self, build, step=None, type=None): if dbxml is None: log.warning('BDB XML not installed, cannot retrieve reports') return @@ -111,9 +111,10 @@ mgr = dbxml.XmlManager() container = self._open_container(mgr) ctxt = mgr.createQueryContext() - query = "collection('%s')/report[dbxml:metadata('build')=%d and " \ - "dbxml:metadata('step')='%s'" \ - % (path, build.id, step.name) + query = "collection('%s')/report[dbxml:metadata('build')=%d " \ + % (path, build.id) + if step is not None: + query += " and dbxml:metadata('step')='%s'" % step.name if type is not None: query += " and @type='%s'" % type query += "]" @@ -183,9 +184,19 @@ finally: fd.close() - def retrieve_reports(self, build, step, type=None): - dirname = os.path.join(self.path, str(build.id), step.name) - if os.path.exists(dirname): - for filename in os.listdir(dirname): - if type is None or filename == type + '.xml': - yield FSBackend.FileWrapper(os.path.join(dirname, filename)) + def retrieve_reports(self, build, step=None, type=None): + if step is not None: + dirname = os.path.join(self.path, str(build.id), step.name) + if os.path.exists(dirname): + for filename in os.listdir(dirname): + if type is None or filename == type + '.xml': + yield FSBackend.FileWrapper(os.path.join(dirname, + filename)) + else: + dirname = os.path.join(self.path, str(build.id)) + if os.path.exists(dirname): + for dirname in os.listdir(dirname): + if os.path.isdir(dirname): + reports = self.retrieve_reports(build, dirname, type) + for report in reports: + yield report