aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Jonas Gunz <himself@jonasgunz.de> 2021-06-01 23:49:13 +0200
committerGravatar Jonas Gunz <himself@jonasgunz.de> 2021-06-01 23:49:13 +0200
commit1418d5cc62f2f888aed5c033fa3fd9f50eb67235 (patch)
treea6300c63f2361b01c259fb104b33007b24473488
parent7941b3f57d39db8eef93bd75bc62d49da33824fb (diff)
downloaddns-1418d5cc62f2f888aed5c033fa3fd9f50eb67235.tar.gz
Add Check framework for unit tests
-rw-r--r--Makefile25
-rw-r--r--tests/main.c33
2 files changed, 51 insertions, 7 deletions
diff --git a/Makefile b/Makefile
index c642e1f..dd64148 100644
--- a/Makefile
+++ b/Makefile
@@ -4,13 +4,18 @@ LDFLAGS = -lm
BUILDDIR = build
SOURCEDIR = src
OBJECTDIR = obj
+TESTDIR = tests
-OUTPUT = dns
+OUTPUT = dnsd
SRCS = $(wildcard $(SOURCEDIR)/*.c)
OBJS = $(SRCS:.c=.o)
OBJ = $(OBJS:$(SOURCEDIR)/%=$(OBJECTDIR)/%)
+TESTS = $(wildcard $(TESTDIR)/*.c)
+TOBJS = $(TESTS:.c=.o)
+TSUBS = $(filter-out $(OBJECTDIR)/main.o,$(OBJ))
+
build: dir $(OBJ)
@echo [LD] $(OBJ)
@$(CC) $(CFLAGS) -o $(BUILDDIR)/$(OUTPUT) $(OBJ) $(LDFLAGS)
@@ -18,9 +23,11 @@ build: dir $(OBJ)
debug: CFLAGS += -g -D _DEBUG
debug: build;
-test: CFLAGS += -D _TEST
-test: clean debug
- $(BUILDDIR)/$(OUTPUT)
+test: LDFLAGS += -lcheck
+test: clean dir $(TOBJS) $(TSUBS)
+ @echo [LD] $(TOBJS) $(TSUBS)
+ @$(CC) $(CFLAGS) -I $(SOURCEDIR) -o $(TESTDIR)/run $(TOBJS) $(TSUBS) $(LDFLAGS)
+ @$(TESTDIR)/run
dir:
@mkdir -p $(OBJECTDIR)
@@ -30,6 +37,10 @@ $(OBJECTDIR)/%.o: $(SOURCEDIR)/%.c
@echo [CC] $<
@$(CC) $(CFLAGS) -c $< -o $@
+$(TESTDIR)/%.o: $(TESTDIR)/%.c
+ @echo [TEST] $<
+ @$(CC) $(CFLAGS) -I $(SOURCEDIR) -c $< -o $@
+
#sudo setcap 'cap_net_bind_service=+ep' /path/to/prog
#to allow port access
run: build
@@ -37,9 +48,9 @@ run: build
.PHONY: clean
clean:
- @echo [RM] $(OBJ)
- @echo [RM] $(BUILDDIR)/$(OUTPUT)
- @rm -df $(OBJ)
+ @echo [RM] $(OBJ) $(TOBJS)
+ @echo [RM] $(BUILDDIR)/$(OUTPUT) $(TESTDIR)/run
+ @rm -df $(OBJ) $(TOBJS) $(TESTDIR)/run
@rm -Rdf $(BUILDDIR) $(OBJECTDIR)
.PHONY: all
diff --git a/tests/main.c b/tests/main.c
new file mode 100644
index 0000000..65d527f
--- /dev/null
+++ b/tests/main.c
@@ -0,0 +1,33 @@
+#include <check.h>
+
+START_TEST (test_example) {
+ ck_abort();
+} END_TEST
+
+Suite* tests(void) {
+ Suite *s;
+ TCase *tc_core;
+
+ s = suite_create("DNS Tests");
+
+ tc_core = tcase_create("Core");
+
+ tcase_add_test(tc_core, test_example);
+ suite_add_tcase(s, tc_core);
+
+ return s;
+}
+
+int main() {
+ Suite *s;
+ SRunner *sr;
+
+ s = tests();
+ sr = srunner_create(s);
+
+ srunner_run_all(sr,CK_NORMAL);
+
+ srunner_free(sr);
+
+ return srunner_ntests_failed(sr);
+}