diff options
| author | Ramsay Jones <ramsay@ramsay1.demon.co.uk> | 2009-08-27 16:11:07 +0100 |
|---|---|---|
| committer | Ramsay Jones <ramsay@ramsay1.demon.co.uk> | 2009-10-13 16:23:54 +0100 |
| commit | cac5d927b51bf378cf599a02d38538cf7ab70146 (patch) | |
| tree | 94996dfd9511a12bfa9190d97d33d2bf6599f1fd | |
| parent | 04e8824004970f6889b9df126b5db343013c82c9 (diff) | |
| download | libgit2-cac5d927b51bf378cf599a02d38538cf7ab70146.tar.gz | |
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>
| -rw-r--r-- | Makefile | 8 | ||||
| -rw-r--r-- | tests/Makefile | 14 | ||||
| -rw-r--r-- | tests/tests.supp | 6 |
3 files changed, 26 insertions, 2 deletions
@@ -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 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-$(<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) diff --git a/tests/tests.supp b/tests/tests.supp new file mode 100644 index 000000000..fe9d965dc --- /dev/null +++ b/tests/tests.supp @@ -0,0 +1,6 @@ +{ + ignore-zlib-cond + Memcheck:Cond + obj:*libz.so* +} + |
