add tests to build system
This commit is contained in:
parent
bad1a6308f
commit
60fa67b590
4 changed files with 74 additions and 13 deletions
39
Makefile
39
Makefile
|
@ -7,36 +7,51 @@ CFLAGS = -fPIC -g -O2 -std=c99 \
|
|||
-Wold-style-definition \
|
||||
-Woverflow \
|
||||
-Wpointer-arith \
|
||||
-Wstrict-prototypes \
|
||||
-Wunused \
|
||||
-Wvla
|
||||
|
||||
LDFLAGS = -g -shared
|
||||
LDFLAGS = -g
|
||||
LDLIBS =
|
||||
|
||||
TARGET_LIB = mulithash.so
|
||||
|
||||
SRCS = errors.c
|
||||
OBJS = $(subst .c,.o,$(SRCS))
|
||||
OBJS = $(SRCS:.c=.o)
|
||||
|
||||
all: ${TARGET_LIB}
|
||||
|
||||
$(TARGET_LIB): $(OBJS)
|
||||
$(CC) ${LDFLAGS} -o $@ $^
|
||||
$(CC) -g -shared -o $@ $^
|
||||
|
||||
depend: .depend
|
||||
# Tests
|
||||
|
||||
.depend: $(SRCS)
|
||||
rm -f ./.depend
|
||||
$(CC) $(CFLAGS) -MM $^>>./.depend;
|
||||
TEST_SRCS = $(wildcard test/test_*.c)
|
||||
TEST_OBJS = $(TEST_SRCS:.c=.o)
|
||||
TEST_BINS = $(TEST_OBJS:.o=.out)
|
||||
|
||||
PHONY += tests
|
||||
tests: $(TEST_BINS)
|
||||
@for t in $^; do \
|
||||
echo; \
|
||||
echo '***' "$$t" '***'; \
|
||||
LD_LIBRARY_PATH=. "./$$t"; \
|
||||
echo; \
|
||||
done
|
||||
|
||||
|
||||
test/test_%.out: test/test_%.o $(TARGET_LIB)
|
||||
$(CC) $(LDFLAGS) $(TARGET_LIB) $^ -o $@
|
||||
|
||||
# Utils
|
||||
|
||||
PHONY += clean dist-clean
|
||||
|
||||
clean:
|
||||
$(RM) $(OBJS)
|
||||
$(RM) $(TEST_OBJS)
|
||||
$(RM) $(TEST_BINS)
|
||||
$(RM) $(TARGET_LIB)
|
||||
|
||||
dist-clean: clean
|
||||
$(RM) *~ .depend
|
||||
|
||||
.PHONY: all depend clean dist-clean
|
||||
|
||||
include .depend
|
||||
.PHONY: $(PHONY)
|
||||
|
|
5
errors.h
5
errors.h
|
@ -6,7 +6,10 @@ typedef enum {
|
|||
MH_E_UNKNOWN_CODE = -1,
|
||||
MH_E_TOO_SHORT = -2,
|
||||
MH_E_TOO_LONG = -3,
|
||||
MH_E_LEN_NOT_SUPPORTED = -4
|
||||
MH_E_LEN_NOT_SUPPORTED = -4,
|
||||
|
||||
// Should be always last, if you are adding error update this code.
|
||||
MH_E_LAST = -5
|
||||
} mh_error;
|
||||
|
||||
const char *mh_error_string(mh_error code);
|
||||
|
|
5
test/minunit.h
Normal file
5
test/minunit.h
Normal file
|
@ -0,0 +1,5 @@
|
|||
/* vim: set ts=8 sw=8 noexpandtab: */
|
||||
#define mu_assert(message, test) do { if (!(test)) return message; } while (0)
|
||||
#define mu_run_test(test) do { char *message = test(); tests_run++; \
|
||||
if (message) return message; } while (0)
|
||||
extern int tests_run;
|
38
test/test_error_string.c
Normal file
38
test/test_error_string.c
Normal file
|
@ -0,0 +1,38 @@
|
|||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include "minunit.h"
|
||||
|
||||
#include "../errors.h"
|
||||
|
||||
int tests_run = 0;
|
||||
char error_buf[256];
|
||||
|
||||
|
||||
static char *test_error_messages_exist(void) {
|
||||
int i = -1;
|
||||
for (; i > MH_E_LAST; i--) {
|
||||
sprintf(error_buf, "error: code %d has no message", i);
|
||||
mu_assert(error_buf, strlen(mh_error_string((mh_error) i)));
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static char *all_tests(void) {
|
||||
mu_run_test(test_error_messages_exist);
|
||||
return 0;
|
||||
}
|
||||
|
||||
int main(void) {
|
||||
char *result = all_tests();
|
||||
if (result != 0) {
|
||||
printf("%s\n", result);
|
||||
}
|
||||
else {
|
||||
printf("ALL TESTS PASSED\n");
|
||||
}
|
||||
printf("Tests run: %d\n", tests_run);
|
||||
|
||||
return result != 0;
|
||||
}
|
||||
|
Loading…
Reference in a new issue