---
 framework/exectest.py |   38 ++++++++++++++++++++------------------
 1 fil ändrad, 20 tillägg(+), 18 borttagningar(-)

diff --git a/framework/exectest.py b/framework/exectest.py
index 1f97f12..531863b 100644
--- a/framework/exectest.py
+++ b/framework/exectest.py
@@ -20,6 +20,8 @@
 # OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
 # DEALINGS IN THE SOFTWARE.
 
+from __future__ import unicode_literals
+
 import os
 import subprocess
 import shlex
@@ -97,23 +99,6 @@ class ExecTest(Test):
                                else:
                                        break
 
-                       # proc.communicate() returns 8-bit strings, but we need
-                       # unicode strings.  In Python 2.x, this is because we
-                       # will eventually be serializing the strings as JSON,
-                       # and the JSON library expects unicode.  In Python 3.x,
-                       # this is because all string operations require
-                       # unicode.  So translate the strings into unicode,
-                       # assuming they are using UTF-8 encoding.
-                       #
-                       # If the subprocess output wasn't properly UTF-8
-                       # encoded, we don't want to raise an exception, so
-                       # translate the strings using 'replace' mode, which
-                       # replaces erroneous charcters with the Unicode
-                       # "replacement character" (a white question mark inside
-                       # a black diamond).
-                       out = out.decode('utf-8', 'replace')
-                       err = err.decode('utf-8', 'replace')
-
                        results = TestResult()
 
                        if self.skip_test:
@@ -159,7 +144,7 @@ class ExecTest(Test):
                        if env:
                                results['environment'] = env
 
-                       results['info'] = unicode("Returncode: 
{0}\n\nErrors:\n{1}\n\nOutput:\n{2}").format(returncode, err, out)
+                       results['info'] = "Returncode: 
{0}\n\nErrors:\n{1}\n\nOutput:\n{2}".format(returncode, err, out)
                        results['returncode'] = returncode
                        results['command'] = ' '.join(self.command)
 
@@ -192,6 +177,23 @@ class ExecTest(Test):
                                )
                        out, err = proc.communicate()
                        returncode = proc.returncode
+
+                       # In Python 2.x proc.communicate() returns 8-bit 
strings,
+                       # but we need unicode strings.  This is because we will
+                       # eventually be serializing the strings as JSON, and the
+                       # JSON library expects unicode.  So translate the 
strings
+                       # into unicode, assuming they are using UTF-8 encoding.
+                       #
+                       # If the subprocess output wasn't properly UTF-8
+                       # encoded, we don't want to raise an exception, so
+                       # translate the strings using 'replace' mode, which
+                       # replaces erroneous charcters with the Unicode
+                       # "replacement character" (a white question mark inside
+                       # a black diamond).
+                       if sys.hexversion < 0x030000A0:
+                               out = out.decode('utf-8', 'replace')
+                               err = err.decode('utf-8', 'replace')
+
                except OSError as e:
                        # Different sets of tests get built under
                        # different build configurations.  If
-- 
1.7.10.4

_______________________________________________
Piglit mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/piglit

Reply via email to