aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPaul Kehrer <paul.l.kehrer@gmail.com>2013-12-24 22:23:53 -0600
committerPaul Kehrer <paul.l.kehrer@gmail.com>2013-12-24 22:23:53 -0600
commit7e4bc6d87741e8469ffcd00dc8004875ec9a95fe (patch)
tree1f9e0b9541737e2a9695e0b89495d64e52dc4c0b
parent2a710fd725c1012170a101db4d7511d250cb31f0 (diff)
downloadcryptography-7e4bc6d87741e8469ffcd00dc8004875ec9a95fe.tar.gz
cryptography-7e4bc6d87741e8469ffcd00dc8004875ec9a95fe.tar.bz2
cryptography-7e4bc6d87741e8469ffcd00dc8004875ec9a95fe.zip
add test marks for various backend functionality
-rw-r--r--pytest.ini4
-rw-r--r--tests/conftest.py16
-rw-r--r--tests/skip_check.py22
-rw-r--r--tests/test_skip_check.py31
4 files changed, 73 insertions, 0 deletions
diff --git a/pytest.ini b/pytest.ini
index 723735ac..1aeb23fc 100644
--- a/pytest.ini
+++ b/pytest.ini
@@ -1,2 +1,6 @@
[pytest]
addopts = -r s
+markers =
+ hmac: this test requires a backend providing HMACBackend
+ cipher: this test requires a backend providing CipherBackend
+ hash: this test requires a backend providing HashBackend
diff --git a/tests/conftest.py b/tests/conftest.py
index 71662802..91ba988f 100644
--- a/tests/conftest.py
+++ b/tests/conftest.py
@@ -1,5 +1,21 @@
+import pytest
+
+from cryptography.hazmat.backends.interfaces import (
+ HMACBackend, CipherBackend, HashBackend
+)
+
+from .skip_check import skip_check
+
+
def pytest_generate_tests(metafunc):
from cryptography.hazmat.backends import _ALL_BACKENDS
if "backend" in metafunc.fixturenames:
metafunc.parametrize("backend", _ALL_BACKENDS)
+
+
+@pytest.mark.trylast
+def pytest_runtest_setup(item):
+ skip_check('hmac', HMACBackend, item)
+ skip_check('cipher', CipherBackend, item)
+ skip_check('hash', HashBackend, item)
diff --git a/tests/skip_check.py b/tests/skip_check.py
new file mode 100644
index 00000000..4d454d73
--- /dev/null
+++ b/tests/skip_check.py
@@ -0,0 +1,22 @@
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+# implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+from __future__ import absolute_import, division, print_function
+
+import pytest
+
+
+def skip_check(name, iface, item):
+ if name in item.keywords and item.funcargs.get('backend') is not None:
+ if not isinstance(item.funcargs['backend'], iface):
+ pytest.skip("Backend does not support {}".format(name))
diff --git a/tests/test_skip_check.py b/tests/test_skip_check.py
new file mode 100644
index 00000000..3b303aca
--- /dev/null
+++ b/tests/test_skip_check.py
@@ -0,0 +1,31 @@
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+# implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+from __future__ import absolute_import, division, print_function
+
+import pretend
+
+import pytest
+
+from .skip_check import skip_check
+
+
+class FakeInterface(object):
+ pass
+
+
+def test_skip_check():
+ item = pretend.stub(keywords=["fake_name"], funcargs={"backend": True})
+ with pytest.raises(pytest.skip.Exception) as exc_info:
+ skip_check("fake_name", FakeInterface, item)
+ assert exc_info.value.args[0] == "Backend does not support fake_name"