[Piglit] [PATCH 3/5] framework: handle UnicodeDecodeError
Dylan Baker
dylan at pnwbakers.com
Wed May 2 20:48:16 UTC 2018
Quoting Marek Olšák (2018-05-02 13:32:45)
> From: Marek Olšák <marek.olsak at 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 at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/piglit
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 228 bytes
Desc: signature
URL: <https://lists.freedesktop.org/archives/piglit/attachments/20180502/86f3d71b/attachment.sig>
More information about the Piglit
mailing list