diff options
Diffstat (limited to 'poky/meta/lib/oeqa/core')
-rw-r--r-- | poky/meta/lib/oeqa/core/case.py | 4 | ||||
-rw-r--r-- | poky/meta/lib/oeqa/core/utils/concurrencytest.py | 31 |
2 files changed, 20 insertions, 15 deletions
diff --git a/poky/meta/lib/oeqa/core/case.py b/poky/meta/lib/oeqa/core/case.py index 180635ac6..aae451fef 100644 --- a/poky/meta/lib/oeqa/core/case.py +++ b/poky/meta/lib/oeqa/core/case.py @@ -59,7 +59,7 @@ class OEPTestResultTestCase: """ @staticmethod def _compress_log(log): - logdata = log.encode("utf-8") + logdata = log.encode("utf-8") if isinstance(log, str) else log logdata = zlib.compress(logdata) logdata = base64.b64encode(logdata).decode("utf-8") return {"compressed" : logdata} @@ -80,7 +80,7 @@ class OEPTestResultTestCase: if log is not None: sections[section]["log"] = self._compress_log(log) elif logfile is not None: - with open(logfile, "r") as f: + with open(logfile, "rb") as f: sections[section]["log"] = self._compress_log(f.read()) if duration is not None: diff --git a/poky/meta/lib/oeqa/core/utils/concurrencytest.py b/poky/meta/lib/oeqa/core/utils/concurrencytest.py index 6293cf94e..0f7b3dcc1 100644 --- a/poky/meta/lib/oeqa/core/utils/concurrencytest.py +++ b/poky/meta/lib/oeqa/core/utils/concurrencytest.py @@ -78,29 +78,29 @@ class ProxyTestResult: def __init__(self, target): self.result = target - def _addResult(self, method, test, *args, **kwargs): + def _addResult(self, method, test, *args, exception = False, **kwargs): return method(test, *args, **kwargs) - def addError(self, test, *args, **kwargs): - self._addResult(self.result.addError, test, *args, **kwargs) + def addError(self, test, err = None, **kwargs): + self._addResult(self.result.addError, test, err, exception = True, **kwargs) - def addFailure(self, test, *args, **kwargs): - self._addResult(self.result.addFailure, test, *args, **kwargs) + def addFailure(self, test, err = None, **kwargs): + self._addResult(self.result.addFailure, test, err, exception = True, **kwargs) - def addSuccess(self, test, *args, **kwargs): - self._addResult(self.result.addSuccess, test, *args, **kwargs) + def addSuccess(self, test, **kwargs): + self._addResult(self.result.addSuccess, test, **kwargs) - def addExpectedFailure(self, test, *args, **kwargs): - self._addResult(self.result.addExpectedFailure, test, *args, **kwargs) + def addExpectedFailure(self, test, err = None, **kwargs): + self._addResult(self.result.addExpectedFailure, test, err, exception = True, **kwargs) - def addUnexpectedSuccess(self, test, *args, **kwargs): - self._addResult(self.result.addUnexpectedSuccess, test, *args, **kwargs) + def addUnexpectedSuccess(self, test, **kwargs): + self._addResult(self.result.addUnexpectedSuccess, test, **kwargs) def __getattr__(self, attr): return getattr(self.result, attr) class ExtraResultsDecoderTestResult(ProxyTestResult): - def _addResult(self, method, test, *args, **kwargs): + def _addResult(self, method, test, *args, exception = False, **kwargs): if "details" in kwargs and "extraresults" in kwargs["details"]: if isinstance(kwargs["details"]["extraresults"], Content): kwargs = kwargs.copy() @@ -114,7 +114,7 @@ class ExtraResultsDecoderTestResult(ProxyTestResult): return method(test, *args, **kwargs) class ExtraResultsEncoderTestResult(ProxyTestResult): - def _addResult(self, method, test, *args, **kwargs): + def _addResult(self, method, test, *args, exception = False, **kwargs): if hasattr(test, "extraresults"): extras = lambda : [json.dumps(test.extraresults).encode()] kwargs = kwargs.copy() @@ -123,6 +123,11 @@ class ExtraResultsEncoderTestResult(ProxyTestResult): else: kwargs["details"] = kwargs["details"].copy() kwargs["details"]["extraresults"] = Content(ContentType("application", "json", {'charset': 'utf8'}), extras) + # if using details, need to encode any exceptions into the details obj, + # testtools does not handle "err" and "details" together. + if "details" in kwargs and exception and (len(args) >= 1 and args[0] is not None): + kwargs["details"]["traceback"] = testtools.content.TracebackContent(args[0], test) + args = [] return method(test, *args, **kwargs) # |