| import logging |
| import os |
| import pytest |
| import sys |
| |
| from .env import SSLTestEnv |
| |
| sys.path.append(os.path.join(os.path.dirname(__file__), '../..')) |
| |
| |
| def pytest_report_header(config, start_path): |
| env = SSLTestEnv() |
| return f"mod_ssl [apache: {env.get_httpd_version()}, mpm: {env.mpm_module}, {env.prefix}]" |
| |
| |
| @pytest.fixture(scope="package") |
| def env(pytestconfig) -> SSLTestEnv: |
| level = logging.INFO |
| console = logging.StreamHandler() |
| console.setLevel(level) |
| console.setFormatter(logging.Formatter('%(levelname)s: %(message)s')) |
| logging.getLogger('').addHandler(console) |
| logging.getLogger('').setLevel(level=level) |
| env = SSLTestEnv(pytestconfig=pytestconfig) |
| # setup_httpd() raises outright when a required module is not built, |
| # which is neither a skip nor a useful failure. mod_ssl being absent is |
| # a missing dependency, so report it as one before we get there. |
| env.require(env.has_mod_ssl(), "no mod_ssl available", dep="mod_ssl", |
| detected=f"no mod_ssl.so in {env.libexec_dir}") |
| env.setup_httpd() |
| env.apache_access_log_clear() |
| env.httpd_error_log.clear_log() |
| return env |
| |
| |
| @pytest.fixture(autouse=True, scope="package") |
| def require_openssl(env): |
| env.require(env.has_tool("openssl"), "openssl not installed", |
| dep="openssl", detected="no openssl on $PATH") |
| |
| |
| @pytest.fixture(autouse=True, scope="package") |
| def _stop_package_scope(env): |
| yield |
| assert env.apache_stop() == 0 |