Setup basic structure for test runner

This commit is contained in:
Nick Chambers 2022-06-29 01:56:32 -05:00
parent 6c046b77bc
commit 48c8e7f92c
4 changed files with 78 additions and 8 deletions

View File

@ -1,7 +1,13 @@
CFLAGS ?= -Wall -Wextra -g -O1 -fpic
LDFLAGS ?= -g -O1 -shared
CFLAGS ?= -Wall -Wextra -g -O1
LDFLAGS ?= -g -O1
LIB_CFLAGS ?= -fpic
LIB_LDFLAGS ?= -shared
GARGOYLE_OBJS := gargoyle sleuth twine scribe
# temporary until there are tests for all source files
GARGOYLE_TEST_OBJS := runner twine
.PHONY: all gargoyle init docs test clean
all: gargoyle
@ -11,19 +17,25 @@ gargoyle: bin/libgargoyle.so
init: bin
bin:
mkdir -p -- bin
mkdir -p -- bin/test
bin/libgargoyle.so: $(addprefix bin/,$(addsuffix .o,$(GARGOYLE_OBJS)))
cc $(LDFLAGS) -o $@ $^
cc $(LDFLAGS) $(LIB_LDFLAGS) -o $@ $^
bin/%.o: src/%.c | init
cc $(CFLAGS) -std=c99 -I include -c -o $@ $<
cc $(CFLAGS) $(LIB_CFLAGS) -std=c99 -I include -c -o $@ $<
docs:
@printf "not implemented yet.\n" >&2
test:
@printf "not implemented yet.\n" >&2
test: bin/libgargoyle.so bin/gargoyle
bin/gargoyle: $(addprefix bin/test/,$(addsuffix .o,$(GARGOYLE_TEST_OBJS)))
cc $(LDFLAGS) -L bin -o $@ $^ -l gargoyle -l cunit
bin/gargoyle
bin/test/%.o: test/%.c | init
cc $(CFLAGS) -std=c99 -I include -c -o $@ $<
clean:
rm -rf -- bin/*
rm -rf -- bin

View File

@ -0,0 +1,8 @@
#ifndef GARGOYLE_TEST_TWINE_H_
#define GARGOYLE_TEST_TWINE_H_
int init_suite_twine(void);
int clean_suite_twine(void);
void twine_test_is_sep(void);
#endif

32
test/runner.c Normal file
View File

@ -0,0 +1,32 @@
#include <CUnit/Basic.h>
#include <CUnit/TestDB.h>
#include <gargoyle/test/twine.h>
int main() {
if(CU_initialize_registry() != CUE_SUCCESS) {
return CU_get_error();
}
CU_TestInfo twine_tests[] = {
{ "is_sep", twine_test_is_sep },
CU_TEST_INFO_NULL,
};
CU_SuiteInfo suites[] = {
// { "gargoyle", init_suite_gargoyle, clean_suite_gargoyle, NULL, NULL, gargoyle_tests },
// { "scribe", init_suite_scribe, clean_suite_scribe, NULL, NULL, scribe_tests },
// { "sleuth", init_suite_sleuth, clean_suite_sleuth, NULL, NULL, sleuth_tests },
{ "twine", init_suite_twine, clean_suite_twine, NULL, NULL, twine_tests },
CU_SUITE_INFO_NULL,
};
if(CU_register_suites(suites) != CUE_SUCCESS) {
CU_cleanup_registry();
return CU_get_error();
}
CU_basic_set_mode(CU_BRM_VERBOSE);
CU_basic_run_tests();
CU_cleanup_registry();
return CU_get_error();
}

18
test/twine.c Normal file
View File

@ -0,0 +1,18 @@
#include <CUnit/Basic.h>
#include <gargoyle/test/twine.h>
#include <gargoyle/twine.h>
int init_suite_twine(void) {
return CUE_SUCCESS;
}
int clean_suite_twine(void) {
return CUE_SUCCESS;
}
void twine_test_is_sep(void) {
CU_ASSERT_TRUE(is_sep('-'));
CU_ASSERT_TRUE(is_sep('_'));
CU_ASSERT_FALSE(is_sep('*'));
CU_ASSERT_FALSE(is_sep('u'));
}