add test marks for various backend functionality

This commit is contained in:
Paul Kehrer 2013-12-24 22:23:53 -06:00
parent 2a710fd725
commit 7e4bc6d877
4 changed files with 73 additions and 0 deletions

View file

@ -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

View file

@ -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)

22
tests/skip_check.py Normal file
View file

@ -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))

31
tests/test_skip_check.py Normal file
View file

@ -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"