1import logging 2import os 3 4import pytest 5import sys 6 7from pyhttpd.env import HttpdTestEnv 8 9sys.path.append(os.path.join(os.path.dirname(__file__), '../..')) 10 11 12def pytest_report_header(config, startdir): 13 env = HttpdTestEnv() 14 return f"core [apache: {env.get_httpd_version()}, mpm: {env.mpm_module}, {env.prefix}]" 15 16 17@pytest.fixture(scope="package") 18def env(pytestconfig) -> HttpdTestEnv: 19 level = logging.INFO 20 console = logging.StreamHandler() 21 console.setLevel(level) 22 console.setFormatter(logging.Formatter('%(levelname)s: %(message)s')) 23 logging.getLogger('').addHandler(console) 24 logging.getLogger('').setLevel(level=level) 25 env = HttpdTestEnv(pytestconfig=pytestconfig) 26 env.setup_httpd() 27 env.apache_access_log_clear() 28 env.httpd_error_log.clear_log() 29 return env 30 31 32@pytest.fixture(autouse=True, scope="package") 33def _session_scope(env): 34 env.httpd_error_log.set_ignored_lognos([ 35 'AH10244', # core: invalid URI path 36 'AH01264', # mod_cgid script not found 37 ]) 38 yield 39 assert env.apache_stop() == 0 40 errors, warnings = env.httpd_error_log.get_missed() 41 assert (len(errors), len(warnings)) == (0, 0),\ 42 f"apache logged {len(errors)} errors and {len(warnings)} warnings: \n"\ 43 "{0}\n{1}\n".format("\n".join(errors), "\n".join(warnings)) 44 45