[PATCH] [py3] Decode subprocess stdout in toolsutils.show_diffs()

Denis Laxalde denis.laxalde at logilab.fr
Wed Jun 6 11:58:46 CEST 2018


# HG changeset patch
# User Denis Laxalde <denis.laxalde at logilab.fr>
# Date 1528278975 -7200
#      Wed Jun 06 11:56:15 2018 +0200
# Node ID 4d8268ef1fb713f793508d73fef19cb40986adba
# Parent  aa999699e5047da7512ececd8ead42a2f1b15e4b
# Available At https://hg.logilab.org/review/cubicweb
#              hg pull https://hg.logilab.org/review/cubicweb -r 4d8268ef1fb7
# EXP-Topic py3
[py3] Decode subprocess stdout in toolsutils.show_diffs()

On Python 3, subprocess' pipes are bytes stream so we must decode them
before printing. Without this change, diff of configuration files (e.g.
all-in-one.conf as displayed upon instance upgrade) will rendered as a
single line on Python 3.

diff --git a/cubicweb/toolsutils.py b/cubicweb/toolsutils.py
--- a/cubicweb/toolsutils.py
+++ b/cubicweb/toolsutils.py
@@ -96,7 +96,7 @@ def show_diffs(appl_file, ref_file, askc
     """
     import shutil
     pipe = subprocess.Popen(['diff', '-u', appl_file, ref_file], stdout=subprocess.PIPE)
-    diffs = pipe.stdout.read()
+    diffs = pipe.stdout.read().decode('utf-8')
     if diffs:
         if askconfirm:
             print()


More information about the cubicweb-devel mailing list