def initialize(self): """Perform any initialization needed by the test runner. Initializes report. Sends runner and header messages to the report. """ cf = self.config cf.username = os.environ["USER"] # used as the timestamp for output location. runnertimestamp = datetime.now().strftime("%Y%m%d-%H:%M:%S.%f") # set resultsdir to full path where test run artifacts are placed. cf.resultsdir = os.path.join( os.path.expandvars(cf.get("resultsdirbase", "/var/tmp")), "{}-{}".format(runnertimestamp, cf.username)) try: rpt = reports.get_report(cf) except ReportFindError as err: self._ui.error(str(err)) raise TestRunnerError("Cannot continue without report.") rpt.initialize(title=" ".join(cf.get("argv", ["unknown"]))) self.report = rpt run_start.send(self, timestamp=runnertimestamp) arguments = cf.get("arguments") # Report command line arguments, if any. if arguments: run_arguments.send(self, message=" ".join(arguments)) # Report comment, if any. comment = cf.get("comment") if comment: run_comment.send(self, message=comment) # Report build here, if given. build = cf.get("build") if build: dut_version.send(self, version=build) self._create_results_dir() self._set_report_url()
def test_ansi_report(self): """Test ANSI reports.""" rpt = reports.get_report(("StandardReport", "-", "text/ansi")) rpt.initialize() rpt.info("Some info") rpt.failed("failed message") rpt.diagnostic("diagnostic message") rpt.passed("passed message") rpt.finalize()
def _build_report(self, name): from pycopia import reports # XXX pycopia-QA circular dependency. if name is None: name = self.get("reportname", "default") params = self.reports.get(name, (None, )) if type(params) is list: params = map(self._report_param_expand, params) else: params = self._report_param_expand(params) return reports.get_report(params)
def _build_report(self, name): from pycopia import reports # XXX pycopia-QA circular dependency. if name is None: name = self.get("reportname", "default") params = self.reports.get(name, (None,)) if type(params) is list: params = map(self._report_param_expand, params) else: params = self._report_param_expand(params) return reports.get_report( params )
def _buildReport(self, name): """Does the actual report construction. Given a name of a definition found in the "reports" namespace of this configuration, return the resulting report object. """ from pycopia import reports if name is None: name = self.get("reportname", "default") paramlist = [] for n in name.split(","): spec = self.reports.get(n) if spec is not None: paramlist.append(spec) if len(paramlist) == 0: raise NoSuchReport, self.reports.keys() paramlist = flatten(paramlist) paramlist = map(self._param_expand, paramlist) # passing a list results in a stacked report if len(paramlist) == 1: return reports.get_report(paramlist[0]) else: return reports.get_report(paramlist)
def RunSubtest(self, _testclass, *args, **kwargs): """Invoke another Test class in the same environment as this one. Runs another Test subclass with the given arguments passed to the `execute()`. """ orig = self.config.report if not self._verbose: # don't let the subtest write to the report. # if verbose mode then use original report (bug 708716) from pycopia import reports nr = reports.get_report(("NullReport", )) self.config.report = nr inst = _testclass(self.config) try: return apply(inst, args, kwargs) finally: self.config.report = orig
def _build_report(self, name): from pycopia import reports # XXX pycopia-QA circular dependency. if name is None: name = self.get("reportname", "default") if "," in name: params = [] for n in name.split(","): rptparams = self.reports.get(n, None) if rptparams is None: logging.warning("Reportname %r not found." % (n, )) continue params.append(rptparams) else: params = self.reports.get(name, None) if not params: raise reports.ReportFindError("Report %r not found." % (name, )) if type(params) is list: params = map(self.expand_params, params) else: params = self.expand_params(params) return reports.get_report(params)
def _build_report(self, name): from pycopia import reports # XXX pycopia-QA circular dependency. if name is None: name = self.get("reportname", "default") if "," in name: params = [] for n in name.split(","): rptparams = self.reports.get(n, None) if rptparams is None: logging.warning("Reportname %r not found." % (n,)) continue params.append(rptparams) else: params = self.reports.get(name, None) if not params: raise reports.ReportFindError("Report %r not found." % (name,)) if type(params) is list: params = map(self.expand_params, params) else: params = self.expand_params(params) return reports.get_report(params)
REPORT = destination_report sock = socket.unix_listener(_get_path()) self._h = asyncio.AsyncServerHandler(sock, ReportProxyWrapper) def close(self): if self._h is not None: self._h.close() self._h = None os.unlink(_get_path()) if __name__ == "__main__": from pycopia import reports from pycopia import scheduler rpt = reports.get_report( ("StandardReport", "-", "text/plain") ) rx = ReportReceiver(rpt) tx = RemoteReport() def txstepper(tx): yield tx.initialize() yield tx.add_title("The Title") yield tx.add_heading("Some heading") yield tx.info("some info") yield tx.passed("A message for a passed condition.") yield tx.finalize() scheduler.get_scheduler().add(0.1, callback=txstepper(tx).next, repeat=True) try: try:
def text(self, text): return "<pre>%s</pre>\n" % (text,) def analysis(self, text): return '<h3>Analysis</h3>\n<pre class="analysis">%s</pre>\n' % (text,) def url(self, text, url): return '<p>%s: <a href="%s">%s</a></p>\n' % (text, url, url) def summaryline(self, entry): sum = "<pre>%s\n</pre>\n" % (entry,) sum = sum.replace("PASSED", self._MSGTYPESUB["PASSED"]) sum = sum.replace("FAILED", self._MSGTYPESUB["FAILED"]) sum = sum.replace("EXPECTED_FAIL", self._MSGTYPESUB["EXPECTED_FAIL"]) return sum def section(self): return "<hr>\n" if __name__ == "__main__": report = reports.get_report((None, "-", "text/html")) report.initialize() report.info("Some self test info.") report.passed("yippee!") report.add_analysis("Analyze this!") report.finalize() # End of file
def analysis(self, text): return '<h3>Analysis</h3>\n<pre class="analysis">%s</pre>\n' % (text, ) def url(self, text, url): return '<p>%s: <a href="%s">%s</a></p>\n' % (text, url, url) def summaryline(self, entry): sum = "<pre>%s\n</pre>\n" % (entry, ) sum = sum.replace("PASSED", self._MSGTYPESUB["PASSED"]) sum = sum.replace("FAILED", self._MSGTYPESUB["FAILED"]) sum = sum.replace("EXPECTED_FAIL", self._MSGTYPESUB["EXPECTED_FAIL"]) return sum def section(self): return "<hr>\n" if __name__ == "__main__": report = reports.get_report(( None, "-", "text/html", )) report.initialize() report.info("Some self test info.") report.passed("yippee!") report.add_analysis("Analyze this!") report.finalize() # End of file