[tor-commits] [tor/maint-0.3.4] ntor_ref.py: pass only strings to subprocess.Popen

nickm at torproject.org nickm at torproject.org
Tue Jul 3 13:48:11 UTC 2018


commit fc5f8b6931dbbfcf31157cb9e4f68da56b6ff6aa
Author: Nick Mathewson <nickm at torproject.org>
Date:   Mon Jul 2 14:04:46 2018 -0400

    ntor_ref.py: pass only strings to subprocess.Popen
    
    Recent Python3 versions seem to require this on Windows.
    
    Fixes bug 26535; bug introduced in f4be34f70d6f277a0f3f73e, which
    was apparently intended itself as a Python3 workaround.
---
 changes/bug26535.029 | 5 +++++
 src/test/ntor_ref.py | 9 ++++++---
 2 files changed, 11 insertions(+), 3 deletions(-)

diff --git a/changes/bug26535.029 b/changes/bug26535.029
new file mode 100644
index 000000000..111b539f1
--- /dev/null
+++ b/changes/bug26535.029
@@ -0,0 +1,5 @@
+  o Minor bugfixes (testing, compatibility):
+    - When running the ntor_ref.py test, make sure only to pass strings
+      (rather than "bytes" objects) to the Python subprocess module.
+      Python 3 on Windows seems to require this.  Fixes bug 26535; bugfix on
+      0.2.5.5-alpha.
diff --git a/src/test/ntor_ref.py b/src/test/ntor_ref.py
index df065853f..5ec117f2b 100755
--- a/src/test/ntor_ref.py
+++ b/src/test/ntor_ref.py
@@ -336,13 +336,16 @@ def test_tor():
        Call the test-ntor-cl command-line program to make sure we can
        interoperate with Tor's ntor program
     """
-    enhex=lambda s: binascii.b2a_hex(s)
+    if sys.version_info[0] >= 3:
+        enhex=lambda s: binascii.b2a_hex(s).decode("ascii")
+    else:
+        enhex=lambda s: binascii.b2a_hex(s)
     dehex=lambda s: binascii.a2b_hex(s.strip())
 
-    PROG = b"./src/test/test-ntor-cl"
+    PROG = "./src/test/test-ntor-cl"
     def tor_client1(node_id, pubkey_B):
         " returns (msg, state) "
-        p = subprocess.Popen([PROG, b"client1", enhex(node_id),
+        p = subprocess.Popen([PROG, "client1", enhex(node_id),
                               enhex(pubkey_B.serialize())],
                              stdout=subprocess.PIPE)
         return map(dehex, p.stdout.readlines())





More information about the tor-commits mailing list