mirror of
https://github.com/saymrwulf/cryptography.git
synced 2026-05-14 20:37:55 +00:00
add test marks for various backend functionality
This commit is contained in:
parent
2a710fd725
commit
7e4bc6d877
4 changed files with 73 additions and 0 deletions
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
22
tests/skip_check.py
Normal 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
31
tests/test_skip_check.py
Normal 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"
|
||||
Loading…
Reference in a new issue