From f5c66d3e9082bf7c906393e00e6c61476f4492a3 Mon Sep 17 00:00:00 2001
From: Marek Vavrusa <marek@vavrusa.com>
Date: Wed, 6 Apr 2011 11:21:13 +0200
Subject: [PATCH] Separated dnslib unittests. libtap moved to common.

Commit refs #701.
---
 Knot.files                                    |  44 +++++-----
 src/Makefile.am                               |  64 +++++++-------
 src/{tests => common}/libtap/README           |   0
 src/{tests => common}/libtap/tap.c            |   0
 src/{tests => common}/libtap/tap.h            |   0
 src/common/libtap/tap_unit.h                  |  79 ++++++++++++++++++
 src/{ => dnslib}/tests/dnslib/cuckoo_tests.c  |   2 +-
 src/{ => dnslib}/tests/dnslib/cuckoo_tests.h  |   2 +-
 src/{ => dnslib}/tests/dnslib/dname_tests.c   |   2 +-
 src/{ => dnslib}/tests/dnslib/dname_tests.h   |   2 +-
 src/{ => dnslib}/tests/dnslib/edns_tests.c    |   2 +-
 src/{ => dnslib}/tests/dnslib/edns_tests.h    |   2 +-
 src/{ => dnslib}/tests/dnslib/node_tests.c    |   2 +-
 src/{ => dnslib}/tests/dnslib/node_tests.h    |   2 +-
 src/{ => dnslib}/tests/dnslib/rdata_tests.c   |   2 +-
 src/{ => dnslib}/tests/dnslib/rdata_tests.h   |   2 +-
 .../tests/dnslib/response_tests.c             |  10 +--
 .../tests/dnslib/response_tests.h             |   2 +-
 src/{ => dnslib}/tests/dnslib/rrset_tests.c   |   2 +-
 src/{ => dnslib}/tests/dnslib/rrset_tests.h   |   2 +-
 src/{ => dnslib}/tests/dnslib/zone_tests.c    |   2 +-
 src/{ => dnslib}/tests/dnslib/zone_tests.h    |   2 +-
 src/{ => dnslib}/tests/dnslib/zonedb_tests.c  |   2 +-
 src/{ => dnslib}/tests/dnslib/zonedb_tests.h  |   2 +-
 src/{ => dnslib}/tests/files/parsed_data      | Bin
 .../tests/files/parsed_data_queries           | Bin
 src/{ => dnslib}/tests/files/raw_data         | Bin
 src/{ => dnslib}/tests/files/raw_data_queries | Bin
 src/dnslib/tests/unittests_dnslib.c           |  63 ++++++++++++++
 src/tests/common/da_tests.h                   |   2 +-
 src/tests/common/skiplist_tests.h             |   2 +-
 src/tests/common/slab_tests.h                 |   2 +-
 src/tests/knot/conf_tests.h                   |   2 +-
 src/tests/knot/dthreads_tests.h               |   2 +-
 src/tests/knot/server_tests.h                 |   2 +-
 src/tests/libtap/tap_unit.h                   |  37 --------
 src/tests/template_tests.c                    |  41 ---------
 src/tests/unittests_main.c                    |  22 +----
 src/zoneparser/tests/unittests_zp_main.c      |   2 +-
 39 files changed, 227 insertions(+), 181 deletions(-)
 rename src/{tests => common}/libtap/README (100%)
 rename src/{tests => common}/libtap/tap.c (100%)
 rename src/{tests => common}/libtap/tap.h (100%)
 create mode 100644 src/common/libtap/tap_unit.h
 rename src/{ => dnslib}/tests/dnslib/cuckoo_tests.c (99%)
 rename src/{ => dnslib}/tests/dnslib/cuckoo_tests.h (79%)
 rename src/{ => dnslib}/tests/dnslib/dname_tests.c (99%)
 rename src/{ => dnslib}/tests/dnslib/dname_tests.h (79%)
 rename src/{ => dnslib}/tests/dnslib/edns_tests.c (99%)
 rename src/{ => dnslib}/tests/dnslib/edns_tests.h (89%)
 rename src/{ => dnslib}/tests/dnslib/node_tests.c (99%)
 rename src/{ => dnslib}/tests/dnslib/node_tests.h (78%)
 rename src/{ => dnslib}/tests/dnslib/rdata_tests.c (99%)
 rename src/{ => dnslib}/tests/dnslib/rdata_tests.h (97%)
 rename src/{ => dnslib}/tests/dnslib/response_tests.c (99%)
 rename src/{ => dnslib}/tests/dnslib/response_tests.h (91%)
 rename src/{ => dnslib}/tests/dnslib/rrset_tests.c (99%)
 rename src/{ => dnslib}/tests/dnslib/rrset_tests.h (89%)
 rename src/{ => dnslib}/tests/dnslib/zone_tests.c (99%)
 rename src/{ => dnslib}/tests/dnslib/zone_tests.h (78%)
 rename src/{ => dnslib}/tests/dnslib/zonedb_tests.c (92%)
 rename src/{ => dnslib}/tests/dnslib/zonedb_tests.h (79%)
 rename src/{ => dnslib}/tests/files/parsed_data (100%)
 rename src/{ => dnslib}/tests/files/parsed_data_queries (100%)
 rename src/{ => dnslib}/tests/files/raw_data (100%)
 rename src/{ => dnslib}/tests/files/raw_data_queries (100%)
 create mode 100644 src/dnslib/tests/unittests_dnslib.c
 delete mode 100644 src/tests/libtap/tap_unit.h
 delete mode 100644 src/tests/template_tests.c

diff --git a/Knot.files b/Knot.files
index 5c6a988b3b..0e97bd0576 100644
--- a/Knot.files
+++ b/Knot.files
@@ -9,6 +9,9 @@ src/common/slab/malloc.h
 src/common/slab/slab.c
 src/common/slab/slab.h
 src/common/slab/alloc-common.h
+src/common/libtap/tap.c
+src/common/libtap/tap.h
+src/common/libtap/tap_unit.h
 src/common/lists.h
 src/common/lists.c
 src/common/base32.h
@@ -72,6 +75,25 @@ src/dnslib/hash/hash-functions.c
 src/dnslib/hash/hash-functions.h
 src/dnslib/hash/universal-system.c
 src/dnslib/hash/universal-system.h
+src/dnslib/tests/dnslib/dname_tests.c
+src/dnslib/tests/dnslib/dname_tests.h
+src/dnslib/tests/dnslib/edns_tests.c
+src/dnslib/tests/dnslib/edns_tests.h
+src/dnslib/tests/dnslib/node_tests.c
+src/dnslib/tests/dnslib/node_tests.h
+src/dnslib/tests/dnslib/rdata_tests.c
+src/dnslib/tests/dnslib/rdata_tests.h
+src/dnslib/tests/dnslib/response_tests.c
+src/dnslib/tests/dnslib/response_tests.h
+src/dnslib/tests/dnslib/rrset_tests.c
+src/dnslib/tests/dnslib/rrset_tests.h
+src/dnslib/tests/dnslib/zone_tests.c
+src/dnslib/tests/dnslib/zone_tests.h
+src/dnslib/tests/dnslib/zonedb_tests.c
+src/dnslib/tests/dnslib/zonedb_tests.h
+src/dnslib/tests/dnslib/cuckoo_tests.c
+src/dnslib/tests/dnslib/cuckoo_tests.h
+src/dnslib/tests/unittests_dnslib.c
 src/zoneparser/zoneparser_main.c
 src/zoneparser/parser-descriptor.h
 src/zoneparser/parser-descriptor.c
@@ -123,35 +145,13 @@ src/tests/common/skiplist_tests.c
 src/tests/common/skiplist_tests.h
 src/tests/common/slab_tests.c
 src/tests/common/slab_tests.h
-src/tests/dnslib/dname_tests.c
-src/tests/dnslib/dname_tests.h
-src/tests/dnslib/edns_tests.c
-src/tests/dnslib/edns_tests.h
-src/tests/dnslib/node_tests.c
-src/tests/dnslib/node_tests.h
-src/tests/dnslib/rdata_tests.c
-src/tests/dnslib/rdata_tests.h
-src/tests/dnslib/response_tests.c
-src/tests/dnslib/response_tests.h
-src/tests/dnslib/rrset_tests.c
-src/tests/dnslib/rrset_tests.h
-src/tests/dnslib/zone_tests.c
-src/tests/dnslib/zone_tests.h
-src/tests/dnslib/zonedb_tests.c
-src/tests/dnslib/zonedb_tests.h
-src/tests/dnslib/cuckoo_tests.c
-src/tests/dnslib/cuckoo_tests.h
 src/tests/knot/dthreads_tests.c
 src/tests/knot/dthreads_tests.h
 src/tests/knot/conf_tests.c
 src/tests/knot/conf_tests.h
 src/tests/knot/server_tests.c
 src/tests/knot/server_tests.h
-src/tests/libtap/tap.c
-src/tests/libtap/tap.h
-src/tests/libtap/tap_unit.h
 src/tests/unittests_main.c
-src/tests/template_tests.c
 tests/querytcp.c
 src/zoneparser/tests/unittests_zp_main.c
 src/zoneparser/tests/zcompile_tests.c
diff --git a/src/Makefile.am b/src/Makefile.am
index a5a334db85..6dd3349197 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -1,6 +1,6 @@
 ACLOCAL_AMFLAGS = -I ../m4
 bin_PROGRAMS = knotc
-libexec_PROGRAMS = knot-zcompile unittests unittests-zcompile
+libexec_PROGRAMS = knot-zcompile unittests unittests-zcompile unittests-dnslib
 sbin_PROGRAMS = knotd
 
 # $(YACC) will generate header file
@@ -12,17 +12,17 @@ libknot_la_LFLAGS = # TODO: reentrant parser, prefix
 LDADD = libknot.la @LIBOBJS@
 
 BUILT_SOURCES =					\
-	tests/dnslib/parsed_data.rc		\
-	tests/dnslib/raw_data_queries.rc	\
-	tests/dnslib/raw_data.rc		\
-	tests/dnslib/parsed_data_queries.rc     \
+	dnslib/tests/parsed_data.rc		\
+	dnslib/tests/raw_data_queries.rc	\
+	dnslib/tests/raw_data.rc		\
+	dnslib/tests/parsed_data_queries.rc     \
 	tests/sample_conf.rc
 
 CLEANFILES =					\
-	tests/dnslib/parsed_data.rc		\
-	tests/dnslib/raw_data_queries.rc	\
-	tests/dnslib/raw_data.rc		\
-	tests/dnslib/parsed_data_queries.rc     \
+	dnslib/tests/parsed_data.rc		\
+	dnslib/tests/raw_data_queries.rc	\
+	dnslib/tests/raw_data.rc		\
+	dnslib/tests/parsed_data_queries.rc     \
 	tests/sample_conf.rc                    \
 	zparser.h				\
 	zparser.c				\
@@ -46,24 +46,26 @@ knot_zcompile_SOURCES =			\
 	zoneparser/parser-descriptor.c
 
 unittests_SOURCES =				\
-	tests/libtap/tap.c			\
 	tests/common/da_tests.c			\
 	tests/common/skiplist_tests.c		\
 	tests/common/slab_tests.c		\
-	tests/dnslib/cuckoo_tests.c		\
-	tests/dnslib/dname_tests.c		\
-	tests/dnslib/edns_tests.c		\
-	tests/dnslib/node_tests.c		\
-	tests/dnslib/rdata_tests.c		\
-	tests/dnslib/response_tests.c		\
-	tests/dnslib/rrset_tests.c		\
-	tests/dnslib/zone_tests.c		\
-	tests/dnslib/zonedb_tests.c		\
 	tests/knot/conf_tests.c			\
 	tests/knot/dthreads_tests.c		\
 	tests/knot/server_tests.c		\
 	tests/unittests_main.c
 
+unittests_dnslib_SOURCES =			\
+	dnslib/tests/dnslib/cuckoo_tests.c	\
+	dnslib/tests/dnslib/dname_tests.c	\
+	dnslib/tests/dnslib/edns_tests.c	\
+	dnslib/tests/dnslib/node_tests.c	\
+	dnslib/tests/dnslib/rdata_tests.c	\
+	dnslib/tests/dnslib/response_tests.c	\
+	dnslib/tests/dnslib/rrset_tests.c	\
+	dnslib/tests/dnslib/zone_tests.c	\
+	dnslib/tests/dnslib/zonedb_tests.c	\
+	dnslib/tests/unittests_dnslib.c
+
 unittests_zcompile_SOURCES =		\
 	zoneparser/parser-util.h		\
 	zoneparser/parser-descriptor.h		\
@@ -73,14 +75,13 @@ unittests_zcompile_SOURCES =		\
 	zoneparser/zoneparser.c			\
 	zoneparser/parser-util.c		\
 	zoneparser/parser-descriptor.c		\
-	tests/libtap/tap.c			\
 	zoneparser/tests/unittests_zp_main.c
 
 nodist_unittests_SOURCES =			\
-	tests/dnslib/parsed_data.rc		\
-	tests/dnslib/raw_data_queries.rc	\
-	tests/dnslib/raw_data.rc		\
-	tests/dnslib/parsed_data_queries.rc     \
+	dnslib/tests/parsed_data.rc		\
+	dnslib/tests/raw_data_queries.rc	\
+	dnslib/tests/raw_data.rc		\
+	dnslib/tests/parsed_data_queries.rc     \
 	tests/sample_conf.rc
 
 knotd_SOURCES =					\
@@ -92,6 +93,9 @@ libknot_la_SOURCES =				\
 	common/slab/malloc.c				\
 	common/slab/slab.h			        \
 	common/slab/malloc.h				\
+	common/libtap/tap.c			\
+	common/libtap/tap.h			\
+	common/tap_unit.h			\
 	common/lists.c	            		\
 	common/base32.c				\
 	common/lists.h	            		\
@@ -177,25 +181,23 @@ libknot_la_SOURCES =				\
 	knot/server/udp-handler.h			\
 	knot/server/tcp-handler.h			\
 	knot/server/dthreads.h			\
-	knot/server/server.h				\
-	tests/libtap/tap.h			\
-	tests/tap_unit.h
+	knot/server/server.h
 
 libknot_la_LIBADD = @LIBOBJS@
 
 # automake complains on % rules:
 #   `%'-style pattern rules are a GNU make extension
 
-tests/dnslib/parsed_data.rc: tests/files/parsed_data
+dnslib/tests/parsed_data.rc: dnslib/tests/files/parsed_data
 	../resource.sh $< >$@
 
-tests/dnslib/parsed_data_queries.rc: tests/files/parsed_data_queries
+dnslib/tests/parsed_data_queries.rc: dnslib/tests/files/parsed_data_queries
 	../resource.sh $< >$@
 
-tests/dnslib/raw_data_queries.rc: tests/files/raw_data_queries
+dnslib/tests/raw_data_queries.rc: dnslib/tests/files/raw_data_queries
 	../resource.sh $< >$@
 
-tests/dnslib/raw_data.rc: tests/files/raw_data
+dnslib/tests/raw_data.rc: dnslib/tests/files/raw_data
 	../resource.sh $< >$@
 
 tests/sample_conf.rc: tests/files/sample_conf
diff --git a/src/tests/libtap/README b/src/common/libtap/README
similarity index 100%
rename from src/tests/libtap/README
rename to src/common/libtap/README
diff --git a/src/tests/libtap/tap.c b/src/common/libtap/tap.c
similarity index 100%
rename from src/tests/libtap/tap.c
rename to src/common/libtap/tap.c
diff --git a/src/tests/libtap/tap.h b/src/common/libtap/tap.h
similarity index 100%
rename from src/tests/libtap/tap.h
rename to src/common/libtap/tap.h
diff --git a/src/common/libtap/tap_unit.h b/src/common/libtap/tap_unit.h
new file mode 100644
index 0000000000..0a008ce7c7
--- /dev/null
+++ b/src/common/libtap/tap_unit.h
@@ -0,0 +1,79 @@
+/*!
+ * \file tap_unit.h
+ * \author Marek Vavrusa <marek.vavusa@nic.cz>
+ *
+ * \brief libtap test unit.
+ *
+ * Contains description of a single test unit API.
+ *
+ * Export unit_api in each module header file,
+ * and set function pointer to according test routines.
+ *
+ * <b>Example code for myunit.h</b>
+ * \code
+ * #ifndef MYUNIT_TEST_H
+ * #define MYUNIT_TEST_H
+ *
+ * // Export unittest symbol
+ * unit_api mymodule;
+ *
+ * #endif // MYUNIT_TEST_H
+ * \endcode
+ *
+ * <b>Example code for myunit.c</b>
+ * \code
+ * #include "myunit.h"
+ *
+ * // Function to return unit test count
+ * int myunit_count(int argc, char *argv[]) {
+ *     return 1; // Number of tests in this unit
+ * }
+ *
+ * // Function to perform tests
+ * int myunit_run(int argc, char *argv[]) {
+ *     // 1. test
+ *     ok(1 == 1, "test OK");
+ *     return 0;
+ * }
+ *
+ * // Declare module API
+ * unit_api mymodule = {
+ *     "My module",
+ *     &myunit_count,
+ *     &myunit_run
+ * };
+ * \endcode
+ *
+ * To incorporate test, add it to unit tests main().
+ *
+ * See https://github.com/zorgnax/libtap for libtap API reference.
+ *
+ * \addtogroup tests
+ * @{
+ */
+
+#ifndef _TAP_UNIT_H_
+#define _TAP_UNIT_H_
+
+#include "common/libtap/tap.h"
+
+/*! \brief Pointer to function for unit_api. */
+typedef int(unitapi_f)(int, char*[]);
+
+
+/*!
+ * \brief Basic Unit APIs.
+ *
+ * Each unit should have one global variable with
+ * an initialized instance of unit_api.
+ */
+typedef struct {
+	const char *name;  /*!< Test unit name. */
+	unitapi_f  *count; /*!< Function to calculate number of tests. */
+	unitapi_f  *run;   /*!< Function to run unit tests. */
+} unit_api;
+
+#endif // _TAP_UNIT_H_
+
+/*! @} */
+
diff --git a/src/tests/dnslib/cuckoo_tests.c b/src/dnslib/tests/dnslib/cuckoo_tests.c
similarity index 99%
rename from src/tests/dnslib/cuckoo_tests.c
rename to src/dnslib/tests/dnslib/cuckoo_tests.c
index d09409106e..f461183769 100644
--- a/src/tests/dnslib/cuckoo_tests.c
+++ b/src/dnslib/tests/dnslib/cuckoo_tests.c
@@ -1,7 +1,7 @@
 #include <time.h>
 #include <assert.h>
 
-#include "tests/dnslib/cuckoo_tests.h"
+#include "dnslib/tests/dnslib/cuckoo_tests.h"
 #include "dnslib/hash/cuckoo-hash-table.h"
 
 #define CT_TEST_REHASH
diff --git a/src/tests/dnslib/cuckoo_tests.h b/src/dnslib/tests/dnslib/cuckoo_tests.h
similarity index 79%
rename from src/tests/dnslib/cuckoo_tests.h
rename to src/dnslib/tests/dnslib/cuckoo_tests.h
index 7b1b846320..56400ba164 100644
--- a/src/tests/dnslib/cuckoo_tests.h
+++ b/src/dnslib/tests/dnslib/cuckoo_tests.h
@@ -1,7 +1,7 @@
 #ifndef _KNOT_CUCKOO_TESTS_H_
 #define _KNOT_CUCKOO_TESTS_H_
 
-#include "tests/libtap/tap_unit.h"
+#include "common/libtap/tap_unit.h"
 
 /* Unit API. */
 unit_api cuckoo_tests_api;
diff --git a/src/tests/dnslib/dname_tests.c b/src/dnslib/tests/dnslib/dname_tests.c
similarity index 99%
rename from src/tests/dnslib/dname_tests.c
rename to src/dnslib/tests/dnslib/dname_tests.c
index 8f98d385c8..6115ae410a 100644
--- a/src/tests/dnslib/dname_tests.c
+++ b/src/dnslib/tests/dnslib/dname_tests.c
@@ -1,7 +1,7 @@
 #include <string.h>
 #include <assert.h>
 
-#include "tests/dnslib/dname_tests.h"
+#include "dnslib/tests/dnslib/dname_tests.h"
 #include "dnslib/dname.h"
 #include "dnslib/node.h"
 
diff --git a/src/tests/dnslib/dname_tests.h b/src/dnslib/tests/dnslib/dname_tests.h
similarity index 79%
rename from src/tests/dnslib/dname_tests.h
rename to src/dnslib/tests/dnslib/dname_tests.h
index 7fd008ff7e..6f12817928 100644
--- a/src/tests/dnslib/dname_tests.h
+++ b/src/dnslib/tests/dnslib/dname_tests.h
@@ -1,7 +1,7 @@
 #ifndef _KNOT_DNAME_TESTS_H_
 #define _KNOT_DNAME_TESTS_H_
 
-#include "tests/libtap/tap_unit.h"
+#include "common/libtap/tap_unit.h"
 
 /* Unit API. */
 unit_api dname_tests_api;
diff --git a/src/tests/dnslib/edns_tests.c b/src/dnslib/tests/dnslib/edns_tests.c
similarity index 99%
rename from src/tests/dnslib/edns_tests.c
rename to src/dnslib/tests/dnslib/edns_tests.c
index cb8fdfa9b9..ba69517e01 100644
--- a/src/tests/dnslib/edns_tests.c
+++ b/src/dnslib/tests/dnslib/edns_tests.c
@@ -1,6 +1,6 @@
 #include <assert.h>
 
-#include "tests/dnslib/edns_tests.h"
+#include "dnslib/tests/dnslib/edns_tests.h"
 #include "dnslib/dnslib-common.h"
 #include "dnslib/edns.h"
 
diff --git a/src/tests/dnslib/edns_tests.h b/src/dnslib/tests/dnslib/edns_tests.h
similarity index 89%
rename from src/tests/dnslib/edns_tests.h
rename to src/dnslib/tests/dnslib/edns_tests.h
index c61f1f85bf..d79cae5707 100644
--- a/src/tests/dnslib/edns_tests.h
+++ b/src/dnslib/tests/dnslib/edns_tests.h
@@ -11,7 +11,7 @@
 #ifndef _KNOT_EDNS_TESTS_H_
 #define _KNOT_EDNS_TESTS_H_
 
-#include "tests/libtap/tap_unit.h"
+#include "common/libtap/tap_unit.h"
 
 /* Unit API. */
 unit_api edns_tests_api;
diff --git a/src/tests/dnslib/node_tests.c b/src/dnslib/tests/dnslib/node_tests.c
similarity index 99%
rename from src/tests/dnslib/node_tests.c
rename to src/dnslib/tests/dnslib/node_tests.c
index fc49d9bbec..c62bec0f09 100644
--- a/src/tests/dnslib/node_tests.c
+++ b/src/dnslib/tests/dnslib/node_tests.c
@@ -1,4 +1,4 @@
-#include "tests/dnslib/node_tests.h"
+#include "dnslib/tests/dnslib/node_tests.h"
 #include "dnslib/dname.h"
 #include "dnslib/node.h"
 #include "dnslib/descriptor.h"
diff --git a/src/tests/dnslib/node_tests.h b/src/dnslib/tests/dnslib/node_tests.h
similarity index 78%
rename from src/tests/dnslib/node_tests.h
rename to src/dnslib/tests/dnslib/node_tests.h
index a4b4af01fa..eebaf6934b 100644
--- a/src/tests/dnslib/node_tests.h
+++ b/src/dnslib/tests/dnslib/node_tests.h
@@ -1,7 +1,7 @@
 #ifndef _KNOT_NODE_TESTS_H_
 #define _KNOT_NODE_TESTS_H_
 
-#include "tests/libtap/tap_unit.h"
+#include "common/libtap/tap_unit.h"
 
 /* Unit API. */
 unit_api node_tests_api;
diff --git a/src/tests/dnslib/rdata_tests.c b/src/dnslib/tests/dnslib/rdata_tests.c
similarity index 99%
rename from src/tests/dnslib/rdata_tests.c
rename to src/dnslib/tests/dnslib/rdata_tests.c
index a0beda9b86..340ca441b5 100644
--- a/src/tests/dnslib/rdata_tests.c
+++ b/src/dnslib/tests/dnslib/rdata_tests.c
@@ -1,7 +1,7 @@
 #include <stdlib.h>
 #include <assert.h>
 
-#include "tests/dnslib/rdata_tests.h"
+#include "dnslib/tests/dnslib/rdata_tests.h"
 #include "dnslib/dnslib-common.h"
 #include "dnslib/rdata.h"
 #include "dnslib/descriptor.h"
diff --git a/src/tests/dnslib/rdata_tests.h b/src/dnslib/tests/dnslib/rdata_tests.h
similarity index 97%
rename from src/tests/dnslib/rdata_tests.h
rename to src/dnslib/tests/dnslib/rdata_tests.h
index c409b81829..a3930cab0d 100644
--- a/src/tests/dnslib/rdata_tests.h
+++ b/src/dnslib/tests/dnslib/rdata_tests.h
@@ -29,7 +29,7 @@
 #ifndef _KNOT_RDATA_TESTS_H_
 #define _KNOT_RDATA_TESTS_H_
 
-#include "tests/libtap/tap_unit.h"
+#include "common/libtap/tap_unit.h"
 
 /* Unit API. */
 unit_api rdata_tests_api;
diff --git a/src/tests/dnslib/response_tests.c b/src/dnslib/tests/dnslib/response_tests.c
similarity index 99%
rename from src/tests/dnslib/response_tests.c
rename to src/dnslib/tests/dnslib/response_tests.c
index 44a96074eb..25d8151f2e 100644
--- a/src/tests/dnslib/response_tests.c
+++ b/src/dnslib/tests/dnslib/response_tests.c
@@ -6,7 +6,7 @@
 #endif
 
 //#define RESP_TEST_DEBUG
-#include "tests/dnslib/response_tests.h"
+#include "dnslib/tests/dnslib/response_tests.h"
 #include "dnslib/dnslib-common.h"
 #include "dnslib/response.h"
 #include "dnslib/rdata.h"
@@ -20,10 +20,10 @@
  * Resources
  * \note .rc files are generated on compile-time.
  */
-#include "tests/dnslib/parsed_data_queries.rc"
-#include "tests/dnslib/parsed_data.rc"
-#include "tests/dnslib/raw_data_queries.rc"
-#include "tests/dnslib/raw_data.rc"
+#include "dnslib/tests/parsed_data_queries.rc"
+#include "dnslib/tests/parsed_data.rc"
+#include "dnslib/tests/raw_data_queries.rc"
+#include "dnslib/tests/raw_data.rc"
 
 static int dnslib_response_tests_count(int argc, char *argv[]);
 static int dnslib_response_tests_run(int argc, char *argv[]);
diff --git a/src/tests/dnslib/response_tests.h b/src/dnslib/tests/dnslib/response_tests.h
similarity index 91%
rename from src/tests/dnslib/response_tests.h
rename to src/dnslib/tests/dnslib/response_tests.h
index 3d11996432..24c62cba2d 100644
--- a/src/tests/dnslib/response_tests.h
+++ b/src/dnslib/tests/dnslib/response_tests.h
@@ -12,7 +12,7 @@
 #ifndef _KNOT_RESPONSE_TESTS_H_
 #define _KNOT_RESPONSE_TESTS_H_
 
-#include "tests/libtap/tap_unit.h"
+#include "common/libtap/tap_unit.h"
 
 /* Unit API. */
 unit_api response_tests_api;
diff --git a/src/tests/dnslib/rrset_tests.c b/src/dnslib/tests/dnslib/rrset_tests.c
similarity index 99%
rename from src/tests/dnslib/rrset_tests.c
rename to src/dnslib/tests/dnslib/rrset_tests.c
index f1f9a3be3a..1ee13d555e 100644
--- a/src/tests/dnslib/rrset_tests.c
+++ b/src/dnslib/tests/dnslib/rrset_tests.c
@@ -1,6 +1,6 @@
 #include <assert.h>
 
-#include "tests/dnslib/rrset_tests.h"
+#include "dnslib/tests/dnslib/rrset_tests.h"
 #include "dnslib/dnslib-common.h"
 #include "dnslib/descriptor.h"
 #include "dnslib/rrset.h"
diff --git a/src/tests/dnslib/rrset_tests.h b/src/dnslib/tests/dnslib/rrset_tests.h
similarity index 89%
rename from src/tests/dnslib/rrset_tests.h
rename to src/dnslib/tests/dnslib/rrset_tests.h
index 1c69c5c2b8..7491efaef4 100644
--- a/src/tests/dnslib/rrset_tests.h
+++ b/src/dnslib/tests/dnslib/rrset_tests.h
@@ -11,7 +11,7 @@
 #ifndef _KNOT_RRSET_TESTS_H_
 #define _KNOT_RRSET_TESTS_H_
 
-#include "tests/libtap/tap_unit.h"
+#include "common/libtap/tap_unit.h"
 
 /* Unit API. */
 unit_api rrset_tests_api;
diff --git a/src/tests/dnslib/zone_tests.c b/src/dnslib/tests/dnslib/zone_tests.c
similarity index 99%
rename from src/tests/dnslib/zone_tests.c
rename to src/dnslib/tests/dnslib/zone_tests.c
index 1544e1e4b4..0e43be32d8 100644
--- a/src/tests/dnslib/zone_tests.c
+++ b/src/dnslib/tests/dnslib/zone_tests.c
@@ -1,6 +1,6 @@
 #include <assert.h>
 
-#include "tests/dnslib/zone_tests.h"
+#include "dnslib/tests/dnslib/zone_tests.h"
 #include "dnslib/dnslib-common.h"
 #include "dnslib/zone.h"
 #include "dnslib/node.h"
diff --git a/src/tests/dnslib/zone_tests.h b/src/dnslib/tests/dnslib/zone_tests.h
similarity index 78%
rename from src/tests/dnslib/zone_tests.h
rename to src/dnslib/tests/dnslib/zone_tests.h
index 98ccd42084..6b57dc7ec8 100644
--- a/src/tests/dnslib/zone_tests.h
+++ b/src/dnslib/tests/dnslib/zone_tests.h
@@ -1,7 +1,7 @@
 #ifndef _KNOT_ZONE_TESTS_H_
 #define _KNOT_ZONE_TESTS_H_
 
-#include "tests/libtap/tap_unit.h"
+#include "common/libtap/tap_unit.h"
 
 /* Unit API. */
 unit_api zone_tests_api;
diff --git a/src/tests/dnslib/zonedb_tests.c b/src/dnslib/tests/dnslib/zonedb_tests.c
similarity index 92%
rename from src/tests/dnslib/zonedb_tests.c
rename to src/dnslib/tests/dnslib/zonedb_tests.c
index 18f4fe45f8..cab5c43a67 100644
--- a/src/tests/dnslib/zonedb_tests.c
+++ b/src/dnslib/tests/dnslib/zonedb_tests.c
@@ -1,4 +1,4 @@
-#include "tests/dnslib/zonedb_tests.h"
+#include "dnslib/tests/dnslib/zonedb_tests.h"
 
 
 static int zonedb_tests_count(int argc, char *argv[]);
diff --git a/src/tests/dnslib/zonedb_tests.h b/src/dnslib/tests/dnslib/zonedb_tests.h
similarity index 79%
rename from src/tests/dnslib/zonedb_tests.h
rename to src/dnslib/tests/dnslib/zonedb_tests.h
index 16affd55f3..2499dad25e 100644
--- a/src/tests/dnslib/zonedb_tests.h
+++ b/src/dnslib/tests/dnslib/zonedb_tests.h
@@ -1,7 +1,7 @@
 #ifndef _KNOT_ZONEDB_TESTS_H_
 #define _KNOT_ZONEDB_TESTS_H_
 
-#include "tests/libtap/tap_unit.h"
+#include "common/libtap/tap_unit.h"
 
 /* Unit API. */
 unit_api zonedb_tests_api;
diff --git a/src/tests/files/parsed_data b/src/dnslib/tests/files/parsed_data
similarity index 100%
rename from src/tests/files/parsed_data
rename to src/dnslib/tests/files/parsed_data
diff --git a/src/tests/files/parsed_data_queries b/src/dnslib/tests/files/parsed_data_queries
similarity index 100%
rename from src/tests/files/parsed_data_queries
rename to src/dnslib/tests/files/parsed_data_queries
diff --git a/src/tests/files/raw_data b/src/dnslib/tests/files/raw_data
similarity index 100%
rename from src/tests/files/raw_data
rename to src/dnslib/tests/files/raw_data
diff --git a/src/tests/files/raw_data_queries b/src/dnslib/tests/files/raw_data_queries
similarity index 100%
rename from src/tests/files/raw_data_queries
rename to src/dnslib/tests/files/raw_data_queries
diff --git a/src/dnslib/tests/unittests_dnslib.c b/src/dnslib/tests/unittests_dnslib.c
new file mode 100644
index 0000000000..7f3067dcb5
--- /dev/null
+++ b/src/dnslib/tests/unittests_dnslib.c
@@ -0,0 +1,63 @@
+#include <config.h>
+#include "knot/common.h"
+#include "common/libtap/tap_unit.h"
+
+// Units to test
+#include "dnslib/cuckoo_tests.h"
+#include "dnslib/dname_tests.h"
+#include "dnslib/edns_tests.h"
+#include "dnslib/node_tests.h"
+#include "dnslib/rdata_tests.h"
+#include "dnslib/response_tests.h"
+#include "dnslib/rrset_tests.h"
+#include "dnslib/zone_tests.h"
+#include "dnslib/zonedb_tests.h"
+
+// Run all loaded units
+int main(int argc, char *argv[])
+{
+	// Open log
+	log_init(LOG_UPTO(LOG_ERR), LOG_MASK(LOG_ERR) | LOG_MASK(LOG_WARNING));
+
+	// Build test set
+	unit_api *tests[] = {
+
+		/* DNS units */
+		&cuckoo_tests_api,   //! Cuckoo hashing unit
+		&dname_tests_api,    //! DNS library (dname) unit
+		&edns_tests_api,     //! DNS library (EDNS0) unit
+		&node_tests_api,     //! DNS library (node) unit
+		&rdata_tests_api,    //! DNS library (rdata) unit
+		&response_tests_api, //! DNS library (response) unit
+		&rrset_tests_api,    //! DNS library (rrset) unit
+		&zone_tests_api,     //! DNS library (zone) unit
+		&zonedb_tests_api,   //! DNS library (zonedb) unit
+	};
+
+	// Plan number of tests
+	int id = 0;
+	int test_count = 0;
+	note("Units:");
+	while (tests[id] != NULL) {
+		note("- %s : %d tests", tests[id]->name,
+		     tests[id]->count(argc, argv));
+		test_count += tests[id]->count(argc, argv);
+		++id;
+	}
+
+	plan(test_count);
+
+	// Run tests
+	id = 0;
+	while (tests[id] != NULL) {
+		diag("Testing unit: %s", tests[id]->name);
+		tests[id]->run(argc, argv);
+		++id;
+	}
+
+	log_close();
+
+	// Evaluate
+	return exit_status();
+}
+
diff --git a/src/tests/common/da_tests.h b/src/tests/common/da_tests.h
index de6a3ecaee..5237ce2015 100644
--- a/src/tests/common/da_tests.h
+++ b/src/tests/common/da_tests.h
@@ -1,7 +1,7 @@
 #ifndef _KNOT_DA_TESTS_H_
 #define _KNOT_DA_TESTS_H_
 
-#include "tests/libtap/tap_unit.h"
+#include "common/libtap/tap_unit.h"
 
 /* Unit API. */
 unit_api da_tests_api;
diff --git a/src/tests/common/skiplist_tests.h b/src/tests/common/skiplist_tests.h
index 676cf77126..e18ff80bf4 100644
--- a/src/tests/common/skiplist_tests.h
+++ b/src/tests/common/skiplist_tests.h
@@ -1,7 +1,7 @@
 #ifndef _KNOT_SKIPLIST_TESTS_H_
 #define _KNOT_SKIPLIST_TESTS_H_
 
-#include "tests/libtap/tap_unit.h"
+#include "common/libtap/tap_unit.h"
 
 /* Unit API. */
 unit_api skiplist_tests_api;
diff --git a/src/tests/common/slab_tests.h b/src/tests/common/slab_tests.h
index c6a8721d97..d8cb23089a 100644
--- a/src/tests/common/slab_tests.h
+++ b/src/tests/common/slab_tests.h
@@ -1,7 +1,7 @@
 #ifndef _KNOT_SLAB_TESTS_H_
 #define _KNOT_SLAB_TESTS_H_
 
-#include "tests/libtap/tap_unit.h"
+#include "common/libtap/tap_unit.h"
 
 /* Unit API. */
 unit_api slab_tests_api;
diff --git a/src/tests/knot/conf_tests.h b/src/tests/knot/conf_tests.h
index 7982751eae..7069dd7dd6 100644
--- a/src/tests/knot/conf_tests.h
+++ b/src/tests/knot/conf_tests.h
@@ -1,7 +1,7 @@
 #ifndef _KNOT_CONF_TESTS_H_
 #define _KNOT_CONF_TESTS_H_
 
-#include "tests/libtap/tap_unit.h"
+#include "common/libtap/tap_unit.h"
 
 /* Unit API. */
 unit_api conf_tests_api;
diff --git a/src/tests/knot/dthreads_tests.h b/src/tests/knot/dthreads_tests.h
index 11b9db8902..933700261f 100644
--- a/src/tests/knot/dthreads_tests.h
+++ b/src/tests/knot/dthreads_tests.h
@@ -1,7 +1,7 @@
 #ifndef _KNOT_DTHREADS_TESTS_H_
 #define _KNOT_DTHREADS_TESTS_H_
 
-#include "tests/libtap/tap_unit.h"
+#include "common/libtap/tap_unit.h"
 
 /* Unit API. */
 unit_api dthreads_tests_api;
diff --git a/src/tests/knot/server_tests.h b/src/tests/knot/server_tests.h
index 13e091fbc0..41f639e727 100644
--- a/src/tests/knot/server_tests.h
+++ b/src/tests/knot/server_tests.h
@@ -1,7 +1,7 @@
 #ifndef _KNOT_SERVER_TESTS_H_
 #define _KNOT_SERVER_TESTS_H_
 
-#include "tests/libtap/tap_unit.h"
+#include "common/libtap/tap_unit.h"
 
 /* Unit API. */
 unit_api server_tests_api;
diff --git a/src/tests/libtap/tap_unit.h b/src/tests/libtap/tap_unit.h
deleted file mode 100644
index bad329931f..0000000000
--- a/src/tests/libtap/tap_unit.h
+++ /dev/null
@@ -1,37 +0,0 @@
-/*!
- * \file tap_unit.h
- * \author Marek Vavrusa <marek.vavusa@nic.cz>
- *
- * \brief libtap test unit.
- *
- * Contains description of a single test unit API.
- *
- * \addtogroup tests
- * @{
- */
-
-#ifndef _KNOT_TAP_UNIT_H_
-#define _KNOT_TAP_UNIT_H_
-
-#include "tests/libtap/tap.h"
-
-/*! \brief Pointer to function for unit_api. */
-typedef int(unitapi_f)(int, char*[]);
-
-
-/*!
- * \brief Basic Unit APIs.
- *
- * Each unit should have one global variable with
- * an initialized instance of unit_api.
- */
-typedef struct {
-	const char *name;  /*!< Test unit name. */
-	unitapi_f  *count; /*!< Function to calculate number of tests. */
-	unitapi_f  *run;   /*!< Function to run unit tests. */
-} unit_api;
-
-#endif // _KNOT_TAP_UNIT_H_
-
-/*! @} */
-
diff --git a/src/tests/template_tests.c b/src/tests/template_tests.c
deleted file mode 100644
index ba5f5ae6df..0000000000
--- a/src/tests/template_tests.c
+++ /dev/null
@@ -1,41 +0,0 @@
-#include "tests/tap_unit.h"
-
-/*
-   This is unit test template.
-   Implement two mandatory functions below,
-   name them accordingly and export unit API
-   via global variable of "unit_api".
-
-   Add the exported variable into the list
-   "unit_api* tests[]" in src/tests/main.c
-
-   There is no header file, all modules *.c files
-   are included directly into src/tests/main.c
-
-   See https://github.com/zorgnax/libtap for libtap API reference.
-
- */
-
-/*! \brief Report the number of scheduled tests for given parameters. */
-static int TEMPLATE_tests_count(int argc, char *argv[])
-{
-	return 1;
-}
-
-/*! \brief  Run all scheduled tests for given parameters. */
-static int TEMPLATE_tests_run(int argc, char *argv[])
-{
-	ok(1 == 1, "dummy test");
-	return 0;
-}
-
-/*!
- * \brief Exported unit API for later incorporation.
- *
- * Name must be unique for each module.
- */
-unit_api TEMPLATE_tests_api = {
-	"TEMPLATE unit",        /*!< Unit name. */
-	&TEMPLATE_tests_count,  /*!< Count scheduled tests. */
-	&TEMPLATE_tests_run     /*!< Run scheduled tests. */
-};
diff --git a/src/tests/unittests_main.c b/src/tests/unittests_main.c
index 0b8472f5a5..5d6c14bae5 100644
--- a/src/tests/unittests_main.c
+++ b/src/tests/unittests_main.c
@@ -1,20 +1,11 @@
 #include <config.h>
 #include "knot/common.h"
-#include "tests/libtap/tap_unit.h"
+#include "common/libtap/tap_unit.h"
 
 // Units to test
 #include "tests/common/slab_tests.h"
 #include "tests/common/skiplist_tests.h"
 #include "tests/common/da_tests.h"
-#include "tests/dnslib/cuckoo_tests.h"
-#include "tests/dnslib/dname_tests.h"
-#include "tests/dnslib/edns_tests.h"
-#include "tests/dnslib/node_tests.h"
-#include "tests/dnslib/rdata_tests.h"
-#include "tests/dnslib/response_tests.h"
-#include "tests/dnslib/rrset_tests.h"
-#include "tests/dnslib/zone_tests.h"
-#include "tests/dnslib/zonedb_tests.h"
 #include "tests/knot/dthreads_tests.h"
 #include "tests/knot/server_tests.h"
 #include "tests/knot/conf_tests.h"
@@ -33,17 +24,6 @@ int main(int argc, char *argv[])
 		&dthreads_tests_api, //! DThreads testing unit
 		&da_tests_api,       //! Dynamic array unit
 
-		/* DNS units */
-		&cuckoo_tests_api,   //! Cuckoo hashing unit
-		&dname_tests_api,    //! DNS library (dname) unit
-		&edns_tests_api,     //! DNS library (EDNS0) unit
-		&node_tests_api,     //! DNS library (node) unit
-		&rdata_tests_api,    //! DNS library (rdata) unit
-		&response_tests_api, //! DNS library (response) unit
-		&rrset_tests_api,    //! DNS library (rrset) unit
-		&zone_tests_api,     //! DNS library (zone) unit
-		&zonedb_tests_api,   //! DNS library (zonedb) unit
-
 		/* Server parts. */
 		&conf_tests_api,     //! Configuration parser tests
 		&server_tests_api,   //! Server unit
diff --git a/src/zoneparser/tests/unittests_zp_main.c b/src/zoneparser/tests/unittests_zp_main.c
index 9bd38c421c..0f8d71b268 100644
--- a/src/zoneparser/tests/unittests_zp_main.c
+++ b/src/zoneparser/tests/unittests_zp_main.c
@@ -1,6 +1,6 @@
 #include <config.h>
 #include "knot/common.h"
-#include "tests/libtap/tap_unit.h"
+#include "common/libtap/tap_unit.h"
 
 // Units to test
 #include "zcompile_tests.c"
-- 
GitLab