Add basic tests for _make_requires
diff --git a/tests/test_ssl.py b/tests/test_ssl.py
index ab316fc..7b69902 100644
--- a/tests/test_ssl.py
+++ b/tests/test_ssl.py
@@ -55,6 +55,7 @@
Error, SysCallError, WantReadError, WantWriteError, ZeroReturnError)
from OpenSSL.SSL import (
Context, ContextType, Session, Connection, ConnectionType, SSLeay_version)
+from OpenSSL.SSL import _make_requires
from OpenSSL._util import lib as _lib
@@ -3855,5 +3856,43 @@
self.assertTrue(isinstance(const, int))
+class TestRequires(TestCase):
+ """
+ Tests for the decorator factory used to conditionally raise
+ NotImplementedError when older OpenSSL's are used.
+ """
+ def test_available(self):
+ """
+ When the OpenSSL functionality is available the decorated functions
+ work appropriately.
+ """
+ feature_guard = _make_requires(True, "Error text")
+ results = []
+
+ @feature_guard
+ def inner():
+ results.append(True)
+ return True
+
+ self.assertTrue(inner())
+ self.assertEqual(results, [True])
+
+ def test_unavailable(self):
+ """
+ When the OpenSSL functionality is not available the decorated function
+ does not execute and NotImplementedError is raised.
+ """
+ feature_guard = _make_requires(False, "Error text")
+ results = []
+
+ @feature_guard
+ def inner():
+ results.append(True)
+ return True
+
+ self.assertRaises(NotImplementedError, inner)
+ self.assertFalse(results)
+
+
if __name__ == '__main__':
main()