From 1418d5cc62f2f888aed5c033fa3fd9f50eb67235 Mon Sep 17 00:00:00 2001 From: Jonas Gunz Date: Tue, 1 Jun 2021 23:49:13 +0200 Subject: Add Check framework for unit tests --- Makefile | 25 ++++++++++++++++++------- tests/main.c | 33 +++++++++++++++++++++++++++++++++ 2 files changed, 51 insertions(+), 7 deletions(-) create mode 100644 tests/main.c 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 + +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); +} -- cgit v1.2.3