From 7aab8b4ae4f5ab1710a985551c4105d608f5b852 Mon Sep 17 00:00:00 2001 From: Alex Gaynor Date: Thu, 23 Oct 2014 11:01:25 -0700 Subject: Change how we represented that a test requires a backend. This way is more extensible and requires less maintaince --- tests/conftest.py | 35 +++++++++++++---------------------- 1 file changed, 13 insertions(+), 22 deletions(-) (limited to 'tests/conftest.py') diff --git a/tests/conftest.py b/tests/conftest.py index b7981c9d..7f8e71d5 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -16,13 +16,8 @@ from __future__ import absolute_import, division, print_function import pytest from cryptography.hazmat.backends import _available_backends -from cryptography.hazmat.backends.interfaces import ( - CMACBackend, CipherBackend, DSABackend, EllipticCurveBackend, HMACBackend, - HashBackend, PBKDF2HMACBackend, PEMSerializationBackend, - PKCS8SerializationBackend, RSABackend, - TraditionalOpenSSLSerializationBackend -) -from .utils import check_backend_support, check_for_iface, select_backends + +from .utils import check_backend_support, select_backends def pytest_generate_tests(metafunc): @@ -35,21 +30,17 @@ def pytest_generate_tests(metafunc): @pytest.mark.trylast def pytest_runtest_setup(item): - check_for_iface("hmac", HMACBackend, item) - check_for_iface("cipher", CipherBackend, item) - check_for_iface("cmac", CMACBackend, item) - check_for_iface("hash", HashBackend, item) - check_for_iface("pbkdf2hmac", PBKDF2HMACBackend, item) - check_for_iface("dsa", DSABackend, item) - check_for_iface("rsa", RSABackend, item) - check_for_iface( - "traditional_openssl_serialization", - TraditionalOpenSSLSerializationBackend, - item - ) - check_for_iface("pkcs8_serialization", PKCS8SerializationBackend, item) - check_for_iface("elliptic", EllipticCurveBackend, item) - check_for_iface("pem_serialization", PEMSerializationBackend, item) + required = item.keywords.get("requires_backend_interface") + if ( + required is not None and + "backend" in item.funcargs and + not isinstance(item.funcargs["backend"], required.kwargs['interface']) + ): + pytest.skip("{0} backend does not support {1}".format( + item.funcargs["backend"], + required.kwargs['interface'].__name__ + )) + check_backend_support(item) -- cgit v1.2.3 From 055631d7f7ab10ee1641a604f178d4d865e61221 Mon Sep 17 00:00:00 2001 From: Alex Gaynor Date: Thu, 23 Oct 2014 11:25:51 -0700 Subject: Fix to handle multiple instances of @pytest.mark_requires_backend_interface --- tests/conftest.py | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) (limited to 'tests/conftest.py') diff --git a/tests/conftest.py b/tests/conftest.py index 7f8e71d5..31cdb634 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -33,13 +33,16 @@ def pytest_runtest_setup(item): required = item.keywords.get("requires_backend_interface") if ( required is not None and - "backend" in item.funcargs and - not isinstance(item.funcargs["backend"], required.kwargs['interface']) + "backend" in item.funcargs ): - pytest.skip("{0} backend does not support {1}".format( - item.funcargs["backend"], - required.kwargs['interface'].__name__ - )) + required_interfaces = tuple( + kwargs["interface"] for args, kwargs in required._arglist + ) + if not isinstance(item.funcargs["backend"], required_interfaces): + pytest.skip("{0} backend does not support {1}".format( + item.funcargs["backend"], + ", ".join(iface.__name__ for iface in required_interfaces) + )) check_backend_support(item) -- cgit v1.2.3 From 276ba5a1bc161954271e40c24ad44c83719b10e3 Mon Sep 17 00:00:00 2001 From: Alex Gaynor Date: Thu, 23 Oct 2014 11:31:10 -0700 Subject: flatten line --- tests/conftest.py | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) (limited to 'tests/conftest.py') diff --git a/tests/conftest.py b/tests/conftest.py index 31cdb634..41cc227f 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -31,10 +31,7 @@ def pytest_generate_tests(metafunc): @pytest.mark.trylast def pytest_runtest_setup(item): required = item.keywords.get("requires_backend_interface") - if ( - required is not None and - "backend" in item.funcargs - ): + if required is not None and "backend" in item.funcargs: required_interfaces = tuple( kwargs["interface"] for args, kwargs in required._arglist ) -- cgit v1.2.3 From 2607ab5b932395de6554f1f4a779481cd4b87619 Mon Sep 17 00:00:00 2001 From: Alex Gaynor Date: Thu, 23 Oct 2014 11:34:10 -0700 Subject: public API only --- tests/conftest.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'tests/conftest.py') diff --git a/tests/conftest.py b/tests/conftest.py index 41cc227f..20926024 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -33,7 +33,7 @@ def pytest_runtest_setup(item): required = item.keywords.get("requires_backend_interface") if required is not None and "backend" in item.funcargs: required_interfaces = tuple( - kwargs["interface"] for args, kwargs in required._arglist + mark.kwargs["interface"] for mark in required ) if not isinstance(item.funcargs["backend"], required_interfaces): pytest.skip("{0} backend does not support {1}".format( -- cgit v1.2.3