libgnunetchat

library for GNUnet Messenger
Log | Files | Refs | README | LICENSE

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:
M.gitignore | 3+++
MMakefile | 16+++++++++++++++-
Atests/test_gnunet_chat_handle.c | 68++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
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); +}