mirror of
https://github.com/isc-projects/bind9.git
synced 2026-05-27 12:13:20 -04:00
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.
The temporary directories for test execution and their convenience
symlinks have been switched to using hyphens rather than underscores to
keep the pytest collection, filtering and .gitignore working as
expected.
(cherry picked from commit 9f4c1d1993)
This commit is contained in:
parent
0ac37a399a
commit
ba2958f412
4 changed files with 19 additions and 20 deletions
9
bin/tests/system/.gitignore
vendored
9
bin/tests/system/.gitignore
vendored
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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 {} \;
|
||||
|
|
|
|||
|
|
@ -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))
|
||||
|
|
|
|||
|
|
@ -494,10 +494,10 @@ for testname in testnames:
|
|||
or testname == "isctest"
|
||||
):
|
||||
continue
|
||||
if "_" in testname:
|
||||
if "-" in testname:
|
||||
fail(
|
||||
f"System test directory `{testname}` may not contain an underscore, "
|
||||
"use hyphen instead."
|
||||
f"System test directory `{testname}` may not contain a hyphen, "
|
||||
"use underscore instead."
|
||||
)
|
||||
if not glob.glob(f"{dirpath}/**/tests_*.py", recursive=True):
|
||||
fail(
|
||||
|
|
|
|||
Loading…
Reference in a new issue