Blame SOURCES/0176-tests-Add-error-reporting-tests-based-on-virtual-dri.patch

d47ffe
From 2ce87cc7a8c662b12900acb9697d74bee0f143f4 Mon Sep 17 00:00:00 2001
d47ffe
From: Benjamin Berg <bberg@redhat.com>
d47ffe
Date: Mon, 13 Jan 2020 17:57:31 +0100
d47ffe
Subject: [PATCH 176/181] tests: Add error reporting tests based on virtual
d47ffe
 driver
d47ffe
d47ffe
We were not testing the image device error reporting functions yet
d47ffe
inside libfprint (fprintd already had such tests). Add tests to make
d47ffe
sure we catch errors earlier.
d47ffe
---
d47ffe
 tests/virtual-image.py | 61 ++++++++++++++++++++++++++++++++++--------
d47ffe
 1 file changed, 50 insertions(+), 11 deletions(-)
d47ffe
d47ffe
diff --git a/tests/virtual-image.py b/tests/virtual-image.py
d47ffe
index 11ec8ae..a6bf6d2 100755
d47ffe
--- a/tests/virtual-image.py
d47ffe
+++ b/tests/virtual-image.py
d47ffe
@@ -99,13 +99,13 @@ class VirtualImage(unittest.TestCase):
d47ffe
 
d47ffe
     def send_retry(self, retry_error=1, iterate=True):
d47ffe
         # The default (1) is too-short
d47ffe
-        self.sendall(struct.pack('ii', -1, retry_error))
d47ffe
+        self.con.sendall(struct.pack('ii', -1, retry_error))
d47ffe
         while iterate and ctx.pending():
d47ffe
             ctx.iteration(False)
d47ffe
 
d47ffe
     def send_error(self, device_error=0, iterate=True):
d47ffe
         # The default (0) is a generic error
d47ffe
-        self.sendall(struct.pack('ii', -1, retry_error))
d47ffe
+        self.con.sendall(struct.pack('ii', -2, device_error))
d47ffe
         while iterate and ctx.pending():
d47ffe
             ctx.iteration(False)
d47ffe
 
d47ffe
@@ -212,9 +212,10 @@ class VirtualImage(unittest.TestCase):
d47ffe
         done = False
d47ffe
 
d47ffe
         def verify_cb(dev, res):
d47ffe
-            match, fp = dev.verify_finish(res)
d47ffe
-            self._verify_match = match
d47ffe
-            self._verify_fp = fp
d47ffe
+            try:
d47ffe
+                self._verify_match, self._verify_fp = dev.verify_finish(res)
d47ffe
+            except gi.repository.GLib.Error as e:
d47ffe
+                self._verify_error = e
d47ffe
 
d47ffe
         fp_whorl = self.enroll_print('whorl')
d47ffe
 
d47ffe
@@ -234,20 +235,39 @@ class VirtualImage(unittest.TestCase):
d47ffe
             ctx.iteration(True)
d47ffe
         assert(not self._verify_match)
d47ffe
 
d47ffe
+        # Test verify error cases
d47ffe
+        self._verify_fp = None
d47ffe
+        self._verify_error = None
d47ffe
+        self.dev.verify(fp_whorl, callback=verify_cb)
d47ffe
+        self.send_retry()
d47ffe
+        while self._verify_fp is None and self._verify_error is None:
d47ffe
+            ctx.iteration(True)
d47ffe
+        assert(self._verify_error is not None)
d47ffe
+        assert(self._verify_error.matches(FPrint.device_retry_quark(), FPrint.DeviceRetry.TOO_SHORT))
d47ffe
+
d47ffe
+        self._verify_fp = None
d47ffe
+        self._verify_error = None
d47ffe
+        self.dev.verify(fp_whorl, callback=verify_cb)
d47ffe
+        self.send_error()
d47ffe
+        while self._verify_fp is None and self._verify_error is None:
d47ffe
+            ctx.iteration(True)
d47ffe
+        assert(self._verify_error is not None)
d47ffe
+        print(self._verify_error)
d47ffe
+        assert(self._verify_error.matches(FPrint.device_error_quark(), FPrint.DeviceError.GENERAL))
d47ffe
+
d47ffe
     def test_identify(self):
d47ffe
         done = False
d47ffe
 
d47ffe
-        def verify_cb(dev, res):
d47ffe
-            r, fp = dev.verify_finish(res)
d47ffe
-            self._verify_match = r
d47ffe
-            self._verify_fp = fp
d47ffe
-
d47ffe
         fp_whorl = self.enroll_print('whorl')
d47ffe
         fp_tented_arch = self.enroll_print('tented_arch')
d47ffe
 
d47ffe
         def identify_cb(dev, res):
d47ffe
             print('Identify finished')
d47ffe
-            self._identify_match, self._identify_fp = self.dev.identify_finish(res)
d47ffe
+            try:
d47ffe
+                self._identify_match, self._identify_fp = self.dev.identify_finish(res)
d47ffe
+            except gi.repository.GLib.Error as e:
d47ffe
+                print(e)
d47ffe
+                self._identify_error = e
d47ffe
 
d47ffe
         self._identify_fp = None
d47ffe
         self.dev.identify([fp_whorl, fp_tented_arch], None, identify_cb)
d47ffe
@@ -263,6 +283,25 @@ class VirtualImage(unittest.TestCase):
d47ffe
             ctx.iteration(True)
d47ffe
         assert(self._identify_match is fp_whorl)
d47ffe
 
d47ffe
+        # Test error cases
d47ffe
+        self._identify_fp = None
d47ffe
+        self._identify_error = None
d47ffe
+        self.dev.identify([fp_whorl, fp_tented_arch], callback=identify_cb)
d47ffe
+        self.send_retry()
d47ffe
+        while self._identify_fp is None and self._identify_error is None:
d47ffe
+            ctx.iteration(True)
d47ffe
+        assert(self._identify_error is not None)
d47ffe
+        assert(self._identify_error.matches(FPrint.device_retry_quark(), FPrint.DeviceRetry.TOO_SHORT))
d47ffe
+
d47ffe
+        self._identify_fp = None
d47ffe
+        self._identify_error = None
d47ffe
+        self.dev.identify([fp_whorl, fp_tented_arch], callback=identify_cb)
d47ffe
+        self.send_error()
d47ffe
+        while self._identify_fp is None and self._identify_error is None:
d47ffe
+            ctx.iteration(True)
d47ffe
+        assert(self._identify_error is not None)
d47ffe
+        assert(self._identify_error.matches(FPrint.device_error_quark(), FPrint.DeviceError.GENERAL))
d47ffe
+
d47ffe
     def test_verify_serialized(self):
d47ffe
         done = False
d47ffe
 
d47ffe
-- 
d47ffe
2.24.1
d47ffe