[pacman-dev] [PATCH v2] Port pactest to python3

Dave Reisner dreisner at archlinux.org
Fri Oct 19 02:24:31 UTC 2018


Use BytesIO instead of StringIO, and ensure that we unicode-encode data
where needed.
---
* Make sure pactest --review is happy

 configure.ac           | 2 +-
 test/pacman/pactest.py | 5 +++--
 test/pacman/pmdb.py    | 4 ++--
 test/pacman/pmpkg.py   | 6 +++---
 test/pacman/util.py    | 2 +-
 5 files changed, 10 insertions(+), 9 deletions(-)

diff --git a/configure.ac b/configure.ac
index a569ffeb..c369ca74 100644
--- a/configure.ac
+++ b/configure.ac
@@ -179,7 +179,7 @@ AC_SUBST(LFS_CFLAGS)
 AC_PROG_AWK
 AC_PROG_CC_C99
 AC_PROG_INSTALL
-AC_CHECK_PROGS([PYTHON], [python2.7 python2 python], [false])
+AC_CHECK_PROGS([PYTHON], [python3 python], [false])
 AC_PATH_PROGS([BASH_SHELL], [bash bash4], [false])
 
 # check for perl 5.10.1 (needed by makepkg-template)
diff --git a/test/pacman/pactest.py b/test/pacman/pactest.py
index 1f5b8483..85cce6a1 100755
--- a/test/pacman/pactest.py
+++ b/test/pacman/pactest.py
@@ -1,4 +1,4 @@
-#! /usr/bin/python2
+#! /usr/bin/python3
 #
 #  pactest : run automated testing on the pacman binary
 #
@@ -45,7 +45,8 @@ def write(self, message):
 # duplicate stdout/stderr to a temporary file
 class OutputSaver():
     def __init__(self):
-        self.save_file = tempfile.NamedTemporaryFile(prefix='pactest-output-')
+        self.save_file = tempfile.NamedTemporaryFile(
+                prefix='pactest-output-', mode='w')
 
     def __enter__(self):
         sys.stdout = MultiWriter(sys.stdout, self.save_file)
diff --git a/test/pacman/pmdb.py b/test/pacman/pmdb.py
index f7671987..95aa8756 100644
--- a/test/pacman/pmdb.py
+++ b/test/pacman/pmdb.py
@@ -15,9 +15,9 @@
 #  along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 
+from io import BytesIO
 import os
 import shutil
-from StringIO import StringIO
 import tarfile
 
 import pmpkg
@@ -251,7 +251,7 @@ def generate(self):
                     filename = os.path.join(pkg.fullname(), name)
                     info = tarfile.TarInfo(filename)
                     info.size = len(data)
-                    tar.addfile(info, StringIO(data))
+                    tar.addfile(info, BytesIO(data.encode('utf8')))
             tar.close()
             # TODO: this is a bit unnecessary considering only one test uses it
             serverpath = os.path.join(self.root, util.SYNCREPO, self.treename)
diff --git a/test/pacman/pmpkg.py b/test/pacman/pmpkg.py
index 5a32ccd6..4667ebc1 100644
--- a/test/pacman/pmpkg.py
+++ b/test/pacman/pmpkg.py
@@ -14,8 +14,8 @@
 #  You should have received a copy of the GNU General Public License
 #  along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+from io import BytesIO
 import os
-from StringIO import StringIO
 import tarfile
 
 import util
@@ -146,7 +146,7 @@ def makepkg(self, path):
         for name, data in archive_files:
             info = tarfile.TarInfo(name)
             info.size = len(data)
-            tar.addfile(info, StringIO(data))
+            tar.addfile(info, BytesIO(data.encode('utf8')))
 
         # Generate package file system
         for name in self.files:
@@ -167,7 +167,7 @@ def makepkg(self, path):
                 # TODO wow what a hack, adding a newline to match mkfile?
                 filedata = name + "\n"
                 info.size = len(filedata)
-                tar.addfile(info, StringIO(filedata))
+                tar.addfile(info, BytesIO(filedata.encode('utf8')))
 
         tar.close()
 
diff --git a/test/pacman/util.py b/test/pacman/util.py
index 5fbe4c35..544bdd8d 100644
--- a/test/pacman/util.py
+++ b/test/pacman/util.py
@@ -152,7 +152,7 @@ def getmd5sum(filename):
 
 def mkmd5sum(data):
     checksum = hashlib.md5()
-    checksum.update("%s\n" % data)
+    checksum.update(("%s\n" % data).encode('utf8'))
     return checksum.hexdigest()
 
 
-- 
2.19.1


More information about the pacman-dev mailing list