Files
nginx-unit/test/unit/check/discover_available.py
Andrei Zeliankou 99da2f3c8e Tests: check for the AddressSanitizer flag during discovery
This flag is necessary to either run or skip certain tests that have
specific behavior depending on whether AddressSanitizer is enabled.

For instance, some tests may fail only when the binary is compiled
with AddressSanitizer.
2024-02-21 17:40:25 +00:00

50 lines
1.7 KiB
Python

import subprocess
import sys
from unit.check.chroot import check_chroot
from unit.check.go import check_go
from unit.check.isolation import check_isolation
from unit.check.njs import check_njs
from unit.check.node import check_node
from unit.check.regex import check_regex
from unit.check.tls import check_openssl
from unit.check.unix_abstract import check_unix_abstract
from unit.log import Log
from unit.option import option
def discover_available(unit):
output_version = subprocess.check_output(
[unit['unitd'], '--version'], stderr=subprocess.STDOUT
).decode()
option.configure_flag['asan'] = '-fsanitize=address' in output_version
# wait for controller start
if Log.wait_for_record(r'controller started') is None:
Log.print_log()
sys.exit("controller didn't start")
# discover modules from log file
for module in Log.findall(r'module: ([a-zA-Z]+) (.*) ".*"$'):
versions = option.available['modules'].setdefault(module[0], [])
if module[1] not in versions:
versions.append(module[1])
# discover modules using check
option.available['modules']['go'] = check_go()
option.available['modules']['njs'] = check_njs(output_version)
option.available['modules']['node'] = check_node()
option.available['modules']['openssl'] = check_openssl(output_version)
option.available['modules']['regex'] = check_regex(output_version)
# Discover features using check. Features should be discovered after
# modules since some features can require modules.
option.available['features']['chroot'] = check_chroot()
option.available['features']['isolation'] = check_isolation()
option.available['features']['unix_abstract'] = check_unix_abstract()