From: Ondřej Surý Date: Tue, 23 Oct 2018 09:44:33 +0000 (+0200) Subject: Remove embedded atf-src and enforce atf >= 0.20 + kyua as execution engine X-Git-Tag: v9.11.6rc1~120^2~2 X-Git-Url: http://git.ipfire.org/gitweb/?a=commitdiff_plain;h=d196b5e4932053f1dad43226fd03d438ea58e5bb;p=thirdparty%2Fbind9.git Remove embedded atf-src and enforce atf >= 0.20 + kyua as execution engine (cherry picked from commit de219b855521c596ca11ec38cc7d488f3df96fc9) --- diff --git a/.gitignore b/.gitignore index 12a7a6f51b6..6815b1c221e 100644 --- a/.gitignore +++ b/.gitignore @@ -22,38 +22,9 @@ lwresd.run named.run named.memstats gen.dSYM/ -.libs/ .deps/ .dirstamp -unit/atf-src/atf-c++/atf-c++.pc -unit/atf-src/atf-c/atf-c.pc -unit/atf-src/atf-c/defs.h -unit/atf-src/atf-c/detail/process_helpers -unit/atf-src/atf-config/atf-config -unit/atf-src/atf-report/atf-report -unit/atf-src/atf-report/fail_helper -unit/atf-src/atf-report/misc_helpers -unit/atf-src/atf-report/pass_helper -unit/atf-src/atf-run/atf-run -unit/atf-src/atf-run/bad_metadata_helper -unit/atf-src/atf-run/expect_helpers -unit/atf-src/atf-run/misc_helpers -unit/atf-src/atf-run/pass_helper -unit/atf-src/atf-run/several_tcs_helper -unit/atf-src/atf-run/zero_tcs_helper -unit/atf-src/atf-sh/atf-check -unit/atf-src/atf-sh/atf-sh -unit/atf-src/atf-sh/misc_helpers -unit/atf-src/atf-version/atf-version -unit/atf-src/atf-version/revision.h -unit/atf-src/atf-version/revision.h.stamp -unit/atf-src/bconfig.h -unit/atf-src/bootstrap/atconfig -unit/atf-src/doc/atf.7 -unit/atf-src/stamp-h1 -unit/atf-src/test-programs/c_helpers -unit/atf-src/test-programs/cpp_helpers -unit/atf-src/test-programs/sh_helpers +.libs/ # ccc-analyzer store its results in .plist directories *.plist/ *~ diff --git a/config.h.in b/config.h.in index e53fcba7e75..4ecaa8fd44a 100644 --- a/config.h.in +++ b/config.h.in @@ -146,9 +146,6 @@ int sigwait(const unsigned int *set, int *sig); */ #undef ALLOW_FILTER_AAAA -/* define if ATF unit tests are to be built. */ -#undef ATF_TEST - /* Define if recvmsg() does not meet all of the BSD socket API specifications. */ #undef BROKEN_RECVMSG diff --git a/configure b/configure index 0b1dabf95da..e139dcb28df 100755 --- a/configure +++ b/configure @@ -678,6 +678,7 @@ BIND9_ISCCC_BUILDINCLUDE BIND9_ISC_BUILDINCLUDE BIND9_TOP_BUILDDIR LD_WRAP_TESTS +KYUA UNITTESTS CMOCKA_LIBS CMOCKA_CFLAGS @@ -1099,7 +1100,8 @@ PKG_CONFIG PKG_CONFIG_PATH PKG_CONFIG_LIBDIR CMOCKA_CFLAGS -CMOCKA_LIBS' +CMOCKA_LIBS +KYUA' # Initialize some variables set by options. @@ -1854,6 +1856,7 @@ Some influential environment variables: CMOCKA_CFLAGS C compiler flags for CMOCKA, overriding pkg-config CMOCKA_LIBS linker flags for CMOCKA, overriding pkg-config + KYUA path to kyua execution engine Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. @@ -12146,7 +12149,6 @@ yes) STD_CDEFINES="$STD_CDEFINES -DISC_LIST_CHECKINIT=1" test "${enable_fixed_rrset+set}" = set || enable_fixed_rrset=yes test "${enable_querytrace+set}" = set || enable_querytrace=yes - test "${with_atf+set}" = set || with_atf=yes test "${enable_filter_aaaa+set}" = set || enable_filter_aaaa=yes test "${with_cmocka+set}" = set || with_cmocka=yes test "${with_dlz_filesystem+set}" = set || with_dlz_filesystem=yes @@ -23420,6 +23422,64 @@ esac +# +# Check for kyua execution engine if ATF was requested +# and bail out if execution engine was not found +# + +if test "$with_cmocka" != "no"; then : + for ac_prog in kyua +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_KYUA+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $KYUA in + [\\/]* | ?:[\\/]*) + ac_cv_path_KYUA="$KYUA" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_KYUA="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +KYUA=$ac_cv_path_KYUA +if test -n "$KYUA"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $KYUA" >&5 +$as_echo "$KYUA" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$KYUA" && break +done + + if test -z "$KYUA"; then : + as_fn_error $? "kyua test execution engine not found" "$LINENO" 5 +fi +fi + + + # # Check for -Wl,--wrap= support # @@ -23461,6 +23521,9 @@ rm -f core conftest.err conftest.$ac_objext \ LDFLAGS=$save_LDFLAGS +# +# Check for i18n +# for ac_header in locale.h do : ac_fn_c_check_header_mongrel "$LINENO" "locale.h" "ac_cv_header_locale_h" "$ac_includes_default" diff --git a/configure.ac b/configure.ac index b030b746f4f..f772c89147e 100644 --- a/configure.ac +++ b/configure.ac @@ -89,7 +89,6 @@ yes) STD_CDEFINES="$STD_CDEFINES -DISC_LIST_CHECKINIT=1" test "${enable_fixed_rrset+set}" = set || enable_fixed_rrset=yes test "${enable_querytrace+set}" = set || enable_querytrace=yes - test "${with_atf+set}" = set || with_atf=yes test "${enable_filter_aaaa+set}" = set || enable_filter_aaaa=yes test "${with_cmocka+set}" = set || with_cmocka=yes test "${with_dlz_filesystem+set}" = set || with_dlz_filesystem=yes @@ -4874,6 +4873,18 @@ AC_SUBST([CMOCKA_CFLAGS]) AC_SUBST([CMOCKA_LIBS]) AC_SUBST(UNITTESTS) +# +# Check for kyua execution engine if ATF was requested +# and bail out if execution engine was not found +# +AC_ARG_VAR([KYUA], [path to kyua execution engine]) +AS_IF([test "$with_cmocka" != "no"], + [AC_PATH_PROGS([KYUA], [kyua], []) + AS_IF([test -z "$KYUA"], + [AC_MSG_ERROR([kyua test execution engine not found])])]) + +AC_SUBST([KYUA]) + # # Check for -Wl,--wrap= support # @@ -4896,6 +4907,9 @@ AC_SUBST([LD_WRAP_TESTS]) LDFLAGS=$save_LDFLAGS +# +# Check for i18n +# AC_CHECK_HEADERS(locale.h) AC_CHECK_FUNCS(setlocale) diff --git a/unit/README b/unit/README index 35edf4cfed0..0f0c209df05 100644 --- a/unit/README +++ b/unit/README @@ -1,21 +1,9 @@ -These unit tests for BIND 9 are based on the NetBSD Automated Test Framework -release 0.17. +Unit tests for BIND 9 are based on NetBSD Automated Test Framework, cmocka and +test execution engine Kyua. -To build an external copy of ATF for use by BIND 9: +If your distribution of choice doesn't include packages for atf, kyua and +cmocka, the sources can be found here: - $ cd atf-src - $ configure --prefix= --enable-tools --disable-shared - $ make - $ make install - -Subsequently, specify the ATF prefix when building BIND 9: - - $ configure --with-atf= - -ATF can also be built automatically during the BIND 9 build, -by specifying --with-atf without an argument: - - $ configure --with-atf - -This causes BIND 9 to build ATF in the atf-src directory and -link to it directly. + * ATF 0.20 - https://github.com/jmmv/atf/releases + * Kyua 0.13 - https://github.com/jmmv/kyua/releases + * CMocka 1.0 - https://cmocka.org/files/ diff --git a/unit/unittest.sh.in b/unit/unittest.sh.in index eb6c29735c3..c46e2fc40cc 100755 --- a/unit/unittest.sh.in +++ b/unit/unittest.sh.in @@ -1,29 +1,27 @@ #!/bin/sh - -PATH="@ATFBIN@:${PATH}" -export PATH -KYUA=`command -v kyua 2>/dev/null` +KYUA=@KYUA@ +UNITTESTS=@UNITTESTS@ CMOCKA_MESSAGE_OUTPUT=TAP export CMOCKA_MESSAGE_OUTPUT status=0 -if [ -n "@UNITTESTS@" -a -x "$KYUA" -a -f Kyuafile ] +if [ -n "${UNITTESTS}" ] && [ -f Kyuafile ] then - echo "S:unit:`date`" + echo "S:unit:$(date)" echo "T:unit:1:A" echo "I: unit tests (using kyua)" - $KYUA -v parallelism=${TEST_PARALLEL_JOBS:-1} --logfile kyua.log --loglevel debug test --results-file ${KYUA_RESULT:-NEW} + ${KYUA} -v parallelism="${TEST_PARALLEL_JOBS:-1}" --logfile kyua.log --loglevel debug test --results-file "${KYUA_RESULT:-NEW}" status=$? - $KYUA report --results-file ${KYUA_RESULT:-LATEST} + ${KYUA} report --results-file "${KYUA_RESULT:-LATEST}" - if [ $status -eq 0 ] + if [ "${status}" -eq "0" ] then rm -f kyua.log - echo R:PASS + echo "R:PASS" else - echo R:FAIL + echo "R:FAIL" fi - echo "E:unit:`date`" + echo "E:unit:$(date)" fi -exit $status +exit ${status} diff --git a/util/merge_copyrights b/util/merge_copyrights index d0c60ba77c8..ad3632fe2b3 100644 --- a/util/merge_copyrights +++ b/util/merge_copyrights @@ -50,8 +50,6 @@ while () { # Contributed code should maintain its own copyright. if ($base =~ /\.\/contrib\//) { $file_types{$_} = "X"; - } elsif ($base =~ /\.\/unit\/atf-src\//) { - $file_types{$_} = "X"; } elsif ($base =~ /\/openssl-[a-z0-9.]*-patch$/) { $file_types{$_} = "X"; } elsif ($base =~ /\.(c|h|css)$/) { @@ -97,7 +95,7 @@ while () { $file_types{$_} = "ZONE"; } elsif ($base =~ /\.md$/) { $file_types{$_} = "MKD"; - } elsif ($base =~ /(\/\.(gitignore|gitattributes)|Atffile|Kyuafile|\.(gif|jpg))$/i) { + } elsif ($base =~ /(\/\.(gitignore|gitattributes)|Kyuafile|\.(gif|jpg))$/i) { $file_types{$_} = "X"; } elsif ($base =~ /\.(def|dep|dsp|dsw|mak|sln)$/i) { $file_types{$_} = "X";