From cac5d927b51bf378cf599a02d38538cf7ab70146 Mon Sep 17 00:00:00 2001 From: Ramsay Jones Date: Thu, 27 Aug 2009 16:11:07 +0100 Subject: [PATCH] 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 --- Makefile | 8 ++++++-- tests/Makefile | 14 ++++++++++++++ tests/tests.supp | 6 ++++++ 3 files changed, 26 insertions(+), 2 deletions(-) create mode 100644 tests/tests.supp diff --git a/Makefile b/Makefile index 8839d5b02..dfae6ed8f 100644 --- a/Makefile +++ b/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 = @@ -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 diff --git a/tests/Makefile b/tests/Makefile index 7ce510638..813b24636 100644 --- a/tests/Makefile +++ b/tests/Makefile @@ -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-$(