[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