summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile8
-rw-r--r--tests/Makefile14
-rw-r--r--tests/tests.supp6
3 files changed, 26 insertions, 2 deletions
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 = <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*
+}
+