mirror of
https://github.com/saymrwulf/cryptography.git
synced 2026-05-14 20:37:55 +00:00
68 lines
1.8 KiB
Python
68 lines
1.8 KiB
Python
# This file is dual licensed under the terms of the Apache License, Version
|
|
# 2.0, and the BSD License. See the LICENSE file in the root of this repository
|
|
# for complete details.
|
|
|
|
import contextlib
|
|
|
|
import pytest
|
|
|
|
from cryptography.hazmat.backends.openssl import backend as openssl_backend
|
|
|
|
from .utils import check_backend_support
|
|
|
|
|
|
def pytest_configure(config):
|
|
if config.getoption("--enable-fips"):
|
|
openssl_backend._enable_fips()
|
|
|
|
|
|
def pytest_report_header(config):
|
|
return "\n".join(
|
|
[
|
|
f"OpenSSL: {openssl_backend.openssl_version_text()}",
|
|
f"FIPS Enabled: {openssl_backend._fips_enabled}",
|
|
]
|
|
)
|
|
|
|
|
|
def pytest_addoption(parser):
|
|
parser.addoption("--wycheproof-root", default=None)
|
|
parser.addoption("--x509-limbo-root", default=None)
|
|
parser.addoption("--enable-fips", default=False)
|
|
|
|
|
|
def pytest_runtest_setup(item):
|
|
if openssl_backend._fips_enabled:
|
|
for marker in item.iter_markers(name="skip_fips"):
|
|
pytest.skip(marker.kwargs["reason"])
|
|
|
|
|
|
@pytest.fixture(autouse=True)
|
|
def backend(request):
|
|
check_backend_support(openssl_backend, request)
|
|
|
|
# Ensure the error stack is clear before the test
|
|
errors = openssl_backend._consume_errors()
|
|
assert not errors
|
|
yield openssl_backend
|
|
# Ensure the error stack is clear after the test
|
|
errors = openssl_backend._consume_errors()
|
|
assert not errors
|
|
|
|
|
|
@pytest.fixture()
|
|
def subtests():
|
|
# This is a miniature version of the pytest-subtests package, but
|
|
# optimized for lower overhead.
|
|
#
|
|
# When tests are skipped, these are not logged in the final pytest output.
|
|
yield SubTests()
|
|
|
|
|
|
class SubTests:
|
|
@contextlib.contextmanager
|
|
def test(self):
|
|
try:
|
|
yield
|
|
except pytest.skip.Exception:
|
|
pass
|