[Pkg-gnupg-commit] [gpgme] 144/412: python: Port more tests.

Daniel Kahn Gillmor dkg at fifthhorseman.net
Thu Sep 22 21:26:35 UTC 2016


This is an automated email from the git hooks/post-receive script.

dkg pushed a commit to branch master
in repository gpgme.

commit 3915842657f0849a038752fd7445f96081a89dd9
Author: Justus Winter <justus at gnupg.org>
Date:   Fri May 27 15:58:23 2016 +0200

    python: Port more tests.
    
    * lang/python/pyme/core.py (Data._error_check): Add
    'gpgme_data_get_file_name' to the list of functions not returning an
    error code.
    * lang/python/tests/Makefile.am (pytests): Add new tests.
    * lang/python/tests/support.py (verbose): New variable.
    * lang/python/tests/t-data.py: Test setting and getting the filename.
    * lang/python/tests/t-encrypt-large.py: New file.
    * lang/python/tests/t-file-name.py: Likewise.
    * lang/python/tests/t-trustlist.py: Likewise.
    
    Signed-off-by: Justus Winter <justus at gnupg.org>
---
 lang/python/pyme/core.py                         | 11 +++--
 lang/python/tests/Makefile.am                    |  5 +-
 lang/python/tests/support.py                     |  3 +-
 lang/python/tests/t-data.py                      |  4 ++
 lang/python/tests/t-encrypt-large.py             | 63 ++++++++++++++++++++++++
 lang/python/tests/{support.py => t-file-name.py} | 32 +++++++-----
 lang/python/tests/{support.py => t-trustlist.py} | 26 +++++-----
 7 files changed, 114 insertions(+), 30 deletions(-)

diff --git a/lang/python/pyme/core.py b/lang/python/pyme/core.py
index e89c181..cc262c9 100644
--- a/lang/python/pyme/core.py
+++ b/lang/python/pyme/core.py
@@ -363,11 +363,12 @@ class Data(GpgmeWrapper):
 
     def _errorcheck(self, name):
         """This function should list all functions returning gpgme_error_t"""
-        if name == 'gpgme_data_release_and_get_mem' or \
-               name == 'gpgme_data_get_encoding' or \
-               name == 'gpgme_data_seek':
-            return 0
-        return 1
+        return name not in {
+            'gpgme_data_release_and_get_mem',
+            'gpgme_data_get_encoding',
+            'gpgme_data_seek',
+            'gpgme_data_get_file_name',
+        }
 
     def __init__(self, string=None, file=None, offset=None,
                  length=None, cbs=None, copy=True):
diff --git a/lang/python/tests/Makefile.am b/lang/python/tests/Makefile.am
index 7df40a2..0bc8c7f 100644
--- a/lang/python/tests/Makefile.am
+++ b/lang/python/tests/Makefile.am
@@ -39,8 +39,11 @@ py_tests = t-wrapper.py \
 	t-signers.py \
 	t-decrypt.py \
 	t-export.py \
+	t-trustlist.py \
 	t-edit.py \
-	t-wait.py
+	t-wait.py \
+	t-encrypt-large.py \
+	t-file-name.py
 
 TESTS = $(top_srcdir)/tests/gpg/initial.test \
 	$(py_tests) \
diff --git a/lang/python/tests/support.py b/lang/python/tests/support.py
index a57d581..99d96cf 100644
--- a/lang/python/tests/support.py
+++ b/lang/python/tests/support.py
@@ -26,7 +26,8 @@ def init_gpgme(proto):
     core.check_version()
     core.engine_check_version(proto)
 
+verbose = int(os.environ.get('verbose', 0)) > 1
 def print_data(data):
-    if int(os.environ.get('verbose', 0)) > 1:
+    if verbose:
         data.seek(0, os.SEEK_SET)
         sys.stdout.buffer.write(data.read())
diff --git a/lang/python/tests/t-data.py b/lang/python/tests/t-data.py
index de60c47..3774f09 100755
--- a/lang/python/tests/t-data.py
+++ b/lang/python/tests/t-data.py
@@ -52,6 +52,10 @@ data.write(binjunk)
 data.seek(0, os.SEEK_SET)
 assert data.read() == binjunk
 
+data = core.Data()
+data.set_file_name("foobar")
+assert data.get_file_name() == "foobar"
+
 # Test reading from an existing file.
 with tempfile.NamedTemporaryFile() as tmp:
     tmp.write(binjunk)
diff --git a/lang/python/tests/t-encrypt-large.py b/lang/python/tests/t-encrypt-large.py
new file mode 100755
index 0000000..69aed48
--- /dev/null
+++ b/lang/python/tests/t-encrypt-large.py
@@ -0,0 +1,63 @@
+#!/usr/bin/env python3
+
+# Copyright (C) 2016 g10 Code GmbH
+#
+# This file is part of GPGME.
+#
+# GPGME is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# GPGME is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+# or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General
+# Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this program; if not, see <http://www.gnu.org/licenses/>.
+
+import sys
+import random
+from pyme import core, constants
+import support
+
+if len(sys.argv) == 2:
+    nbytes = int(sys.argv[1])
+else:
+    nbytes = 100000
+
+support.init_gpgme(constants.PROTOCOL_OpenPGP)
+c = core.Context()
+
+ntoread = nbytes
+def read_cb(amount):
+    global ntoread
+    chunk = ntoread if ntoread < amount else amount
+    ntoread -= chunk
+    assert ntoread >= 0
+    assert chunk >= 0
+    return bytes(random.randrange(256) for i in range(chunk))
+
+nwritten = 0
+def write_cb(data):
+    global nwritten
+    nwritten += len(data)
+    return len(data)
+
+source = core.Data(cbs=(read_cb, None, None, lambda: None))
+sink = core.Data(cbs=(None, write_cb, None, lambda: None))
+
+keys = []
+keys.append(c.get_key("A0FF4590BB6122EDEF6E3C542D727CC768697734", False))
+keys.append(c.get_key("D695676BDCEDCC2CDD6152BCFE180B1DA9E3B0B2", False))
+
+c.op_encrypt(keys, constants.ENCRYPT_ALWAYS_TRUST, source, sink)
+result = c.op_encrypt_result()
+assert not result.invalid_recipients, \
+    "Invalid recipient encountered: {}".format(result.invalid_recipients.fpr)
+assert ntoread == 0
+
+if support.verbose:
+    sys.stderr.write(
+        "plaintext={} bytes, ciphertext={} bytes\n".format(nbytes, nwritten))
diff --git a/lang/python/tests/support.py b/lang/python/tests/t-file-name.py
old mode 100644
new mode 100755
similarity index 55%
copy from lang/python/tests/support.py
copy to lang/python/tests/t-file-name.py
index a57d581..6f9294e
--- a/lang/python/tests/support.py
+++ b/lang/python/tests/t-file-name.py
@@ -1,3 +1,5 @@
+#!/usr/bin/env python3
+
 # Copyright (C) 2016 g10 Code GmbH
 #
 # This file is part of GPGME.
@@ -15,18 +17,26 @@
 # You should have received a copy of the GNU Lesser General Public
 # License along with this program; if not, see <http://www.gnu.org/licenses/>.
 
-import sys
 import os
-from pyme import core
+from pyme import core, constants
+import support
+
+testname = "abcde12345"
+
+support.init_gpgme(constants.PROTOCOL_OpenPGP)
+c = core.Context()
+c.set_armor(True)
 
-def make_filename(name):
-    return os.path.join(os.environ['top_srcdir'], 'tests', 'gpg', name)
+source = core.Data("Hallo Leute\n")
+source.set_file_name(testname)
+cipher = core.Data()
+plain = core.Data()
 
-def init_gpgme(proto):
-    core.check_version()
-    core.engine_check_version(proto)
+keys = []
+keys.append(c.get_key("A0FF4590BB6122EDEF6E3C542D727CC768697734", False))
 
-def print_data(data):
-    if int(os.environ.get('verbose', 0)) > 1:
-        data.seek(0, os.SEEK_SET)
-        sys.stdout.buffer.write(data.read())
+c.op_encrypt(keys, constants.ENCRYPT_ALWAYS_TRUST, source, cipher)
+cipher.seek(0, os.SEEK_SET)
+c.op_decrypt(cipher, plain)
+result = c.op_decrypt_result()
+assert result.file_name == testname
diff --git a/lang/python/tests/support.py b/lang/python/tests/t-trustlist.py
old mode 100644
new mode 100755
similarity index 64%
copy from lang/python/tests/support.py
copy to lang/python/tests/t-trustlist.py
index a57d581..61f8fa5
--- a/lang/python/tests/support.py
+++ b/lang/python/tests/t-trustlist.py
@@ -1,3 +1,5 @@
+#!/usr/bin/env python3
+
 # Copyright (C) 2016 g10 Code GmbH
 #
 # This file is part of GPGME.
@@ -15,18 +17,18 @@
 # You should have received a copy of the GNU Lesser General Public
 # License along with this program; if not, see <http://www.gnu.org/licenses/>.
 
-import sys
-import os
-from pyme import core
+from pyme import core, constants
+import support
 
-def make_filename(name):
-    return os.path.join(os.environ['top_srcdir'], 'tests', 'gpg', name)
+support.init_gpgme(constants.PROTOCOL_OpenPGP)
+c = core.Context()
+c.op_trustlist_start("alice", 0)
 
-def init_gpgme(proto):
-    core.check_version()
-    core.engine_check_version(proto)
+while True:
+    item = c.op_trustlist_next()
+    if not item:
+        break
 
-def print_data(data):
-    if int(os.environ.get('verbose', 0)) > 1:
-        data.seek(0, os.SEEK_SET)
-        sys.stdout.buffer.write(data.read())
+    print("l={} k={} t={} o={} v={} u={}".format(
+        item.level, item.keyid, item.type, item.owner_trust,
+        item.validity, item.name))

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-gnupg/gpgme.git



More information about the Pkg-gnupg-commit mailing list