commit aec4779ce9030fdf3adb47f7791566a5aacf1a6e
parent a6d4094851714d3e1406fe9d50f4cc08d8c0ff1a
Author: TheJackiMonster <thejackimonster@gmail.com>
Date: Sun, 5 Sep 2021 20:02:41 +0200
Added build target for automatic test cases
Signed-off-by: TheJackiMonster <thejackimonster@gmail.com>
Diffstat:
3 files changed, 86 insertions(+), 1 deletion(-)
diff --git a/.gitignore b/.gitignore
@@ -6,3 +6,6 @@
# Binary files:
*.o
*.so
+
+# Test files:
+tests/*.test
diff --git a/Makefile b/Makefile
@@ -1,9 +1,11 @@
+TARGET_NAME = gnunetchat
SOURCE_DIR = src/
INCLUDE_DIR = include/
+TESTS_DIR = tests/
INSTALL_DIR ?= /usr/local/
-LIBRARY = libgnunetchat.so
+LIBRARY = lib$(TARGET_NAME).so
SOURCES = gnunet_chat_lib.c\
gnunet_chat_contact.c\
gnunet_chat_context.c\
@@ -16,6 +18,8 @@ SOURCES = gnunet_chat_lib.c\
HEADERS = gnunet_chat_lib.h
+TESTS = test_gnunet_chat_handle.c
+
LIBRARIES = gnunetarm\
gnunetfs\
gnunetmessenger\
@@ -35,7 +39,10 @@ RELEASEFLAGS = -O2 -D NDEBUG
SOURCE_FILES = $(addprefix $(SOURCE_DIR), $(SOURCES))
OBJECT_FILES = $(SOURCE_FILES:%.c=%.o)
HEADER_FILES = $(addprefix $(INCLUDE_DIR), $(HEADERS))
+TEST_FILES = $(addprefix $(TESTS_DIR), $(TESTS))
+TEST_CASES = $(TEST_FILES:%.c=%.test)
LIBRARY_FLAGS = $(addprefix -l, $(LIBRARIES))
+TEST_FLAGS = $(LIBRARY_FLAGS) -lcheck -l$(TARGET_NAME)
all: $(LIBRARY)
@@ -51,10 +58,17 @@ release: $(LIBRARY)
$(LIBRARY): $(OBJECT_FILES)
$(LD) $(LDFLAGS) $^ -o $@ $(LIBRARY_FLAGS)
+check: $(TEST_CASES)
+ ./$(TEST_CASES)
+
+%.test: %.c
+ $(CC) $(CFLAGS) $< -o $@ -I $(INCLUDE_DIR) $(TEST_FLAGS)
+
.PHONY: install
install:
install -m 755 $(LIBRARY) $(addprefix $(INSTALL_DIR), lib/)
+ mkdir -p $(addprefix $(INSTALL_DIR), include/gnunet/)
install -m 644 $(HEADER_FILES) $(addprefix $(INSTALL_DIR), include/gnunet/)
.PHONY: uninstall
diff --git a/tests/test_gnunet_chat_handle.c b/tests/test_gnunet_chat_handle.c
@@ -0,0 +1,68 @@
+/*
+ This file is part of GNUnet.
+ Copyright (C) 2021 GNUnet e.V.
+
+ GNUnet is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Affero General Public License as published
+ by the Free Software Foundation, either version 3 of the License,
+ or (at your option) any later version.
+
+ GNUnet is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Affero General Public License for more details.
+
+ You should have received a copy of the GNU Affero General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+ SPDX-License-Identifier: AGPL3.0-or-later
+ */
+/*
+ * @author Tobias Frisch
+ * @file test_gnunet_chat_handle.c
+ */
+
+#include <check.h>
+#include <gnunet/gnunet_chat_lib.h>
+
+START_TEST(test_gnunet_chat_handle)
+{
+ struct GNUNET_CHAT_Handle *handle;
+
+ handle = GNUNET_CHAT_start(NULL, "", "Test", NULL, NULL, NULL, NULL);
+ ck_assert_ptr_eq(handle, NULL);
+
+ GNUNET_CHAT_stop(handle);
+}
+END_TEST
+
+Suite* handle_suite(void)
+{
+ Suite *suite;
+ TCase *test_case;
+
+ suite = suite_create("Handle");
+
+ test_case = tcase_create("Start/Stop");
+ tcase_add_test(test_case, test_gnunet_chat_handle);
+ suite_add_tcase(suite, test_case);
+
+ return suite;
+}
+
+int main(void)
+{
+ int tests_failed;
+
+ Suite *suite;
+ SRunner *suite_runner;
+
+ suite = handle_suite();
+ suite_runner = srunner_create(suite);
+
+ srunner_run_all(suite_runner, CK_NORMAL);
+ tests_failed = srunner_ntests_failed(suite_runner);
+ srunner_free(suite_runner);
+
+ return (tests_failed == 0? EXIT_SUCCESS : EXIT_FAILURE);
+}