Пример #1
0
    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()
Пример #2
0
 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()
Пример #3
0
 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)
Пример #4
0
 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 )
Пример #5
0
    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)
Пример #6
0
    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
Пример #7
0
 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)
Пример #8
0
 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)
Пример #9
0
            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:
Пример #10
0
    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
Пример #11
0
    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
Пример #12
0
            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: