mirror of
https://github.com/ascii-boxes/boxes.git
synced 2024-12-13 10:20:37 +01:00
Add unit tests of new 'logging' module
This commit is contained in:
parent
d8e0e7421c
commit
f5e7d7b31e
@ -19,8 +19,8 @@ SRC_DIR = ../src
|
|||||||
UTEST_DIR = ../utest
|
UTEST_DIR = ../utest
|
||||||
VPATH = $(SRC_DIR):$(SRC_DIR)/misc:$(UTEST_DIR)
|
VPATH = $(SRC_DIR):$(SRC_DIR)/misc:$(UTEST_DIR)
|
||||||
|
|
||||||
UTEST_NORM = global_mock.c bxstring_test.o cmdline_test.c tools_test.c regulex_test.o remove_test.o main.o \
|
UTEST_NORM = global_mock.c bxstring_test.o cmdline_test.c logging_test.c tools_test.c regulex_test.o remove_test.o \
|
||||||
unicode_test.o utest_tools.o
|
main.o unicode_test.o utest_tools.o
|
||||||
|
|
||||||
.PHONY: check_dir flags_unix flags_win32 flags_ utest
|
.PHONY: check_dir flags_unix flags_win32 flags_ utest
|
||||||
|
|
||||||
@ -69,6 +69,7 @@ unittest.exe: $(UTEST_OBJ) | check_dir
|
|||||||
global_mock.o: global_mock.c global_mock.h boxes.h unicode.h tools.h config.h | check_dir
|
global_mock.o: global_mock.c global_mock.h boxes.h unicode.h tools.h config.h | check_dir
|
||||||
bxstring_test.o: bxstring_test.c bxstring_test.h boxes.h bxstring.h global_mock.h tools.h unicode.h utest_tools.h config.h | check_dir
|
bxstring_test.o: bxstring_test.c bxstring_test.h boxes.h bxstring.h global_mock.h tools.h unicode.h utest_tools.h config.h | check_dir
|
||||||
cmdline_test.o: cmdline_test.c cmdline_test.h boxes.h cmdline.h global_mock.h tools.h config.h | check_dir
|
cmdline_test.o: cmdline_test.c cmdline_test.h boxes.h cmdline.h global_mock.h tools.h config.h | check_dir
|
||||||
|
logging_test.o: logging_test.c logging_test.h boxes.h global_mock.h logging.h tools.h config.h | check_dir
|
||||||
tools_test.o: tools_test.c tools_test.h tools.h unicode.h config.h | check_dir
|
tools_test.o: tools_test.c tools_test.h tools.h unicode.h config.h | check_dir
|
||||||
regulex_test.o: regulex_test.c regulex_test.h boxes.h global_mock.h regulex.h config.h | check_dir
|
regulex_test.o: regulex_test.c regulex_test.h boxes.h global_mock.h regulex.h config.h | check_dir
|
||||||
remove_test.o: remove_test.c remove_test.h boxes.h remove.h shape.h tools.h unicode.h global_mock.h utest_tools.h config.h | check_dir
|
remove_test.o: remove_test.c remove_test.h boxes.h remove.h shape.h tools.h unicode.h global_mock.h utest_tools.h config.h | check_dir
|
||||||
|
252
utest/logging_test.c
Normal file
252
utest/logging_test.c
Normal file
@ -0,0 +1,252 @@
|
|||||||
|
/*
|
||||||
|
* boxes - Command line filter to draw/remove ASCII boxes around text
|
||||||
|
* Copyright (c) 1999-2024 Thomas Jensen and the boxes contributors
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public
|
||||||
|
* License, version 3, as published by the Free Software Foundation.
|
||||||
|
* This program 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 General Public License for more
|
||||||
|
* details.
|
||||||
|
* You should have received a copy of the GNU General Public License along with this program.
|
||||||
|
* If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
*
|
||||||
|
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Unit tests of the 'logging' module
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "config.h"
|
||||||
|
|
||||||
|
#include <setjmp.h>
|
||||||
|
#include <stdarg.h>
|
||||||
|
#include <stddef.h>
|
||||||
|
|
||||||
|
#include <cmocka.h>
|
||||||
|
|
||||||
|
#include "boxes.h"
|
||||||
|
#include "tools.h"
|
||||||
|
#include "logging.h"
|
||||||
|
#include "logging_test.h"
|
||||||
|
#include "global_mock.h"
|
||||||
|
#include "utest_tools.h"
|
||||||
|
|
||||||
|
|
||||||
|
int logging_setup(void **state)
|
||||||
|
{
|
||||||
|
UNUSED(state);
|
||||||
|
|
||||||
|
int *areas = (int *) calloc(NUM_LOG_AREAS, sizeof(int));
|
||||||
|
areas[MAIN - 2] = 1;
|
||||||
|
activate_debug_logging(areas);
|
||||||
|
BFREE(areas);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
int logging_teardown(void **state)
|
||||||
|
{
|
||||||
|
UNUSED(state);
|
||||||
|
|
||||||
|
activate_debug_logging(NULL); /* turn off debug logging */
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
void test_debug_shorten_nopath(void **state)
|
||||||
|
{
|
||||||
|
UNUSED(state);
|
||||||
|
|
||||||
|
log_debug("nopath.c", MAIN, "foo\n");
|
||||||
|
|
||||||
|
assert_int_equal(1, collect_err_size);
|
||||||
|
assert_string_equal("[nopath ] foo\n", collect_err[0]);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
void test_debug_shorten_minimal(void **state)
|
||||||
|
{
|
||||||
|
UNUSED(state);
|
||||||
|
|
||||||
|
log_debug("minimal", MAIN, "foo\n");
|
||||||
|
|
||||||
|
assert_int_equal(1, collect_err_size);
|
||||||
|
assert_string_equal("[minimal ] foo\n", collect_err[0]);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
void test_debug_shorten_null(void **state)
|
||||||
|
{
|
||||||
|
UNUSED(state);
|
||||||
|
|
||||||
|
log_debug(NULL, MAIN, "foo\n");
|
||||||
|
|
||||||
|
assert_int_equal(1, collect_err_size);
|
||||||
|
assert_string_equal("[NULL ] foo\n", collect_err[0]);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
void test_debug_shorten_backslash(void **state)
|
||||||
|
{
|
||||||
|
UNUSED(state);
|
||||||
|
|
||||||
|
log_debug("..\\path\\to\\module.c", MAIN, "foo\n");
|
||||||
|
|
||||||
|
assert_int_equal(1, collect_err_size);
|
||||||
|
assert_string_equal("[module ] foo\n", collect_err[0]);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
void test_debug_shorten_slash(void **state)
|
||||||
|
{
|
||||||
|
UNUSED(state);
|
||||||
|
|
||||||
|
log_debug("path/to/module.c", MAIN, "foo\n");
|
||||||
|
|
||||||
|
assert_int_equal(1, collect_err_size);
|
||||||
|
assert_string_equal("[module ] foo\n", collect_err[0]);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
void test_debug_shorten_nosuffix(void **state)
|
||||||
|
{
|
||||||
|
UNUSED(state);
|
||||||
|
|
||||||
|
log_debug("path/to/module", MAIN, "foo\n");
|
||||||
|
|
||||||
|
assert_int_equal(1, collect_err_size);
|
||||||
|
assert_string_equal("[module ] foo\n", collect_err[0]);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
void test_debug_shorten_wrongdot(void **state)
|
||||||
|
{
|
||||||
|
UNUSED(state);
|
||||||
|
|
||||||
|
log_debug("path/to.dot/module", MAIN, "foo\n");
|
||||||
|
|
||||||
|
assert_int_equal(1, collect_err_size);
|
||||||
|
assert_string_equal("[module ] foo\n", collect_err[0]);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
void test_debug_shorten_empty(void **state)
|
||||||
|
{
|
||||||
|
UNUSED(state);
|
||||||
|
|
||||||
|
log_debug("", MAIN, "foo\n");
|
||||||
|
|
||||||
|
assert_int_equal(1, collect_err_size);
|
||||||
|
assert_string_equal("[ ] foo\n", collect_err[0]);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
void test_debug_inactive_area(void **state)
|
||||||
|
{
|
||||||
|
UNUSED(state);
|
||||||
|
|
||||||
|
log_debug("module.c", LEXER, "foo\n");
|
||||||
|
|
||||||
|
assert_int_equal(0, collect_err_size);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
void test_debug_continue(void **state)
|
||||||
|
{
|
||||||
|
UNUSED(state);
|
||||||
|
|
||||||
|
log_debug_cont(MAIN, "foo");
|
||||||
|
|
||||||
|
assert_int_equal(1, collect_err_size);
|
||||||
|
assert_string_equal("foo", collect_err[0]);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
void test_debug_continue_inactive(void **state)
|
||||||
|
{
|
||||||
|
UNUSED(state);
|
||||||
|
|
||||||
|
log_debug_cont(LEXER, "foo");
|
||||||
|
|
||||||
|
assert_int_equal(0, collect_err_size);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
void test_debug_area_too_big(void **state)
|
||||||
|
{
|
||||||
|
UNUSED(state);
|
||||||
|
|
||||||
|
log_debug("module.c", 100, "foo\n"); /* 100 is way too large and does not exist */
|
||||||
|
|
||||||
|
assert_int_equal(0, collect_err_size);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
void test_debug_area_reserved(void **state)
|
||||||
|
{
|
||||||
|
UNUSED(state);
|
||||||
|
|
||||||
|
log_debug("module.c", RESERVED, "foo\n"); /* RESERVED may never be used and is always "inactive" */
|
||||||
|
|
||||||
|
assert_int_equal(0, collect_err_size);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
void test_debug_area_all(void **state)
|
||||||
|
{
|
||||||
|
UNUSED(state);
|
||||||
|
|
||||||
|
log_debug("module.c", ALL, "foo\n"); /* only MAIN is active, but not all of them */
|
||||||
|
|
||||||
|
assert_int_equal(0, collect_err_size);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
void test_debug_deactivated(void **state)
|
||||||
|
{
|
||||||
|
UNUSED(state);
|
||||||
|
|
||||||
|
activate_debug_logging(NULL);
|
||||||
|
log_debug("module.c", MAIN, "foo\n");
|
||||||
|
|
||||||
|
assert_int_equal(0, collect_err_size);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
void test_debug_all_active(void **state)
|
||||||
|
{
|
||||||
|
UNUSED(state);
|
||||||
|
|
||||||
|
int *areas = (int *) calloc(NUM_LOG_AREAS, sizeof(int));
|
||||||
|
for(size_t i = 0; i < NUM_LOG_AREAS; i++) {
|
||||||
|
areas[i] = 1;
|
||||||
|
}
|
||||||
|
activate_debug_logging(areas);
|
||||||
|
BFREE(areas);
|
||||||
|
|
||||||
|
log_debug("module.c", ALL, "foo\n");
|
||||||
|
|
||||||
|
assert_int_equal(1, collect_err_size);
|
||||||
|
assert_string_equal("[module ] foo\n", collect_err[0]);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* vim: set cindent sw=4: */
|
49
utest/logging_test.h
Normal file
49
utest/logging_test.h
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
/*
|
||||||
|
* boxes - Command line filter to draw/remove ASCII boxes around text
|
||||||
|
* Copyright (c) 1999-2024 Thomas Jensen and the boxes contributors
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public
|
||||||
|
* License, version 3, as published by the Free Software Foundation.
|
||||||
|
* This program 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 General Public License for more
|
||||||
|
* details.
|
||||||
|
* You should have received a copy of the GNU General Public License along with this program.
|
||||||
|
* If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
*
|
||||||
|
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Unit tests of the 'logging' module
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef LOGGING_TEST_H
|
||||||
|
#define LOGGING_TEST_H
|
||||||
|
|
||||||
|
#include "logging.h"
|
||||||
|
|
||||||
|
int logging_setup(void **state);
|
||||||
|
int logging_teardown(void **state);
|
||||||
|
|
||||||
|
void test_debug_shorten_nopath(void **state);
|
||||||
|
void test_debug_shorten_minimal(void **state);
|
||||||
|
void test_debug_shorten_null(void **state);
|
||||||
|
void test_debug_shorten_backslash(void **state);
|
||||||
|
void test_debug_shorten_slash(void **state);
|
||||||
|
void test_debug_shorten_nosuffix(void **state);
|
||||||
|
void test_debug_shorten_wrongdot(void **state);
|
||||||
|
void test_debug_shorten_empty(void **state);
|
||||||
|
void test_debug_inactive_area(void **state);
|
||||||
|
void test_debug_continue(void **state);
|
||||||
|
void test_debug_continue_inactive(void **state);
|
||||||
|
void test_debug_area_too_big(void **state);
|
||||||
|
void test_debug_area_reserved(void **state);
|
||||||
|
void test_debug_area_all(void **state);
|
||||||
|
void test_debug_deactivated(void **state);
|
||||||
|
void test_debug_all_active(void **state);
|
||||||
|
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
/* vim: set cindent sw=4: */
|
20
utest/main.c
20
utest/main.c
@ -28,6 +28,7 @@
|
|||||||
#include "global_mock.h"
|
#include "global_mock.h"
|
||||||
#include "bxstring_test.h"
|
#include "bxstring_test.h"
|
||||||
#include "cmdline_test.h"
|
#include "cmdline_test.h"
|
||||||
|
#include "logging_test.h"
|
||||||
#include "tools_test.h"
|
#include "tools_test.h"
|
||||||
#include "regulex_test.h"
|
#include "regulex_test.h"
|
||||||
#include "remove_test.h"
|
#include "remove_test.h"
|
||||||
@ -218,6 +219,24 @@ int main(void)
|
|||||||
cmocka_unit_test_setup(test_hmm_blank, beforeTest)
|
cmocka_unit_test_setup(test_hmm_blank, beforeTest)
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const struct CMUnitTest logging_tests[] = {
|
||||||
|
cmocka_unit_test_setup(test_debug_shorten_nopath, beforeTest),
|
||||||
|
cmocka_unit_test_setup(test_debug_shorten_minimal, beforeTest),
|
||||||
|
cmocka_unit_test_setup(test_debug_shorten_null, beforeTest),
|
||||||
|
cmocka_unit_test_setup(test_debug_shorten_backslash, beforeTest),
|
||||||
|
cmocka_unit_test_setup(test_debug_shorten_slash, beforeTest),
|
||||||
|
cmocka_unit_test_setup(test_debug_shorten_nosuffix, beforeTest),
|
||||||
|
cmocka_unit_test_setup(test_debug_shorten_wrongdot, beforeTest),
|
||||||
|
cmocka_unit_test_setup(test_debug_shorten_empty, beforeTest),
|
||||||
|
cmocka_unit_test_setup(test_debug_inactive_area, beforeTest),
|
||||||
|
cmocka_unit_test_setup(test_debug_continue, beforeTest),
|
||||||
|
cmocka_unit_test_setup(test_debug_continue_inactive, beforeTest),
|
||||||
|
cmocka_unit_test_setup(test_debug_area_too_big, beforeTest),
|
||||||
|
cmocka_unit_test_setup(test_debug_area_reserved, beforeTest),
|
||||||
|
cmocka_unit_test_setup(test_debug_area_all, beforeTest),
|
||||||
|
cmocka_unit_test_setup(test_debug_deactivated, beforeTest),
|
||||||
|
cmocka_unit_test_setup(test_debug_all_active, beforeTest)
|
||||||
|
};
|
||||||
|
|
||||||
int num_failed = 0;
|
int num_failed = 0;
|
||||||
num_failed += cmocka_run_group_tests(cmdline_tests, NULL, NULL);
|
num_failed += cmocka_run_group_tests(cmdline_tests, NULL, NULL);
|
||||||
@ -226,6 +245,7 @@ int main(void)
|
|||||||
num_failed += cmocka_run_group_tests(unicode_tests, NULL, NULL);
|
num_failed += cmocka_run_group_tests(unicode_tests, NULL, NULL);
|
||||||
num_failed += cmocka_run_group_tests(bxstring_tests, NULL, NULL);
|
num_failed += cmocka_run_group_tests(bxstring_tests, NULL, NULL);
|
||||||
num_failed += cmocka_run_group_tests(remove_tests, NULL, NULL);
|
num_failed += cmocka_run_group_tests(remove_tests, NULL, NULL);
|
||||||
|
num_failed += cmocka_run_group_tests(logging_tests, logging_setup, logging_teardown);
|
||||||
|
|
||||||
teardown();
|
teardown();
|
||||||
return num_failed;
|
return num_failed;
|
||||||
|
Loading…
Reference in New Issue
Block a user