Merge branch '4262-make-check-pytest' into 'main'

Use pytest runner for make check

Closes #4262

See merge request isc-projects/bind9!8286
This commit is contained in:
Tom Krizek 2023-09-19 13:41:16 +00:00
commit 94856ade3c
28 changed files with 601 additions and 151 deletions

View file

@ -417,6 +417,14 @@ cross-version-config-tests:
reports:
junit: junit.xml
.system_test_make_check: &system_test_make_check_job
<<: *system_test_common
script:
- cd bin/tests/system
- make -j${TEST_PARALLEL_JOBS:-1} check
after_script:
- cat bin/tests/system/test-suite.log || true
.system_test_gcov: &system_test_gcov_job
<<: *system_test_common
artifacts:
@ -1323,6 +1331,7 @@ clang:openbsd:amd64:
system:clang:openbsd:amd64:
<<: *openbsd_amd64_image
<<: *system_test_job
<<: *system_test_make_check_job
<<: *api_schedules_triggers_web_triggering_rules
variables:
USER: gitlab-runner

View file

@ -13,6 +13,7 @@ named.run
/random.data
/*.log
/*.trs
/*.xml
/resolve
/legacy.run.sh
/run.log

View file

@ -24,6 +24,8 @@ LDADD += \
$(LIBDNS_LIBS)
if HAVE_PERL
if HAVE_PYTHON
if HAVE_PYTEST
noinst_PROGRAMS = \
feature-test \
@ -68,23 +70,14 @@ rpz_dnsrps_LDADD = \
$(LIBDNS_LIBS) \
$(DLOPEN_LIBS)
TESTS =
if HAVE_PERLMOD_TIME_HIRES
TESTS += serve-stale
endif HAVE_PERLMOD_TIME_HIRES
if HAVE_PERLMOD_NET_DNS
TESTS += \
rpzrecurse
endif HAVE_PERLMOD_NET_DNS
if HAVE_LIBNGHTTP2
TESTS += \
doth
endif
TESTS += \
# Longer running tests are listed (and executed) first to take the most
# advantage of parallel execution.
TESTS = \
rpz \
rpzrecurse \
serve-stale \
timeouts \
upforwd \
acl \
additional \
addzone \
@ -96,13 +89,21 @@ TESTS += \
case \
catz \
cds \
chain \
checkconf \
checkds \
checknames \
checkzone \
cookie \
database \
dialup \
digdelv \
dispatch \
dlzexternal \
dns64 \
dnssec \
dnstap \
doth \
dsdigest \
dyndb \
ecdsa \
@ -111,16 +112,20 @@ TESTS += \
emptyzones \
enginepkcs11 \
filter-aaaa \
fetchlimit \
formerr \
forward \
geoip2 \
glue \
idna \
include-multiplecfg \
inline \
integrity \
ixfr \
hooks \
host \
journal \
kasp \
keepalive \
keyfromlabel \
legacy \
@ -131,28 +136,40 @@ TESTS += \
metadata \
mirror \
mkeys \
multisigner \
names \
notify \
nsec3 \
nslookup \
nsupdate \
nzd2nzf \
padding \
pending \
pipelined \
qmin \
reclimit \
redirect \
resolver \
rndc \
rootkeysentinel \
rpz \
rpzextra \
rrchecker \
rrl \
rrsetorder \
rsabigexponent \
runtime \
sfcache \
shutdown \
smartsign \
sortlist \
spf \
staticstub \
statistics \
statschannel \
stress \
stub \
synthfromdnssec \
tcp \
tools \
transport-acl \
tsig \
@ -162,62 +179,21 @@ TESTS += \
verify \
views \
wildcard \
xfer \
xferquota \
zero \
zonechecks
if HAVE_LMDB
TESTS += nzd2nzf
endif # HAVE_LMDB
if HAVE_PERLMOD_NET_DNS
TESTS += \
fetchlimit \
ixfr \
nsupdate \
resolver \
statistics \
stress \
upforwd \
zero
if HAVE_DNSTAP
TESTS += dnstap
endif
if HAVE_PERLMOD_FILE_FETCH
TESTS += statschannel
endif HAVE_PERLMOD_FILE_FETCH
if HAVE_PERLMOD_DIGEST_HMAC
TESTS += xfer
endif HAVE_PERLMOD_DIGEST_HMAC
if HAVE_PERLMOD_NET_DNS_NAMESERVER
TESTS += reclimit
endif HAVE_PERLMOD_NET_DNS_NAMESERVER
endif HAVE_PERLMOD_NET_DNS
if HAVE_PYTHON
TESTS += kasp multisigner tcp pipelined
if HAVE_PYTEST
TESTS += checkds dispatch rpzextra shutdown timeouts
endif
if HAVE_PYMOD_DNS
TESTS += qmin cookie
if HAVE_PERLMOD_NET_DNS
TESTS += digdelv dnssec forward
if HAVE_PERLMOD_NET_DNS_NAMESERVER
TESTS += chain
endif HAVE_PERLMOD_NET_DNS_NAMESERVER
endif HAVE_PERLMOD_NET_DNS
endif HAVE_PYMOD_DNS
endif HAVE_PYTHON
else !HAVE_PYTEST
check:
echo pytest is not available, no tests were ran
exit 1
endif !HAVE_PYTEST
else !HAVE_PYTHON
check:
echo Python is not available, no tests were ran
exit 1
endif !HAVE_PYTHON
else !HAVE_PERL
check:
echo Perl is not available, no tests were ran
@ -232,10 +208,7 @@ LOG_DRIVER_V_1 = --verbose yes
LOG_DRIVER = $(srcdir)/custom-test-driver
AM_LOG_DRIVER_FLAGS = $(LOG_DRIVER_V)
LOG_COMPILER = $(builddir)/legacy.run.sh
AM_LOG_FLAGS = -r
$(TESTS): legacy.run.sh
LOG_COMPILER = $(srcdir)/run.sh
test-local: check

View file

@ -0,0 +1,34 @@
#!/bin/sh
# Copyright (C) Internet Systems Consortium, Inc. ("ISC")
#
# SPDX-License-Identifier: MPL-2.0
#
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, you can obtain one at https://mozilla.org/MPL/2.0/.
#
# See the COPYRIGHT file distributed with this work for additional
# information regarding copyright ownership.
. ../conf.sh
if ! ${PYTHON} -c 'import dns'
then
echo_i "python dns module is required"
exit 1
fi
if ! ${PERL} -MNet::DNS -e ''
then
echo_i "perl Net::DNS module is required"
exit 1
fi
if ! ${PERL} -MNet::DNS::Nameserver -e ''
then
echo_i "perl Net::DNS::Nameserver module is required"
exit 1
fi
exit 0

View file

@ -267,13 +267,21 @@ else:
@pytest.fixture(scope="session")
def modules():
"""Sorted list of all modules. Used to determine port distribution."""
"""
Sorted list of ALL modules.
The list includes even test modules that are not tested in the current
session. It is used to determine port distribution. Using a complete
list of all possible test modules allows independent concurrent pytest
invocations.
"""
mods = []
for dirpath, _dirs, files in os.walk(os.getcwd()):
for dirpath, _dirs, files in os.walk(FILE_DIR):
for file in files:
if file.startswith("tests_") and file.endswith(".py"):
mod = f"{dirpath}/{file}"
mods.append(mod)
if not pytest_ignore_collect(mod):
mods.append(mod)
return sorted(mods)
@pytest.fixture(scope="session")
@ -281,11 +289,11 @@ else:
"""
Dictionary containing assigned base port for every module.
Note that this is a session-wide fixture. The port numbers are
deterministically assigned before any testing starts. This fixture MUST
return the same value when called again during the same test session.
When running tests in parallel, this is exactly what happens - every
worker thread will call this fixture to determine test ports.
The port numbers are deterministically assigned before any testing
starts. This fixture MUST return the same value when called again
during the same test session. When running tests in parallel, this is
exactly what happens - every worker thread will call this fixture to
determine test ports.
"""
port_min = PORT_MIN
port_max = PORT_MAX - len(modules) * PORTS_PER_TEST

View file

@ -0,0 +1,70 @@
#!/usr/bin/env python3
#
# Copyright (C) Internet Systems Consortium, Inc. ("ISC")
#
# SPDX-License-Identifier: MPL-2.0
#
# Convert JUnit pytest output to automake .trs files
import argparse
import sys
from xml.etree import ElementTree
def junit_to_trs(junit_xml):
root = ElementTree.fromstring(junit_xml)
testcases = root.findall("./testsuite/testcase")
if len(testcases) < 1:
print(":test-result: ERROR convert-junit-to-trs.py")
return 99
has_fail = False
has_error = False
has_skipped = False
for testcase in testcases:
filename = f"{testcase.attrib['classname'].replace('.', '/')}.py"
name = f"{filename}::{testcase.attrib['name']}"
res = "PASS"
for node in testcase:
if node.tag == "failure":
res = "FAIL"
has_fail = True
elif node.tag == "error":
res = "ERROR"
has_error = True
elif node.tag == "skipped":
if node.attrib["type"] == "pytest.xfail":
res = "XFAIL"
else:
res = "SKIP"
has_skipped = True
print(f":test-result: {res} {name}")
if has_error:
return 99
if has_fail:
return 1
if has_skipped:
return 77
return 0
def main():
parser = argparse.ArgumentParser(
description="Convert JUnit XML to Automake TRS and exit with "
"the appropriate Automake-compatible exit code."
)
parser.add_argument(
"junit_file",
type=argparse.FileType("r", encoding="utf-8"),
help="junit xml result file",
)
args = parser.parse_args()
junit_xml = args.junit_file.read()
sys.exit(junit_to_trs(junit_xml))
if __name__ == "__main__":
main()

View file

@ -1 +0,0 @@
prereq.sh

View file

@ -0,0 +1,22 @@
#!/bin/sh
# Copyright (C) Internet Systems Consortium, Inc. ("ISC")
#
# SPDX-License-Identifier: MPL-2.0
#
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, you can obtain one at https://mozilla.org/MPL/2.0/.
#
# See the COPYRIGHT file distributed with this work for additional
# information regarding copyright ownership.
. ../conf.sh
if ! ${PYTHON} -c 'import dns'
then
echo_i "python dns module is required"
exit 1
fi
exit 0

View file

@ -56,7 +56,7 @@ END
test_name= # Used for reporting.
log_file= # Where to save the output of the test script.
trs_file= # Where to save the metadata of the test run.
status_file= # Where to save the status of the test run.
junit_file= # Where to save pytest junit output.
expect_failure=no
color_tests=no
enable_hard_errors=yes
@ -67,8 +67,7 @@ while test $# -gt 0; do
--version) echo "test-driver $scriptversion"; exit $?;;
--test-name) test_name=$2; shift;;
--log-file) log_file=$2; shift;;
--trs-file) trs_file=$2; shift;;
--status-file) status_file=$2; shift;;
--trs-file) trs_file=$2; junit_file=$(echo $trs_file | sed 's/\.trs$/\.xml/'); shift;;
--color-tests) color_tests=$2; shift;;
--expect-failure) expect_failure=$2; shift;;
--enable-hard-errors) enable_hard_errors=$2; shift;;
@ -104,22 +103,22 @@ else
red= grn= lgn= blu= mgn= std=
fi
do_exit='rm -f $log_file $trs_file $status_file; (exit $st); exit $st'
do_exit='rm -f $log_file $trs_file $junit_file; (exit $st); exit $st'
trap "st=129; $do_exit" 1
trap "st=130; $do_exit" 2
trap "st=141; $do_exit" 13
trap "st=143; $do_exit" 15
# Set default
test x"$status_file" = x && status_file=$(mktemp ./custom-test-runner.XXXXXX)
# Test script is run here.
if test $verbose = yes; then
("$@" 2>&1; echo $? > "$status_file") | tee $log_file
"$@" --junit-xml $PWD/$junit_file 2>&1 | tee $log_file
else
"$@" >$log_file 2>&1; echo $? > "$status_file"
"$@" --junit-xml $PWD/$junit_file >$log_file 2>&1
fi
read -r estatus < "$status_file"
rm "$status_file"
# Run junit to trs converter script.
./convert-junit-to-trs.py $junit_file > $trs_file
estatus=$?
if test $enable_hard_errors = no && test $estatus -eq 99; then
tweaked_estatus=1
@ -145,8 +144,7 @@ echo "$res $test_name (exit status: $estatus)" >>$log_file
# Report outcome to console.
echo "${col}${res}${std}: $test_name"
# Register the test result, and other relevant metadata.
echo ":test-result: $res" > $trs_file
# Register other relevant test metadata.
echo ":global-test-result: $res" >> $trs_file
echo ":recheck: $recheck" >> $trs_file
echo ":copy-in-global-log: $gcopy" >> $trs_file

View file

@ -0,0 +1,28 @@
#!/bin/sh
# Copyright (C) Internet Systems Consortium, Inc. ("ISC")
#
# SPDX-License-Identifier: MPL-2.0
#
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, you can obtain one at https://mozilla.org/MPL/2.0/.
#
# See the COPYRIGHT file distributed with this work for additional
# information regarding copyright ownership.
. ../conf.sh
if ! ${PYTHON} -c 'import dns'
then
echo_i "python dns module is required"
exit 1
fi
if ! ${PERL} -MNet::DNS -e ''
then
echo_i "perl Net::DNS module is required"
exit 1
fi
exit 0

View file

@ -0,0 +1,28 @@
#!/bin/sh
# Copyright (C) Internet Systems Consortium, Inc. ("ISC")
#
# SPDX-License-Identifier: MPL-2.0
#
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, you can obtain one at https://mozilla.org/MPL/2.0/.
#
# See the COPYRIGHT file distributed with this work for additional
# information regarding copyright ownership.
. ../conf.sh
if ! ${PYTHON} -c 'import dns'
then
echo_i "python dns module is required"
exit 1
fi
if ! ${PERL} -MNet::DNS -e ''
then
echo_i "perl Net::DNS module is required"
exit 1
fi
exit 0

View file

@ -0,0 +1,22 @@
#!/bin/sh
# Copyright (C) Internet Systems Consortium, Inc. ("ISC")
#
# SPDX-License-Identifier: MPL-2.0
#
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, you can obtain one at https://mozilla.org/MPL/2.0/.
#
# See the COPYRIGHT file distributed with this work for additional
# information regarding copyright ownership.
. ../conf.sh
if ! ${PERL} -MNet::DNS -e ''
then
echo_i "perl Net::DNS module is required"
exit 1
fi
exit 0

View file

@ -0,0 +1,28 @@
#!/bin/sh
# Copyright (C) Internet Systems Consortium, Inc. ("ISC")
#
# SPDX-License-Identifier: MPL-2.0
#
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, you can obtain one at https://mozilla.org/MPL/2.0/.
#
# See the COPYRIGHT file distributed with this work for additional
# information regarding copyright ownership.
. ../conf.sh
if ! ${PYTHON} -c 'import dns'
then
echo_i "python dns module is required"
exit 1
fi
if ! ${PERL} -MNet::DNS -e ''
then
echo_i "perl Net::DNS module is required"
exit 1
fi
exit 0

View file

@ -0,0 +1,22 @@
#!/bin/sh
# Copyright (C) Internet Systems Consortium, Inc. ("ISC")
#
# SPDX-License-Identifier: MPL-2.0
#
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, you can obtain one at https://mozilla.org/MPL/2.0/.
#
# See the COPYRIGHT file distributed with this work for additional
# information regarding copyright ownership.
. ../conf.sh
if ! ${PERL} -MNet::DNS -e ''
then
echo_i "perl Net::DNS module is required"
exit 1
fi
exit 0

View file

@ -44,11 +44,8 @@ else
clean=true
fi
do_run=false
restart=false
log_flags="-r"
while getopts "sknp:r-:t" OPT; do
log_flags="$log_flags -$OPT$OPTARG"
while getopts "sknp:-:t" OPT; do
if [ "$OPT" = "-" ] && [ -n "$OPTARG" ]; then
OPT="${OPTARG%%=*}"
OPTARG="${OPTARG#$OPT}"
@ -60,7 +57,6 @@ while getopts "sknp:r-:t" OPT; do
k | keep) stopservers=false ;;
n | noclean) clean=false ;;
p | port) baseport=$OPTARG ;;
r | run) do_run=true ;;
s | skip) exit 77 ;;
t | restart) restart=true ;;
-) break ;;
@ -70,31 +66,6 @@ done
shift $((OPTIND-1))
if ! $do_run; then
if [ "$baseport" -eq 0 ]; then
log_flags="$log_flags -p 5300"
fi
env - \
SYSTEMTEST_FORCE_COLOR="$SYSTEMTEST_FORCE_COLOR" \
SYSTEMTEST_NO_CLEAN="$SYSTEMTEST_NO_CLEAN" \
SLOT="$SLOT" \
${OPENSSL_CONF:+OPENSSL_CONF="$OPENSSL_CONF"} \
SOFTHSM2_CONF="$SOFTHSM2_CONF" \
PATH="$PATH" \
${LD_LIBRARY_PATH:+"LD_LIBRARY_PATH=${LD_LIBRARY_PATH}"} \
TESTS="$*" \
TEST_SUITE_LOG=run.log \
LOG_DRIVER_FLAGS="--verbose yes --color-tests yes" \
LOG_FLAGS="$log_flags" \
TEST_LARGE_MAP="${TEST_LARGE_MAP}" \
CI_ENABLE_ALL_TESTS="${CI_ENABLE_ALL_TESTS}" \
${TSAN_OPTIONS:+"TSAN_OPTIONS=${TSAN_OPTIONS}"} \
${VIRTUAL_ENV:+"VIRTUAL_ENV=${VIRTUAL_ENV}"} \
${PERL5LIB:+"PERL5LIB=${PERL5LIB}"} \
make -e check
exit $?
fi
if [ $# -eq 0 ]; then
echofail "Usage: $0 [-k] [-n] [-p <PORT>] test-directory [test-options]" >&2;
exit 1

View file

@ -0,0 +1,22 @@
#!/bin/sh
# Copyright (C) Internet Systems Consortium, Inc. ("ISC")
#
# SPDX-License-Identifier: MPL-2.0
#
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, you can obtain one at https://mozilla.org/MPL/2.0/.
#
# See the COPYRIGHT file distributed with this work for additional
# information regarding copyright ownership.
. ../conf.sh
if ! ${PERL} -MNet::DNS -e ''
then
echo_i "perl Net::DNS module is required"
exit 1
fi
exit 0

View file

@ -0,0 +1,22 @@
#!/bin/sh
# Copyright (C) Internet Systems Consortium, Inc. ("ISC")
#
# SPDX-License-Identifier: MPL-2.0
#
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, you can obtain one at https://mozilla.org/MPL/2.0/.
#
# See the COPYRIGHT file distributed with this work for additional
# information regarding copyright ownership.
. ../conf.sh
if ! ${PYTHON} -c 'import dns'
then
echo_i "python dns module is required"
exit 1
fi
exit 0

View file

@ -0,0 +1,28 @@
#!/bin/sh
# Copyright (C) Internet Systems Consortium, Inc. ("ISC")
#
# SPDX-License-Identifier: MPL-2.0
#
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, you can obtain one at https://mozilla.org/MPL/2.0/.
#
# See the COPYRIGHT file distributed with this work for additional
# information regarding copyright ownership.
. ../conf.sh
if ! ${PERL} -MNet::DNS -e ''
then
echo_i "perl Net::DNS module is required"
exit 1
fi
if ! ${PERL} -MNet::DNS::Nameserver -e ''
then
echo_i "perl Net::DNS::Nameserver module is required"
exit 1
fi
exit 0

View file

@ -0,0 +1,22 @@
#!/bin/sh
# Copyright (C) Internet Systems Consortium, Inc. ("ISC")
#
# SPDX-License-Identifier: MPL-2.0
#
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, you can obtain one at https://mozilla.org/MPL/2.0/.
#
# See the COPYRIGHT file distributed with this work for additional
# information regarding copyright ownership.
. ../conf.sh
if ! ${PERL} -MNet::DNS -e ''
then
echo_i "perl Net::DNS module is required"
exit 1
fi
exit 0

View file

@ -0,0 +1,22 @@
#!/bin/sh
# Copyright (C) Internet Systems Consortium, Inc. ("ISC")
#
# SPDX-License-Identifier: MPL-2.0
#
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, you can obtain one at https://mozilla.org/MPL/2.0/.
#
# See the COPYRIGHT file distributed with this work for additional
# information regarding copyright ownership.
. ../conf.sh
if ! ${PERL} -MNet::DNS -e ''
then
echo_i "perl Net::DNS module is required"
exit 1
fi
exit 0

View file

@ -0,0 +1,22 @@
#!/bin/sh
# Copyright (C) Internet Systems Consortium, Inc. ("ISC")
#
# SPDX-License-Identifier: MPL-2.0
#
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, you can obtain one at https://mozilla.org/MPL/2.0/.
#
# See the COPYRIGHT file distributed with this work for additional
# information regarding copyright ownership.
. ../conf.sh
if ! ${PERL} -MTime::HiRes -e ''
then
echo_i "perl Time::HiRes module is required"
exit 1
fi
exit 0

View file

@ -0,0 +1,22 @@
#!/bin/sh
# Copyright (C) Internet Systems Consortium, Inc. ("ISC")
#
# SPDX-License-Identifier: MPL-2.0
#
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, you can obtain one at https://mozilla.org/MPL/2.0/.
#
# See the COPYRIGHT file distributed with this work for additional
# information regarding copyright ownership.
. ../conf.sh
if ! ${PERL} -MNet::DNS -e ''
then
echo_i "perl Net::DNS module is required"
exit 1
fi
exit 0

View file

@ -0,0 +1,28 @@
#!/bin/sh
# Copyright (C) Internet Systems Consortium, Inc. ("ISC")
#
# SPDX-License-Identifier: MPL-2.0
#
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, you can obtain one at https://mozilla.org/MPL/2.0/.
#
# See the COPYRIGHT file distributed with this work for additional
# information regarding copyright ownership.
. ../conf.sh
if ! ${PERL} -MNet::DNS -e ''
then
echo_i "perl Net::DNS module is required"
exit 1
fi
if ! ${PERL} -MFile::Fetch -e ''
then
echo_i "perl File::Fetch module is required"
exit 1
fi
exit 0

View file

@ -0,0 +1,22 @@
#!/bin/sh
# Copyright (C) Internet Systems Consortium, Inc. ("ISC")
#
# SPDX-License-Identifier: MPL-2.0
#
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, you can obtain one at https://mozilla.org/MPL/2.0/.
#
# See the COPYRIGHT file distributed with this work for additional
# information regarding copyright ownership.
. ../conf.sh
if ! ${PERL} -MNet::DNS -e ''
then
echo_i "perl Net::DNS module is required"
exit 1
fi
exit 0

View file

@ -0,0 +1,22 @@
#!/bin/sh
# Copyright (C) Internet Systems Consortium, Inc. ("ISC")
#
# SPDX-License-Identifier: MPL-2.0
#
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, you can obtain one at https://mozilla.org/MPL/2.0/.
#
# See the COPYRIGHT file distributed with this work for additional
# information regarding copyright ownership.
. ../conf.sh
if ! ${PERL} -MNet::DNS -e ''
then
echo_i "perl Net::DNS module is required"
exit 1
fi
exit 0

View file

@ -16,11 +16,17 @@
# macOS ships with Net::DNS 0.74 which does not work with
# HMAC-SHA256, despite the workarounds in ans.pl
if perl -MNet::DNS -e 'exit $Net::DNS::VERSION >= 1.0'
if ${PERL} -MNet::DNS -e 'exit ($Net::DNS::VERSION >= 1.0)'
then
version=$(perl -MNet::DNS -e 'print $Net::DNS::VERSION')
version=$(${PERL} -MNet::DNS -e 'print $Net::DNS::VERSION')
echo_i "perl Net::DNS $version is too old - skipping xfer test"
exit 1
fi
if ! ${PERL} -MDigest::HMAC -e ''
then
echo_i "perl Digest::HMAC module is required"
exit 1
fi
exit 0

View file

@ -0,0 +1,22 @@
#!/bin/sh
# Copyright (C) Internet Systems Consortium, Inc. ("ISC")
#
# SPDX-License-Identifier: MPL-2.0
#
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, you can obtain one at https://mozilla.org/MPL/2.0/.
#
# See the COPYRIGHT file distributed with this work for additional
# information regarding copyright ownership.
. ../conf.sh
if ! ${PERL} -MNet::DNS -e ''
then
echo_i "perl Net::DNS module is required"
exit 1
fi
exit 0

View file

@ -311,26 +311,6 @@ AC_PATH_PROGS([PERL], [perl5 perl])
AC_SUBST([PERL])
AM_CONDITIONAL([HAVE_PERL], [test -n "$PERL"])
AX_PERL_MODULE([Digest::HMAC])
AM_CONDITIONAL([HAVE_PERLMOD_DIGEST_HMAC],
[test "$HAVE_PERLMOD_DIGEST__HMAC" = "yes"])
AX_PERL_MODULE([File::Fetch])
AM_CONDITIONAL([HAVE_PERLMOD_FILE_FETCH],
[test "$HAVE_PERLMOD_FILE__FETCH" = "yes"])
AX_PERL_MODULE([Net::DNS])
AM_CONDITIONAL([HAVE_PERLMOD_NET_DNS],
[test "$HAVE_PERLMOD_NET__DNS" = "yes"])
AX_PERL_MODULE([Net::DNS::Nameserver])
AM_CONDITIONAL([HAVE_PERLMOD_NET_DNS_NAMESERVER],
[test "$HAVE_PERLMOD_NET__DNS__NAMESERVER" = "yes"])
AX_PERL_MODULE([Time::HiRes])
AM_CONDITIONAL([HAVE_PERLMOD_TIME_HIRES],
[test "$HAVE_PERLMOD_TIME__HIRES" = "yes"])
#
# Python is optional, it is used only by some of the system test scripts.
#
@ -343,9 +323,6 @@ AS_IF([test -z "$PYTEST"],
AC_SUBST([PYTEST])
AM_CONDITIONAL([HAVE_PYTEST], [test -n "$PYTEST"])
AX_PYTHON_MODULE([dns])
AM_CONDITIONAL([HAVE_PYMOD_DNS], [test "$HAVE_PYMOD_DNS" = "yes"])
#
# xsltproc is optional, it is used only by system test scripts.
#