From 1c1812def711803382cc28caea1f35fb7ef774b0 Mon Sep 17 00:00:00 2001
From: Daniel Kahn Gillmor <dkg@fifthhorseman.net>
Date: Tue, 26 Jan 2016 14:24:26 -0500
Subject: [PATCH 1/5] reflect 2.1 reporting for key imports

GnuPG 2.1 changes how it reports key imports.  These changes should
make the pygpgme test suite compatible with GnuPG 2.1.

See also:
https://lists.gnupg.org/pipermail/gnupg-devel/2016-January/030718.html

Upstream-Status: Backport

Signed-off-by: Catalin Enache <catalin.enache@windriver.com>
---
 tests/test_import.py | 22 +++++++++++-----------
 1 file changed, 11 insertions(+), 11 deletions(-)

diff --git a/tests/test_import.py b/tests/test_import.py
index 10eb816..597eb47 100644
--- a/tests/test_import.py
+++ b/tests/test_import.py
@@ -55,7 +55,7 @@ class ImportTestCase(GpgHomeTestCase):
         ctx = gpgme.Context()
         with self.keyfile('key1.sec') as fp:
             result = ctx.import_(fp)
-        self.assertEqual(result.considered, 1)
+        self.assertEqual(result.considered, 3)
         self.assertEqual(result.no_user_id, 0)
         self.assertEqual(result.imported, 1)
         self.assertEqual(result.imported_rsa, 0)
@@ -64,18 +64,18 @@ class ImportTestCase(GpgHomeTestCase):
         self.assertEqual(result.new_sub_keys, 0)
         self.assertEqual(result.new_signatures, 0)
         self.assertEqual(result.new_revocations, 0)
-        self.assertEqual(result.secret_read, 1)
-        self.assertEqual(result.secret_imported, 1)
+        self.assertEqual(result.secret_read, 3)
+        self.assertEqual(result.secret_imported, 2)
         self.assertEqual(result.secret_unchanged, 0)
         self.assertEqual(result.skipped_new_keys, 0)
         self.assertEqual(result.not_imported, 0)
         self.assertEqual(len(result.imports), 2)
         self.assertEqual(result.imports[0],
                          ('E79A842DA34A1CA383F64A1546BB55F0885C65A4',
-                          None, gpgme.IMPORT_NEW | gpgme.IMPORT_SECRET))
+                          None, gpgme.IMPORT_NEW))
         self.assertEqual(result.imports[1],
                          ('E79A842DA34A1CA383F64A1546BB55F0885C65A4',
-                          None, gpgme.IMPORT_NEW))
+                          None, gpgme.IMPORT_NEW | gpgme.IMPORT_SECRET))
         # can we get the public key?
         key = ctx.get_key('E79A842DA34A1CA383F64A1546BB55F0885C65A4')
         # can we get the secret key?
@@ -102,17 +102,17 @@ class ImportTestCase(GpgHomeTestCase):
         fp = BytesIO(b'\n'.join(keys))
         ctx = gpgme.Context()
         result = ctx.import_(fp)
-        self.assertEqual(result.considered, 3)
+        self.assertEqual(result.considered, 5)
         self.assertEqual(result.no_user_id, 0)
         self.assertEqual(result.imported, 2)
-        self.assertEqual(result.imported_rsa, 1)
+        self.assertEqual(result.imported_rsa, 0)
         self.assertEqual(result.unchanged, 0)
         self.assertEqual(result.new_user_ids, 0)
         self.assertEqual(result.new_sub_keys, 0)
         self.assertEqual(result.new_signatures, 1)
         self.assertEqual(result.new_revocations, 0)
-        self.assertEqual(result.secret_read, 1)
-        self.assertEqual(result.secret_imported, 1)
+        self.assertEqual(result.secret_read, 3)
+        self.assertEqual(result.secret_imported, 2)
         self.assertEqual(result.secret_unchanged, 0)
         self.assertEqual(result.skipped_new_keys, 0)
         self.assertEqual(result.not_imported, 0)
@@ -122,10 +122,10 @@ class ImportTestCase(GpgHomeTestCase):
                           None, gpgme.IMPORT_NEW))
         self.assertEqual(result.imports[1],
                          ('E79A842DA34A1CA383F64A1546BB55F0885C65A4',
-                          None, gpgme.IMPORT_NEW | gpgme.IMPORT_SECRET))
+                          None, gpgme.IMPORT_SIG))
         self.assertEqual(result.imports[2],
                          ('E79A842DA34A1CA383F64A1546BB55F0885C65A4',
-                          None, gpgme.IMPORT_SIG))
+                          None, gpgme.IMPORT_NEW | gpgme.IMPORT_SECRET))
         self.assertEqual(result.imports[3],
                          ('93C2240D6B8AA10AB28F701D2CF46B7FC97E6B0F',
