mirror of
https://github.com/apache/httpd.git
synced 2026-10-23 22:49:01 +03:00
Allow the --httpd --conf parameter in unix too.
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1939326 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
@@ -36,7 +36,7 @@ def pytest_ignore_collect(collection_path, config):
|
||||
return True
|
||||
|
||||
def pytest_report_header(config, start_path):
|
||||
env = HttpdTestEnv()
|
||||
env = HttpdTestEnv(pytestconfig=config)
|
||||
return f"[apache httpd: {env.get_httpd_version()}, mpm: {env.mpm_module}, {env.prefix}]"
|
||||
|
||||
def pytest_addoption(parser):
|
||||
@@ -152,9 +152,9 @@ test_src_dir = {test_dir}
|
||||
|
||||
|
||||
def pytest_configure(config):
|
||||
httpd_opt = config.getoption("--httpd", default=None)
|
||||
if httpd_opt and sys.platform == "win32":
|
||||
_generate_config_ini(config)
|
||||
# --httpd/--conf overrides are now applied in memory by
|
||||
# HttpdTestEnv._apply_cli_overrides(); config.ini is never rewritten.
|
||||
pass
|
||||
|
||||
|
||||
def pytest_collection_modifyitems(config, items):
|
||||
|
||||
@@ -9,7 +9,7 @@ sys.path.append(os.path.join(os.path.dirname(__file__), '../..'))
|
||||
|
||||
|
||||
def pytest_report_header(config, start_path):
|
||||
env = SSLTestEnv()
|
||||
env = SSLTestEnv(pytestconfig=config)
|
||||
return f"mod_ssl [apache: {env.get_httpd_version()}, mpm: {env.mpm_module}, {env.prefix}]"
|
||||
|
||||
|
||||
|
||||
@@ -450,6 +450,8 @@ class HttpdTestEnv:
|
||||
self._apachectl_stderr = None
|
||||
self._httpd_proc = None
|
||||
|
||||
self._apply_cli_overrides(pytestconfig)
|
||||
|
||||
self._dso_modules = self.config.get('httpd', 'dso_modules').split(' ')
|
||||
self._mpm_modules = self.config.get('httpd', 'mpm_modules').split(' ')
|
||||
self._mpm_module = f"mpm_{os.environ['MPM']}" if 'MPM' in os.environ else 'mpm_winnt' if self.isWindows else 'mpm_event'
|
||||
@@ -488,6 +490,62 @@ class HttpdTestEnv:
|
||||
self._nghttp_version = None
|
||||
self._current_test = None
|
||||
|
||||
def _apply_cli_overrides(self, pytestconfig):
|
||||
"""Override config.ini values with --httpd / --conf CLI options.
|
||||
|
||||
config.ini is generated by the build system from config.ini.in and
|
||||
is never rewritten. When --httpd or --conf are passed on the
|
||||
command line the corresponding variables are overridden in memory.
|
||||
"""
|
||||
if pytestconfig is None:
|
||||
return
|
||||
httpd_path = pytestconfig.getoption("--httpd", default=None)
|
||||
conf_path = pytestconfig.getoption("--conf", default=None)
|
||||
if httpd_path:
|
||||
httpd_path = os.path.abspath(httpd_path)
|
||||
prefix = os.path.dirname(os.path.dirname(httpd_path))
|
||||
self._bin_dir = os.path.dirname(httpd_path)
|
||||
self._prefix = prefix
|
||||
self._libexec_dir = os.path.join(prefix, "modules")
|
||||
HttpdTestEnv.LIBEXEC_DIR = self._libexec_dir
|
||||
if self.isWindows:
|
||||
self._apachectl = httpd_path
|
||||
else:
|
||||
ctl = os.path.join(self._bin_dir, "apachectl")
|
||||
self._apachectl = ctl if os.path.isfile(ctl) else httpd_path
|
||||
self._apxs = os.path.join(self._bin_dir, "apxs")
|
||||
try:
|
||||
p = subprocess.run([httpd_path, "-v"],
|
||||
capture_output=True, text=True)
|
||||
m = re.search(r"Apache/(\S+)", p.stdout)
|
||||
if m:
|
||||
self._httpd_ver = m.group(1)
|
||||
except Exception:
|
||||
pass
|
||||
if conf_path:
|
||||
conf_path = os.path.abspath(conf_path)
|
||||
dso = []
|
||||
mpm = []
|
||||
try:
|
||||
with open(conf_path) as f:
|
||||
for line in f:
|
||||
line = line.strip()
|
||||
if line.startswith("#"):
|
||||
continue
|
||||
m = re.match(r"LoadModule\s+(\S+)_module", line)
|
||||
if m:
|
||||
name = m.group(1)
|
||||
if name.startswith("mpm_"):
|
||||
mpm.append(name)
|
||||
else:
|
||||
dso.append(name)
|
||||
except Exception:
|
||||
pass
|
||||
if dso:
|
||||
self.config.set('httpd', 'dso_modules', ' '.join(dso))
|
||||
if mpm:
|
||||
self.config.set('httpd', 'mpm_modules', ' '.join(mpm))
|
||||
|
||||
def add_httpd_conf(self, lines: List[str]):
|
||||
self._httpd_base_conf.extend(lines)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user