[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: valgrind-tests.m4
From: |
Simon Josefsson |
Subject: |
Re: valgrind-tests.m4 |
Date: |
Wed, 19 May 2010 08:41:29 +0200 |
User-agent: |
Gnus/5.110011 (No Gnus v0.11) Emacs/23.1 (gnu/linux) |
Ralf Wildenhues <address@hidden> writes:
> * Simon Josefsson wrote on Tue, May 18, 2010 at 09:36:44AM CEST:
>> Ralf Wildenhues writes:
>> > Well, one could prepend LOG_COMPILER (the default variable that doesn't
>> > go with any specified extension) or have the developer specify some
>> > other extension. Your macro could just set some variable that the
>> > package author prepends to the needed variables: one of the
>> > *LOG_COMPILER ones if parallel-tests is used, and TESTS_ENVIRONMENT
>> > otherwise. That would leave the most flexibility, but of course require
>> > a bit more work for the package author.
>>
>> How would this solve the problem of running valgrind on scripts? I'm
>> not familiar with the new parallel-tests stuff, but isn't LOG_COMPILER
>> applied for all extensions?
>
> LOG_COMPILER is used for all tests which do not match any of the
> extensions given in TEST_EXTENSIONS.
I see. That explains it.
>> I don't think I see what advantage your model would give compare to my
>> proposal.
>
> It gives efficiency, as already mentioned elsewhere; and also there is
> no need for a different proposal, it works with your proposed patch:
>
> You would be using something like
> TESTS_ENVIRONMENT = $(VALGRIND)
>
> and I would be using something like
> AUTOMAKE_OPTIONS = parallel-tests
> TEST_EXTENSIONS = .pl .sh
> LOG_COMPILER = $(VALGRIND)
>
> and maybe also use
> TESTS_ENVIRONMENT = VALGRIND='$(VALGRIND)'
>
> and then, in my shell script tests, prepend $VALGRIND to executables
> that are interesting.
Sounds good. I've improved the documentation. How about this patch?
/Simon
>From 79e078df5d62ddd13aa173d1f62c22010f1b3c07 Mon Sep 17 00:00:00 2001
From: Simon Josefsson <address@hidden>
Date: Wed, 19 May 2010 08:41:10 +0200
Subject: [PATCH] valgrind-tests: New module.
---
ChangeLog | 8 ++++++++
doc/gnulib.texi | 3 +++
doc/valgrind-tests.texi | 38 ++++++++++++++++++++++++++++++++++++++
m4/valgrind-tests.m4 | 34 ++++++++++++++++++++++++++++++++++
modules/valgrind-tests | 11 +++++++++++
5 files changed, 94 insertions(+), 0 deletions(-)
create mode 100644 doc/valgrind-tests.texi
create mode 100644 m4/valgrind-tests.m4
create mode 100644 modules/valgrind-tests
diff --git a/ChangeLog b/ChangeLog
index 76f0077..090f898 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2010-05-17 Simon Josefsson <address@hidden>
+
+ * modules/valgrind-tests: New file.
+ * m4/valgrind-tests.m4: New file.
+ * doc/valgrind-tests.texi: New file.
+ * doc/gnulib.texi (Running self-tests under valgrind): New
+ section.
+
2010-05-18 Paolo Bonzini <address@hidden>
Bruno Haible <address@hidden>
diff --git a/doc/gnulib.texi b/doc/gnulib.texi
index 62f969e..4cbc9e7 100644
--- a/doc/gnulib.texi
+++ b/doc/gnulib.texi
@@ -6416,6 +6416,7 @@ This list of functions is sorted according to the header
that declares them.
* func::
* warnings::
* manywarnings::
+* Running self-tests under valgrind::
@end menu
@node alloca
@@ -6514,6 +6515,8 @@ generated automatically.
@include manywarnings.texi
address@hidden valgrind-tests.texi
+
@node GNU Free Documentation License
@appendix GNU Free Documentation License
diff --git a/doc/valgrind-tests.texi b/doc/valgrind-tests.texi
new file mode 100644
index 0000000..e76b2fb
--- /dev/null
+++ b/doc/valgrind-tests.texi
@@ -0,0 +1,38 @@
address@hidden Running self-tests under valgrind
address@hidden Running self-tests under valgrind
+
+For projects written in C or similar languages, running the self-tests
+under Valgrind can reveal hard to find memory issues. The
address@hidden module searches for Valgrind and declares the
address@hidden automake variable for use with automake's
address@hidden
+
+After importing the @code{valgrind-tests} module to your project, you
+use it by adding the following to the @code{Makefile.am} that runs the
+self-tests:
+
address@hidden
+TESTS_ENVIRONMENT = $(VALGRIND)
address@hidden smallexample
+
+This will run all self-checks under valgrind. This can be wasteful if
+you have many shell scripts or other non-binaries. Using the Automake
+parallel-tests feature, this can be avoided by using the following
+instead:
+
address@hidden
+AUTOMAKE_OPTIONS = parallel-tests
+TEST_EXTENSIONS = .pl .sh
+LOG_COMPILER = $(VALGRIND)
address@hidden smallexample
+
+Then valgrind will only be used for the non-.sh and non-.pl binaries.
+However, this means that binaries invoked through scripts will not be
+invoked under valgrind, which could be solved by adding the following:
+
address@hidden
+TESTS_ENVIRONMENT = VALGRIND='$(VALGRIND)'
address@hidden smallexample
+
+And then modify the shell scripts to invoke the binary prefixed with
address@hidden
diff --git a/m4/valgrind-tests.m4 b/m4/valgrind-tests.m4
new file mode 100644
index 0000000..e2434c6
--- /dev/null
+++ b/m4/valgrind-tests.m4
@@ -0,0 +1,34 @@
+# valgrind-tests.m4 serial 1
+dnl Copyright (C) 2008, 2009, 2010 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl From Simon Josefsson
+
+# gl_VALGRIND_TESTS()
+# -------------------
+# Check if valgrind is available, and set VALGRIND to it if available.
+AC_DEFUN([gl_VALGRIND_TESTS],
+[
+ AC_ARG_ENABLE(valgrind-tests,
+ AS_HELP_STRING([--enable-valgrind-tests],
+ [run self tests under valgrind]),
+ [opt_valgrind_tests=$enableval], [opt_valgrind_tests=yes])
+
+ # Run self-tests under valgrind?
+ if test "$opt_valgrind_tests" = "yes" && test "$cross_compiling" = no; then
+ AC_CHECK_PROGS(VALGRIND, valgrind)
+ fi
+
+ if test -n "$VALGRIND" && $VALGRIND -q true > /dev/null 2>&1; then
+ opt_valgrind_tests=yes
+ VALGRIND="$VALGRIND -q"
+ else
+ opt_valgrind_tests=no
+ VALGRIND=
+ fi
+
+ AC_MSG_CHECKING([whether self tests are run under valgrind])
+ AC_MSG_RESULT($opt_valgrind_tests)
+])
diff --git a/modules/valgrind-tests b/modules/valgrind-tests
new file mode 100644
index 0000000..b9f5682
--- /dev/null
+++ b/modules/valgrind-tests
@@ -0,0 +1,11 @@
+Description:
+Macro to search for valgrind, for self-tests.
+
+Files:
+m4/valgrind-tests.m4
+
+License:
+unlimited
+
+Maintainer:
+Simon Josefsson
--
1.7.1
- Re: valgrind-tests.m4, (continued)
Re: valgrind-tests.m4, Bruno Haible, 2010/05/18
Re: valgrind-tests.m4, Ralf Wildenhues, 2010/05/17
- Re: valgrind-tests.m4, Simon Josefsson, 2010/05/17
- Re: valgrind-tests.m4, Ralf Wildenhues, 2010/05/17
- Re: valgrind-tests.m4, Simon Josefsson, 2010/05/18
- Re: valgrind-tests.m4, Ralf Wildenhues, 2010/05/19
- Re: valgrind-tests.m4,
Simon Josefsson <=
- Re: valgrind-tests.m4, Ralf Wildenhues, 2010/05/20
- Re: valgrind-tests.m4, Simon Josefsson, 2010/05/20
- Re: valgrind-tests.m4, Simon Josefsson, 2010/05/20
Re: valgrind-tests.m4, Bruno Haible, 2010/05/18
Re: valgrind-tests.m4, Simon Josefsson, 2010/05/18
Re: valgrind-tests.m4, Bruno Haible, 2010/05/19
Re: valgrind-tests.m4, Ralf Wildenhues, 2010/05/20
Re: valgrind-tests.m4, Ben Pfaff, 2010/05/20
Re: valgrind-tests.m4, Ralf Wildenhues, 2010/05/20