python: Fix using strings as commands in the assuan protocol.
authorJustus Winter <justus@g10code.com>
Fri, 17 Feb 2017 11:10:34 +0000 (12:10 +0100)
committerJustus Winter <justus@g10code.com>
Fri, 17 Feb 2017 11:10:34 +0000 (12:10 +0100)
* lang/python/gpg/core.py (Context.assuan_transact): Fix testing
whether the command is a string on Python2.
* lang/python/tests/t-protocol-assuan.py: Improve the test to detect
this problem.

Signed-off-by: Justus Winter <justus@g10code.com>
lang/python/gpg/core.py
lang/python/tests/t-protocol-assuan.py

index beaebda..28d4629 100644 (file)
@@ -699,7 +699,7 @@ class Context(GpgmeWrapper):
 
         """
 
-        if isinstance(command, (str, bytes)):
+        if util.is_a_string(command) or isinstance(command, bytes):
             cmd = command
         else:
             cmd = " ".join(util.percent_escape(f) for f in command)
index 0084a6b..27b28c7 100755 (executable)
@@ -24,9 +24,12 @@ import gpg
 
 with gpg.Context(protocol=gpg.constants.protocol.ASSUAN) as c:
     # Do nothing.
-    c.assuan_transact('nop')
-    c.assuan_transact('NOP')
-    c.assuan_transact(['NOP'])
+    err = c.assuan_transact('nop')
+    assert err == None
+    err = c.assuan_transact(b'NOP')
+    assert err == None
+    err = c.assuan_transact(['NOP'])
+    assert err == None
 
     err = c.assuan_transact('idontexist')
     assert err.getsource() == gpg.errors.SOURCE_GPGAGENT