blob: 83c472b13b8b31dc9dd4498d4ba7e983e56e63b4 [file]
"""Fixtures shared by every test package below modules/.
They act on the package-scoped ``env`` that each package's conftest defines,
so they live here rather than in the root conftest: tests outside modules/
(pytest_suite) have no ``env``.
"""
import socket
import sys
import warnings
import pytest
def _has_ipv6():
try:
s = socket.socket(socket.AF_INET6, socket.SOCK_STREAM)
s.bind(('::1', 0))
s.close()
return True
except (socket.error, OSError):
return False
@pytest.fixture(autouse=True, scope="function")
def _function_scope(env, request):
env.set_current_test_name(request.node.name)
yield
env.check_error_log()
archive_dir = request.config.getoption("--archive")
if archive_dir:
fspath = str(request.fspath)
if 'modules/' in fspath:
package_name = fspath.split('modules/')[1].split('/')[0]
env.archive_test_conf(request.node.name, package_name, archive_dir)
env.set_current_test_name(None)
@pytest.fixture(autouse=True, scope="module")
def _module_scope(env):
yield
env.check_error_log()
@pytest.fixture(autouse=True, scope="package")
def _package_scope(env, request):
env.httpd_error_log.clear_ignored_matches()
env.httpd_error_log.clear_ignored_lognos()
if sys.platform == "win32":
env.httpd_error_log.add_ignored_lognos([
"AH00098",
"AH10373",
"AH00336",
"AH00337",
"AH00338",
"AH00341",
"AH02322",
])
if sys.platform == "win32" and _has_ipv6():
env.httpd_error_log.add_ignored_lognos(["AH00332"])
yield
assert env.apache_stop() == 0
env.check_error_log()
archive_dir = request.config.getoption("--archive")
if archive_dir == "":
warnings.warn("--archive option was empty, skipping archiving")
if archive_dir:
fspath = str(request.fspath)
if 'modules/' in fspath:
package_name = fspath.split('modules/')[1].split('/')[0]
env.archive_logs(package_name, archive_dir)