Make testsuite work again with Py3
authorHerbert Valerio Riedel <hvr@gnu.org>
Wed, 23 Dec 2015 21:37:42 +0000 (22:37 +0100)
committerHerbert Valerio Riedel <hvr@gnu.org>
Wed, 23 Dec 2015 21:59:37 +0000 (22:59 +0100)
Python 3 support seems to have mildly bitrotten since #9184 was closed.
Luckily, only some minor tweaks seem necessary.

testsuite/driver/testlib.py
testsuite/driver/testutil.py

index 4e9a1fb..33e134d 100644 (file)
@@ -23,6 +23,11 @@ import subprocess
 from testglobals import *
 from testutil import *
 
+try:
+    basestring
+except: # Python 3
+    basestring = (str,bytes)
+
 if config.use_threads:
     import threading
     try:
@@ -691,8 +696,8 @@ def test_common_work (name, opts, func, args):
         elif config.speed > 0:
             # However, if we EXPLICITLY asked for a way (with extra_ways)
             # please test it!
-            explicit_ways = filter(lambda way: way in opts.extra_ways, do_ways)
-            other_ways = filter(lambda way: way not in opts.extra_ways, do_ways)
+            explicit_ways = list(filter(lambda way: way in opts.extra_ways, do_ways))
+            other_ways = list(filter(lambda way: way not in opts.extra_ways, do_ways))
             do_ways = other_ways[:1] + explicit_ways
 
         if not config.clean_only:
@@ -1721,7 +1726,7 @@ def normalise_errmsg( str ):
     # Also filter out bullet characters.  This is because bullets are used to
     # separate error sections, and tests shouldn't be sensitive to how the
     # the division happens.
-    bullet = u'•'.encode('utf8')
+    bullet = u'•'.encode('utf8') if isinstance(str, bytes) else u'•'
     str = str.replace(bullet, '')
     return str
 
index 2f037f0..029a3b6 100644 (file)
@@ -33,6 +33,6 @@ def getStdout(cmd_and_args):
     r = p.wait()
     if r != 0:
         raise Exception("Command failed: " + str(cmd_and_args))
-    if stderr != '':
+    if stderr:
         raise Exception("stderr from command: " + str(cmd_and_args))
     return stdout