mirror of
https://git.proxmox.com/git/libgit2
synced 2025-05-02 19:32:23 +00:00
Add support for running the tests via valgrind
Add some makefile targets, which use valgrind's memcheck tool to run the tests, in order to help diagnose memory problems in the library. In addition, we enable the '--leak-check' option to report on any memory leaks. However, unlike the other memory problems reported by memcheck, memory leak reports do not result in an error exit from valgrind. (So memory leaks are reported on stderr, but don't halt the test run.) A suppressions file (tests.supp) is included since libz triggers some false positives. Signed-off-by: Ramsay Jones <ramsay@ramsay1.demon.co.uk>
This commit is contained in:
parent
04e8824004
commit
cac5d927b5
8
Makefile
8
Makefile
@ -44,6 +44,7 @@ TEST_OBJ = $(patsubst %.c,%.o,\
|
||||
$(wildcard tests/t[0-9][0-9][0-9][0-9]-*.c))
|
||||
TEST_EXE = $(patsubst %.o,%.exe,$(TEST_OBJ))
|
||||
TEST_RUN = $(patsubst %.exe,%.run,$(TEST_EXE))
|
||||
TEST_VAL = $(patsubst %.exe,%.val,$(TEST_EXE))
|
||||
|
||||
ifndef NO_OPENSSL
|
||||
SHA1_HEADER = <openssl/sha.h>
|
||||
@ -82,6 +83,9 @@ apidocs:
|
||||
test: $(GIT_LIB)
|
||||
@$(MAKE) -C tests --no-print-directory test
|
||||
|
||||
valgrind: $(GIT_LIB)
|
||||
@$(MAKE) -C tests --no-print-directory valgrind
|
||||
|
||||
sparse:
|
||||
cgcc -no-compile $(ALL_CFLAGS) $(SPARSE_FLAGS) $(SRC_C)
|
||||
|
||||
@ -116,7 +120,7 @@ $(GIT_LIB): $(OBJS)
|
||||
$(AR) $(GIT_LIB) $(OBJS)
|
||||
$(RANLIB) $(GIT_LIB)
|
||||
|
||||
$(TEST_OBJ) $(TEST_EXE) $(TEST_RUN):
|
||||
$(TEST_OBJ) $(TEST_EXE) $(TEST_RUN) $(TEST_VAL):
|
||||
@$(MAKE) -C tests --no-print-directory \
|
||||
OS=$(OS) NO_OPENSSL=$(NO_OPENSSL) $(@F)
|
||||
|
||||
@ -125,7 +129,7 @@ libgit2.pc: libgit2.pc.in
|
||||
|
||||
.PHONY: all
|
||||
.PHONY: clean
|
||||
.PHONY: test $(TEST_RUN) $(TEST_EXE) $(TEST_OBJ)
|
||||
.PHONY: test $(TEST_VAL) $(TEST_RUN) $(TEST_EXE) $(TEST_OBJ)
|
||||
.PHONY: apidocs
|
||||
.PHONY: install-headers
|
||||
.PHONY: install uninstall
|
||||
|
@ -9,6 +9,8 @@ CFLAGS = -g -O2 -Wall
|
||||
LIBS = -L.. -lgit2 -lz
|
||||
OS = unix
|
||||
|
||||
VFLAGS = -q --error-exitcode=1 --leak-check=yes --suppressions=../tests.supp
|
||||
|
||||
CRYPTO_LIB = -lcrypto
|
||||
|
||||
EXTRA_LIBS =
|
||||
@ -21,6 +23,7 @@ TEST_OBJ = $(patsubst %.c,%.o,\
|
||||
$(wildcard t[0-9][0-9][0-9][0-9]-*.c))
|
||||
TEST_EXE = $(patsubst %.o,%.exe,$(TEST_OBJ))
|
||||
TEST_RUN = $(patsubst %.exe,%.run,$(TEST_EXE))
|
||||
TEST_VAL = $(patsubst %.exe,%.val,$(TEST_EXE))
|
||||
|
||||
ifndef NO_OPENSSL
|
||||
EXTRA_LIBS += $(CRYPTO_LIB)
|
||||
@ -40,6 +43,8 @@ clean:
|
||||
|
||||
test: $(TEST_RUN)
|
||||
|
||||
valgrind: $(TEST_VAL)
|
||||
|
||||
.c.o:
|
||||
$(CC) $(ALL_CFLAGS) -c $< -o $@
|
||||
|
||||
@ -79,6 +84,15 @@ $(TEST_RUN): %.run: %.exe
|
||||
else rmdir $$t; exit 1; \
|
||||
fi
|
||||
|
||||
$(TEST_VAL): %.val: %.exe
|
||||
@t=trash-$(<F) && \
|
||||
mkdir $$t && \
|
||||
if (cd $$t && valgrind $(VFLAGS) ../$<); \
|
||||
then rm -rf $$t; \
|
||||
else rmdir $$t; exit 1; \
|
||||
fi
|
||||
|
||||
.PHONY: all
|
||||
.PHONY: clean
|
||||
.PHONY: test $(TEST_RUN)
|
||||
.PHONY: $(TEST_VAL)
|
||||
|
6
tests/tests.supp
Normal file
6
tests/tests.supp
Normal file
@ -0,0 +1,6 @@
|
||||
{
|
||||
ignore-zlib-cond
|
||||
Memcheck:Cond
|
||||
obj:*libz.so*
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user