[9.18] chg: dev: Use underscore for system test names

Change the convention for system test directory names to always use an
underscore rather than a hyphen. Names using underscore are valid python
package names and can be used with standard `import` facilities in
python, which allows easier code reuse.

Backport of MR !11710

Merge branch 'backport-nicki/system-test-dir-underscore-names-9.18' into 'bind-9.18'

See merge request isc-projects/bind9!11712
This commit is contained in:
Nicki Křížek 2026-03-18 15:52:25 +01:00
commit 2dd5b2b90e
158 changed files with 20 additions and 21 deletions

View file

@ -24,10 +24,9 @@ parallel.mk
/stop.sh
/ifconfig.sh
# Ignore file names with underscore in their name except python or shell files.
# Ignore file names with a hyphen in their name except C files.
# This is done to ignore the temporary directories and symlinks created by the
# pytest runner, which contain underscore in their file names.
/*_*
!/*_*.py
!/*_*.sh
!/_common
/*-*
!/*-*.c
!/custom-test-driver

View file

@ -88,13 +88,13 @@ tkey_keydelete_LDADD = \
TESTS = \
rpz \
rpzrecurse \
serve-stale \
serve_stale \
timeouts \
upforwd \
acl \
additional \
addzone \
allow-query \
allow_query \
auth \
autosign \
builtin \
@ -117,7 +117,7 @@ TESTS = \
dlzexternal \
dns64 \
dnssec \
dnssec-malformed-dnskey \
dnssec_malformed_dnskey \
dnstap \
doth \
dsdigest \
@ -128,14 +128,14 @@ TESTS = \
ednscompliance \
emptyzones \
enginepkcs11 \
filter-aaaa \
filter_aaaa \
fetchlimit \
formerr \
forward \
geoip2 \
glue \
idna \
include-multiplecfg \
include_multiplecfg \
inline \
integrity \
ixfr \
@ -189,7 +189,7 @@ TESTS = \
tcp \
tkey \
tools \
transport-acl \
transport_acl \
tsig \
tsiggss \
ttl \
@ -231,4 +231,4 @@ LOG_COMPILER = $(srcdir)/run.sh
test-local: check
clean-local::
-find -L . -mindepth 1 -maxdepth 1 -type d -name "*_*" -and -not -name "_common" -exec rm -rf {} \;
-find -L . -mindepth 1 -maxdepth 1 -type d -name "*-*" -exec rm -rf {} \;

View file

@ -53,7 +53,7 @@ PRIORITY_TESTS = [
PRIORITY_TESTS_RE = Re("|".join(PRIORITY_TESTS))
SYSTEM_TEST_DIR_GIT_PATH = "bin/tests/system"
SYSTEM_TEST_NAME_RE = Re(f"{SYSTEM_TEST_DIR_GIT_PATH}" + r"/([^/]+)")
SYMLINK_REPLACEMENT_RE = Re(r"/tests(_.*)\.py")
SYMLINK_REPLACEMENT_RE = Re(r"/tests_(.*)\.py")
# ---------------------- Module initialization ---------------------------
@ -132,14 +132,14 @@ def pytest_ignore_collect(collection_path):
# ignore these during test collection phase. Otherwise, test artifacts
# from previous runs could mess with the runner. Also ignore the
# convenience symlinks to those test directories. In both of those
# cases, the system test name (directory) contains an underscore, which
# cases, the system test name (directory) contains a hyphen, which
# is otherwise and invalid character for a system test name.
match = SYSTEM_TEST_NAME_RE.search(str(collection_path))
if match is None:
isctest.log.warning("unexpected test path: %s (ignored)", collection_path)
return True
system_test_name = match.groups()[0]
return "_" in system_test_name
return "-" in system_test_name
def pytest_collection_modifyitems(items):
@ -449,13 +449,13 @@ def system_test_dir(request, env, system_test_name, expected_artifacts):
f"{env['TOP_BUILDDIR']}/{SYSTEM_TEST_DIR_GIT_PATH}"
).resolve()
testdir = Path(
tempfile.mkdtemp(prefix=f"{system_test_name}_tmp_", dir=system_test_root)
tempfile.mkdtemp(prefix=f"{system_test_name}-tmp-", dir=system_test_root)
)
shutil.rmtree(testdir)
shutil.copytree(system_test_root / system_test_name, testdir)
# Create a convenience symlink with a stable and predictable name
module_name = SYMLINK_REPLACEMENT_RE.sub(r"\1", str(request.node.path))
module_name = SYMLINK_REPLACEMENT_RE.sub(r"-\1", str(request.node.path))
symlink_dst = system_test_root / module_name
symlink_dst.unlink(missing_ok=True)
symlink_dst.symlink_to(os.path.relpath(testdir, start=system_test_root))

Some files were not shown because too many files have changed in this diff Show more