]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
Remove embedded atf-src and enforce atf >= 0.20 + kyua as execution engine
authorOndřej Surý <ondrej@sury.org>
Tue, 23 Oct 2018 09:44:33 +0000 (11:44 +0200)
committerOndřej Surý <ondrej@sury.org>
Thu, 15 Nov 2018 15:28:20 +0000 (16:28 +0100)
.gitignore
config.h.in
configure
configure.ac
lib/ns/tests/listenlist_test.c
lib/ns/tests/notify_test.c
lib/ns/tests/nstest.c
lib/ns/tests/query_test.c
unit/README
unit/unittest.sh.in
util/merge_copyrights

index b7853f094203ba2d4aa00d6d1e9b9b4273ee0171..73497b8934bd19682b1a4cee1a2a1329d53b84ee 100644 (file)
@@ -27,35 +27,6 @@ gen.dSYM/
 .deps/
 .dirstamp
 .libs/
-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
 # ccc-analyzer store its results in .plist directories
 *.plist/
 *~
index 2900c299cd6589f19193fedda8478ee367669882..81c5ce8653b460929d5543af2b4cc6547e3f4ae4 100644 (file)
@@ -6,9 +6,6 @@
 /* Use AES for Client Cookie generation */
 #undef AES_CC
 
-/* define if ATF unit tests are to be built. */
-#undef ATF_TEST
-
 /* Define if you cannot bind() before connect() for TCP sockets. */
 #undef BROKEN_TCP_BIND_BEFORE_CONNECT
 
index 73e40c14b490dd28f6fe18b19363d8035b6e925c..5476a005ee493fd0d435ac6ac9a2f027afcea9d1 100755 (executable)
--- a/configure
+++ b/configure
@@ -670,6 +670,7 @@ BIND9_ISCCC_BUILDINCLUDE
 BIND9_ISC_BUILDINCLUDE
 BIND9_TOP_BUILDDIR
 LD_WRAP_TESTS
+KYUA
 UNITTESTS
 CMOCKA_LIBS
 CMOCKA_CFLAGS
@@ -841,7 +842,6 @@ infodir
 docdir
 oldincludedir
 includedir
-runstatedir
 localstatedir
 sharedstatedir
 sysconfdir
@@ -961,7 +961,8 @@ OPENSSL_LIBS
 LIBIDN2_CFLAGS
 LIBIDN2_LIBS
 CMOCKA_CFLAGS
-CMOCKA_LIBS'
+CMOCKA_LIBS
+KYUA'
 
 
 # Initialize some variables set by options.
@@ -1000,7 +1001,6 @@ datadir='${datarootdir}'
 sysconfdir='${prefix}/etc'
 sharedstatedir='${prefix}/com'
 localstatedir='${prefix}/var'
-runstatedir='${localstatedir}/run'
 includedir='${prefix}/include'
 oldincludedir='/usr/include'
 docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
@@ -1253,15 +1253,6 @@ do
   | -silent | --silent | --silen | --sile | --sil)
     silent=yes ;;
 
-  -runstatedir | --runstatedir | --runstatedi | --runstated \
-  | --runstate | --runstat | --runsta | --runst | --runs \
-  | --run | --ru | --r)
-    ac_prev=runstatedir ;;
-  -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \
-  | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \
-  | --run=* | --ru=* | --r=*)
-    runstatedir=$ac_optarg ;;
-
   -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
     ac_prev=sbindir ;;
   -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
@@ -1399,7 +1390,7 @@ fi
 for ac_var in  exec_prefix prefix bindir sbindir libexecdir datarootdir \
                datadir sysconfdir sharedstatedir localstatedir includedir \
                oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
-               libdir localedir mandir runstatedir
+               libdir localedir mandir
 do
   eval ac_val=\$$ac_var
   # Remove trailing slashes.
@@ -1552,7 +1543,6 @@ Fine tuning of the installation directories:
   --sysconfdir=DIR        read-only single-machine data [PREFIX/etc]
   --sharedstatedir=DIR    modifiable architecture-independent data [PREFIX/com]
   --localstatedir=DIR     modifiable single-machine data [PREFIX/var]
-  --runstatedir=DIR       modifiable per-process data [LOCALSTATEDIR/run]
   --libdir=DIR            object code libraries [EPREFIX/lib]
   --includedir=DIR        C header files [PREFIX/include]
   --oldincludedir=DIR     C header files for non-gcc [/usr/include]
@@ -1715,6 +1705,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.
@@ -11916,7 +11907,6 @@ yes)
        STD_CDEFINES="$STD_CDEFINES -DISC_MEM_DEFAULTFILL=1 -DISC_LIST_CHECKINIT=1 -DNS_HOOKS_ENABLE=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 "${with_cmocka+set}" = set || with_cmocka=yes
        test "${with_dlz_filesystem+set}" = set || with_dlz_filesystem=yes
        test "${enable_symtable+set}" = set || enable_symtable=all
@@ -19884,6 +19874,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
 #
@@ -19925,6 +19973,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"
index 96a829c716e6734e0c930e44bf1ec02eb7f6f09f..a01bca0a30963e92152e62e9b119ecb26d93c133 100644 (file)
@@ -79,7 +79,6 @@ yes)
        STD_CDEFINES="$STD_CDEFINES -DISC_MEM_DEFAULTFILL=1 -DISC_LIST_CHECKINIT=1 -DNS_HOOKS_ENABLE=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 "${with_cmocka+set}" = set || with_cmocka=yes
        test "${with_dlz_filesystem+set}" = set || with_dlz_filesystem=yes
        test "${enable_symtable+set}" = set || enable_symtable=all
@@ -2436,6 +2435,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
 #
@@ -2458,6 +2469,9 @@ AC_SUBST([LD_WRAP_TESTS])
 
 LDFLAGS=$save_LDFLAGS
 
+#
+# Check for i18n
+#
 AC_CHECK_HEADERS(locale.h)
 AC_CHECK_FUNCS(setlocale)
 
index 4367b297b03f71fc719d176419f89a3b9b160eb7..40415c1d7c6dad344d7e4fe7ad4c8f368a05a4a0 100644 (file)
 
 #include <stdarg.h>
 #include <stddef.h>
+#include <stdlib.h>
 #include <setjmp.h>
 
-#include <stdlib.h>
+#include <isc/util.h>
+
+#ifdef NS_HOOKS_ENABLE
+
 #include <stdio.h>
 #include <string.h>
 #include <unistd.h>
@@ -122,6 +126,17 @@ main(void) {
 
        return (cmocka_run_group_tests(tests, NULL, NULL));
 }
+#else
+
+#include <stdio.h>
+
+int
+main(void) {
+       printf("1..0 # Skipped: libns hooks not enabled\n");
+       return (0);
+}
+
+#endif /* NS_HOOKS_ENABLE */
 
 #else /* HAVE_CMOCKA */
 
@@ -133,4 +148,4 @@ main(void) {
        return (0);
 }
 
-#endif
+#endif /* HAVE_CMOCKA */
index 990c3b99efcb4c37afebb5ecb6ab4197a17f7832..e1e2654ca3882d7140a8c797b72fe3070c8dcb39 100644 (file)
 
 #include <stdarg.h>
 #include <stddef.h>
+#include <stdlib.h>
 #include <setjmp.h>
 
-#include <stdlib.h>
+#include <isc/util.h>
+
+#ifdef NS_HOOKS_ENABLE
+
 #include <stdio.h>
 #include <string.h>
 #include <unistd.h>
@@ -150,6 +154,17 @@ main(void) {
 
        return (cmocka_run_group_tests(tests, NULL, NULL));
 }
+#else
+
+#include <stdio.h>
+
+int
+main(void) {
+       printf("1..0 # Skipped: libns hooks not enabled\n");
+       return (0);
+}
+
+#endif /* NS_HOOKS_ENABLE */
 
 #else /* HAVE_CMOCKA */
 
index 2e6a97d437671e8dbb99d42a18a0870dab69cb17..85c641bcd4828f8b7517799129d79db1544501d5 100644 (file)
@@ -13,6 +13,8 @@
 
 #include <config.h>
 
+#ifdef NS_HOOKS_ENABLE
+
 #include <inttypes.h>
 #include <stdbool.h>
 #include <stdlib.h>
@@ -925,3 +927,4 @@ ns_test_getdata(const char *file, unsigned char *buf,
        isc_stdio_close(f);
        return (result);
 }
+#endif
index 0261c81d898c29cbd702d569ed5b7c898caecd86..21c68e4c7638331ee3a657dbc765d7b5be00ae90 100644 (file)
 #include <stddef.h>
 #include <setjmp.h>
 
+#include <isc/util.h>
+
+#ifdef NS_HOOKS_ENABLE
+
 #include <inttypes.h>
 #include <stdbool.h>
 #include <stdlib.h>
@@ -27,7 +31,6 @@
 
 #include <dns/badcache.h>
 #include <dns/view.h>
-#include <isc/util.h>
 #include <ns/client.h>
 #include <ns/query.h>
 #include <isc/util.h>
@@ -601,6 +604,17 @@ main(void) {
 
        return (cmocka_run_group_tests(tests, NULL, NULL));
 }
+#else
+
+#include <stdio.h>
+
+int
+main(void) {
+       printf("1..0 # Skipped: libns hooks not enabled\n");
+       return (0);
+}
+
+#endif /* NS_HOOKS_ENABLE */
 
 #else /* HAVE_CMOCKA */
 
@@ -612,4 +626,4 @@ main(void) {
        return (0);
 }
 
-#endif
+#endif /* HAVE_CMOCKA */
index 35edf4cfed0c5861634a3163cfa8c98591354d2e..0f0c209df05a7678138bf347ec53344e34f9ce45 100644 (file)
@@ -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=<prefix> --enable-tools --disable-shared
-  $ make
-  $ make install
-
-Subsequently, specify the ATF prefix when building BIND 9:
-
-  $ configure --with-atf=<prefix>
-
-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/
index eb6c29735c3599c4a5ec5a1ef84b2e4ce7ebdd71..c46e2fc40cc79f879314d5de6d740b08b2491196 100755 (executable)
@@ -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}
index 28ee0c20ef731f9ccb78ef3b3790ccb5b4a5c8a0..8f90eeb0b264f9d21aea42d64b16b63fd08a943b 100644 (file)
@@ -68,8 +68,6 @@ while (<CHANGES>) {
        # 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)$/) {
@@ -109,7 +107,7 @@ while (<CHANGES>) {
            $file_types{$_} = "CONF-SH";
        } 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";