Quoting Marek Olšák (2018-05-02 13:32:45) > From: Marek Olšák <marek.ol...@amd.com> > > This happens due to LLVM printing colored text into stdout/stderr on error. > --- > framework/test/base.py | 3 +++ > 1 file changed, 3 insertions(+) > > diff --git a/framework/test/base.py b/framework/test/base.py > index 134b87245..f187c0210 100644 > --- a/framework/test/base.py > +++ b/framework/test/base.py > @@ -369,20 +369,23 @@ class Test(object): > os.killpg(os.getpgid(proc.pid), signal.SIGKILL) > > # Since the process isn't running it's safe to get any remaining > # stdout/stderr values out and store them. > self.result.out, self.result.err = proc.communicate() > > raise TestRunError( > 'Test run time exceeded timeout value ({} seconds)\n'.format( > self.timeout), > 'timeout') > + # LLVM prints colored text into stdout/stderr on error, which raises: > + except UnicodeDecodeError as e: > + raise TestRunError("UnicodeDecodeError.\n", 'crash')
This seems odd to me, Popen.communicate() returns bytes, and the conversion is done right after this (it's hideous, but there is a setter function for result.out and result.err that converts bytes to unicode), but is uses replace for characters it doesn't understand. > > # The setter handles the bytes/unicode conversion > self.result.out = out > self.result.err = err > self.result.returncode = returncode > > def __eq__(self, other): > return self.command == other.command > > def __ne__(self, other): > -- > 2.17.0 > > _______________________________________________ > Piglit mailing list > Piglit@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/piglit
signature.asc
Description: signature
_______________________________________________ Piglit mailing list Piglit@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/piglit