[Cryptech-Commits] [sw/libhal] 03/05: Unit test cleanup.

git at cryptech.is git at cryptech.is
Wed Feb 15 01:13:18 UTC 2017


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

sra at hactrn.net pushed a commit to branch pymux
in repository sw/libhal.

commit f205126b79558e73bbd856d55bc8bb2ee98f31a8
Author: Rob Austein <sra at hactrn.net>
AuthorDate: Fri Feb 3 00:22:41 2017 -0500

    Unit test cleanup.
    
    Log exceptions immediately when failing a test; doesn't replace
    backtrace at end of test run, but since a full test run can take a
    while it's useful to know what failed closer to when it happened.
    
    More conditionals to skip tests which require external Python crypto
    packages when those packages aren't installed.
---
 unit-tests.py | 47 ++++++++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 46 insertions(+), 1 deletion(-)

diff --git a/unit-tests.py b/unit-tests.py
index 895bdb5..c1d0d44 100644
--- a/unit-tests.py
+++ b/unit-tests.py
@@ -39,6 +39,7 @@ LibHAL unit tests, using libhal.py and the Python unit_test framework.
 
 import unittest
 import datetime
+import logging
 import sys
 
 from libhal import *
@@ -66,6 +67,9 @@ except ImportError:
     ecdsa_loaded = False
 
 
+logger = logging.getLogger("unit-tests")
+
+
 def main():
     from sys import argv
     global args
@@ -121,6 +125,12 @@ class TextTestResult(unittest.TextTestResult):
             self.stream.flush()
         super(TextTestResult, self).addSuccess(test)
 
+    def addError(self, test, err):
+        if self.showAll:
+            self.stream.write("exception {!s} ".format(err[0].__name__)) # err[1]
+            self.stream.flush()
+        super(TextTestResult, self).addError(test, err)
+
 class TextTestRunner(unittest.TextTestRunner):
     resultclass = TextTestResult
 
@@ -331,93 +341,123 @@ class TestPKeyHashing(TestCaseLoggedIn):
         k1.verify(signature = sig, hash = self.h(alg, mixed_mode = True))
         k2.verify(signature = sig, hash = self.h(alg, mixed_mode = True))
 
+    @unittest.skipUnless(pycrypto_loaded, "Requires Python Crypto package")
     def test_load_sign_verify_rsa_1024_sha256_data(self):
         self.load_sign_verify_rsa(HAL_DIGEST_ALGORITHM_SHA256, 1024, self.sign_verify_data)
 
+    @unittest.skipUnless(pycrypto_loaded, "Requires Python Crypto package")
     def test_load_sign_verify_rsa_2048_sha384_data(self):
         self.load_sign_verify_rsa(HAL_DIGEST_ALGORITHM_SHA384, 2048, self.sign_verify_data)
 
+    @unittest.skipUnless(pycrypto_loaded, "Requires Python Crypto package")
     def test_load_sign_verify_rsa_4096_sha512_data(self):
         self.load_sign_verify_rsa(HAL_DIGEST_ALGORITHM_SHA512, 4096, self.sign_verify_data)
 
+    @unittest.skipUnless(ecdsa_loaded, "Requires Python ECDSA package")
     def test_load_sign_verify_ecdsa_p256_sha256_data(self):
         self.load_sign_verify_ecdsa(HAL_DIGEST_ALGORITHM_SHA256, HAL_CURVE_P256, self.sign_verify_data)
 
+    @unittest.skipUnless(ecdsa_loaded, "Requires Python ECDSA package")
     def test_load_sign_verify_ecdsa_p384_sha384_data(self):
         self.load_sign_verify_ecdsa(HAL_DIGEST_ALGORITHM_SHA384, HAL_CURVE_P384, self.sign_verify_data)
 
+    @unittest.skipUnless(ecdsa_loaded, "Requires Python ECDSA package")
     def test_load_sign_verify_ecdsa_p521_sha512_data(self):
         self.load_sign_verify_ecdsa(HAL_DIGEST_ALGORITHM_SHA512, HAL_CURVE_P521, self.sign_verify_data)
 
+    @unittest.skipUnless(pycrypto_loaded, "Requires Python Crypto package")
     def test_load_sign_verify_rsa_1024_sha256_remote_remote(self):
         self.load_sign_verify_rsa(HAL_DIGEST_ALGORITHM_SHA256, 1024, self.sign_verify_remote_remote)
 
+    @unittest.skipUnless(pycrypto_loaded, "Requires Python Crypto package")
     def test_load_sign_verify_rsa_2048_sha384_remote_remote(self):
         self.load_sign_verify_rsa(HAL_DIGEST_ALGORITHM_SHA384, 2048, self.sign_verify_remote_remote)
 
+    @unittest.skipUnless(pycrypto_loaded, "Requires Python Crypto package")
     def test_load_sign_verify_rsa_4096_sha512_remote_remote(self):
         self.load_sign_verify_rsa(HAL_DIGEST_ALGORITHM_SHA512, 4096, self.sign_verify_remote_remote)
 
+    @unittest.skipUnless(ecdsa_loaded, "Requires Python ECDSA package")
     def test_load_sign_verify_ecdsa_p256_sha256_remote_remote(self):
         self.load_sign_verify_ecdsa(HAL_DIGEST_ALGORITHM_SHA256, HAL_CURVE_P256, self.sign_verify_remote_remote)
 
+    @unittest.skipUnless(ecdsa_loaded, "Requires Python ECDSA package")
     def test_load_sign_verify_ecdsa_p384_sha384_remote_remote(self):
         self.load_sign_verify_ecdsa(HAL_DIGEST_ALGORITHM_SHA384, HAL_CURVE_P384, self.sign_verify_remote_remote)
 
+    @unittest.skipUnless(ecdsa_loaded, "Requires Python ECDSA package")
     def test_load_sign_verify_ecdsa_p521_sha512_remote_remote(self):
         self.load_sign_verify_ecdsa(HAL_DIGEST_ALGORITHM_SHA512, HAL_CURVE_P521, self.sign_verify_remote_remote)
 
+    @unittest.skipUnless(pycrypto_loaded, "Requires Python Crypto package")
     def test_load_sign_verify_rsa_1024_sha256_remote_local(self):
         self.load_sign_verify_rsa(HAL_DIGEST_ALGORITHM_SHA256, 1024, self.sign_verify_remote_local)
 
+    @unittest.skipUnless(pycrypto_loaded, "Requires Python Crypto package")
     def test_load_sign_verify_rsa_2048_sha384_remote_local(self):
         self.load_sign_verify_rsa(HAL_DIGEST_ALGORITHM_SHA384, 2048, self.sign_verify_remote_local)
 
+    @unittest.skipUnless(pycrypto_loaded, "Requires Python Crypto package")
     def test_load_sign_verify_rsa_4096_sha512_remote_local(self):
         self.load_sign_verify_rsa(HAL_DIGEST_ALGORITHM_SHA512, 4096, self.sign_verify_remote_local)
 
+    @unittest.skipUnless(ecdsa_loaded, "Requires Python ECDSA package")
     def test_load_sign_verify_ecdsa_p256_sha256_remote_local(self):
         self.load_sign_verify_ecdsa(HAL_DIGEST_ALGORITHM_SHA256, HAL_CURVE_P256, self.sign_verify_remote_local)
 
+    @unittest.skipUnless(ecdsa_loaded, "Requires Python ECDSA package")
     def test_load_sign_verify_ecdsa_p384_sha384_remote_local(self):
         self.load_sign_verify_ecdsa(HAL_DIGEST_ALGORITHM_SHA384, HAL_CURVE_P384, self.sign_verify_remote_local)
 
+    @unittest.skipUnless(ecdsa_loaded, "Requires Python ECDSA package")
     def test_load_sign_verify_ecdsa_p521_sha512_remote_local(self):
         self.load_sign_verify_ecdsa(HAL_DIGEST_ALGORITHM_SHA512, HAL_CURVE_P521, self.sign_verify_remote_local)
 
+    @unittest.skipUnless(pycrypto_loaded, "Requires Python Crypto package")
     def test_load_sign_verify_rsa_1024_sha256_local_remote(self):
         self.load_sign_verify_rsa(HAL_DIGEST_ALGORITHM_SHA256, 1024, self.sign_verify_local_remote)
 
+    @unittest.skipUnless(pycrypto_loaded, "Requires Python Crypto package")
     def test_load_sign_verify_rsa_2048_sha384_local_remote(self):
         self.load_sign_verify_rsa(HAL_DIGEST_ALGORITHM_SHA384, 2048, self.sign_verify_local_remote)
 
+    @unittest.skipUnless(pycrypto_loaded, "Requires Python Crypto package")
     def test_load_sign_verify_rsa_4096_sha512_local_remote(self):
         self.load_sign_verify_rsa(HAL_DIGEST_ALGORITHM_SHA512, 4096, self.sign_verify_local_remote)
 
+    @unittest.skipUnless(ecdsa_loaded, "Requires Python ECDSA package")
     def test_load_sign_verify_ecdsa_p256_sha256_local_remote(self):
         self.load_sign_verify_ecdsa(HAL_DIGEST_ALGORITHM_SHA256, HAL_CURVE_P256, self.sign_verify_local_remote)
 
+    @unittest.skipUnless(ecdsa_loaded, "Requires Python ECDSA package")
     def test_load_sign_verify_ecdsa_p384_sha384_local_remote(self):
         self.load_sign_verify_ecdsa(HAL_DIGEST_ALGORITHM_SHA384, HAL_CURVE_P384, self.sign_verify_local_remote)
 
+    @unittest.skipUnless(ecdsa_loaded, "Requires Python ECDSA package")
     def test_load_sign_verify_ecdsa_p521_sha512_local_remote(self):
         self.load_sign_verify_ecdsa(HAL_DIGEST_ALGORITHM_SHA512, HAL_CURVE_P521, self.sign_verify_local_remote)
 
+    @unittest.skipUnless(pycrypto_loaded, "Requires Python Crypto package")
     def test_load_sign_verify_rsa_1024_sha256_local_local(self):
         self.load_sign_verify_rsa(HAL_DIGEST_ALGORITHM_SHA256, 1024, self.sign_verify_local_local)
 
+    @unittest.skipUnless(pycrypto_loaded, "Requires Python Crypto package")
     def test_load_sign_verify_rsa_2048_sha384_local_local(self):
         self.load_sign_verify_rsa(HAL_DIGEST_ALGORITHM_SHA384, 2048, self.sign_verify_local_local)
 
+    @unittest.skipUnless(pycrypto_loaded, "Requires Python Crypto package")
     def test_load_sign_verify_rsa_4096_sha512_local_local(self):
         self.load_sign_verify_rsa(HAL_DIGEST_ALGORITHM_SHA512, 4096, self.sign_verify_local_local)
 
+    @unittest.skipUnless(ecdsa_loaded, "Requires Python ECDSA package")
     def test_load_sign_verify_ecdsa_p256_sha256_local_local(self):
         self.load_sign_verify_ecdsa(HAL_DIGEST_ALGORITHM_SHA256, HAL_CURVE_P256, self.sign_verify_local_local)
 
+    @unittest.skipUnless(ecdsa_loaded, "Requires Python ECDSA package")
     def test_load_sign_verify_ecdsa_p384_sha384_local_local(self):
         self.load_sign_verify_ecdsa(HAL_DIGEST_ALGORITHM_SHA384, HAL_CURVE_P384, self.sign_verify_local_local)
 
+    @unittest.skipUnless(ecdsa_loaded, "Requires Python ECDSA package")
     def test_load_sign_verify_ecdsa_p521_sha512_local_local(self):
         self.load_sign_verify_ecdsa(HAL_DIGEST_ALGORITHM_SHA512, HAL_CURVE_P521, self.sign_verify_local_local)
 
@@ -490,7 +530,7 @@ class TestPKeyECDSAInterop(TestCaseLoggedIn):
         self.load_sign_verify_ecdsa(HAL_DIGEST_ALGORITHM_SHA512, SHA512, HAL_CURVE_P521)
 
 
-class TestPKeyList(TestCaseLoggedIn):
+class TestPKeyMatch(TestCaseLoggedIn):
     """
     Tests involving PKey list and match functions.
     """
@@ -590,6 +630,7 @@ class TestPKeyAttribute(TestCaseLoggedIn):
         self.load_and_fill(HAL_KEY_FLAG_TOKEN, n_attrs = 4, n_fill = 512) # [16, 1024]
 
 
+ at unittest.skipUnless(ecdsa_loaded, "Requires Python ECDSA package")
 class TestPKeyAttributeP11(TestCaseLoggedIn):
     """
     Attribute creation/lookup/deletion tests based on a PKCS #11 trace.
@@ -654,6 +695,7 @@ class TestPKeyAttributeP11(TestCaseLoggedIn):
             0x180 : "\x06\x08\x2a\x86\x48\xce\x3d\x03\x01\x07" })
 
 
+ at unittest.skipUnless(ecdsa_loaded, "Requires Python ECDSA package")
 class TestPKeyAttributeWriteSpeedToken(TestCaseLoggedIn):
     """
     Attribute speed tests.
@@ -678,6 +720,7 @@ class TestPKeyAttributeWriteSpeedToken(TestCaseLoggedIn):
     def test_set_12_attributes(self):
         self.set_attributes(12)
 
+ at unittest.skipUnless(ecdsa_loaded, "Requires Python ECDSA package")
 class TestPKeyAttributeWriteSpeedVolatile(TestCaseLoggedIn):
     """
     Attribute speed tests.
@@ -702,6 +745,7 @@ class TestPKeyAttributeWriteSpeedVolatile(TestCaseLoggedIn):
     def test_set_12_attributes(self):
         self.set_attributes(12)
 
+ at unittest.skipUnless(ecdsa_loaded, "Requires Python ECDSA package")
 class TestPKeyAttributeReadSpeedToken(TestCaseLoggedIn):
     """
     Attribute speed tests.
@@ -733,6 +777,7 @@ class TestPKeyAttributeReadSpeedToken(TestCaseLoggedIn):
     def test_get_12_attributes(self):
         self.get_attributes(12)
 
+ at unittest.skipUnless(ecdsa_loaded, "Requires Python ECDSA package")
 class TestPKeyAttributeReadSpeedVolatile(TestCaseLoggedIn):
     """
     Attribute speed tests.



More information about the Commits mailing list