[Libguestfs] [PATCH nbdkit v3 4/4] tests: Valgrind is only enabled when NBDKIT_VALGRIND = 1, not any other values.

Richard W.M. Jones rjones at redhat.com
Wed Nov 14 14:27:37 UTC 2018


Fix the tests so they only enable valgrind workarounds or skips when
NBDKIT_VALGRIND is exactly set to "1" and not any other values
(including empty string, or not set).

Thanks: Eric Blake.
---
 tests/test-dump-plugin.sh      | 3 ++-
 tests/test-ext2.c              | 4 +++-
 tests/test-help.sh             | 3 ++-
 tests/test-lang-plugins.c      | 4 +++-
 tests/test-ocaml.c             | 4 +++-
 tests/test-python-exception.sh | 2 +-
 tests/test-version.sh          | 3 ++-
 7 files changed, 16 insertions(+), 7 deletions(-)

diff --git a/tests/test-dump-plugin.sh b/tests/test-dump-plugin.sh
index dc52742..6e0e3d7 100755
--- a/tests/test-dump-plugin.sh
+++ b/tests/test-dump-plugin.sh
@@ -55,7 +55,8 @@ fi
 # However some of these tests are expected to fail.
 test ()
 {
-    case "$1${NBDKIT_VALGRIND:+-valgrind}" in
+    [ "$NBDKIT_VALGRIND" = "1" ] && vg="-valgrind"
+    case "$1$vg" in
         vddk | vddk-valgrind)
             # VDDK won't run without special environment variables
             # being set, so ignore it.
diff --git a/tests/test-ext2.c b/tests/test-ext2.c
index 6878028..59e9281 100644
--- a/tests/test-ext2.c
+++ b/tests/test-ext2.c
@@ -49,12 +49,14 @@ main (int argc, char *argv[])
 {
   guestfs_h *g;
   int r;
+  const char *s;
   char *data;
 
   /* The ext2 test fails valgrind.  It seems as if the ext2fs error
    * table cannot be freed.
    */
-  if (getenv ("NBDKIT_VALGRIND") != NULL) {
+  s = getenv ("NBDKIT_VALGRIND");
+  if (s && strcmp (s, "1") == 0) {
     fprintf (stderr, "ext2 test skipped under valgrind.\n");
     exit (77);                  /* Tells automake to skip the test. */
   }
diff --git a/tests/test-help.sh b/tests/test-help.sh
index 68e0bfc..8dc0675 100755
--- a/tests/test-help.sh
+++ b/tests/test-help.sh
@@ -45,7 +45,8 @@ fi
 # However some of these tests are expected to fail.
 test ()
 {
-    case "$1${NBDKIT_VALGRIND:+-valgrind}" in
+    [ "$NBDKIT_VALGRIND" = "1" ] && vg="-valgrind"
+    case "$1$vg" in
         vddk | vddk-valgrind)
             # VDDK won't run without special environment variables
             # being set, so ignore it.
diff --git a/tests/test-lang-plugins.c b/tests/test-lang-plugins.c
index 46b0563..f569540 100644
--- a/tests/test-lang-plugins.c
+++ b/tests/test-lang-plugins.c
@@ -49,6 +49,7 @@ main (int argc, char *argv[])
 {
   guestfs_h *g;
   int r;
+  const char *s;
   char *data;
 
   /* These languages currently fail completely when run under
@@ -56,7 +57,8 @@ main (int argc, char *argv[])
    */
 #pragma GCC diagnostic push
 #pragma GCC diagnostic ignored "-Wunused-result"
-  if (getenv ("NBDKIT_VALGRIND") != NULL &&
+  s = getenv ("NBDKIT_VALGRIND");
+  if (s && strcmp (s, "1") == 0 &&
       (strcmp (LANG, "python") == 0 ||
        strcmp (LANG, "ruby") == 0 ||
        strcmp (LANG, "tcl") == 0)) {
diff --git a/tests/test-ocaml.c b/tests/test-ocaml.c
index 4cae8a6..fa61966 100644
--- a/tests/test-ocaml.c
+++ b/tests/test-ocaml.c
@@ -49,13 +49,15 @@ main (int argc, char *argv[])
 {
   guestfs_h *g;
   int r;
+  const char *s;
   char *data;
   size_t i, size;
 
   /* The OCaml tests fail valgrind, so skip them.  We should be able
    * to get this working with a bit of effort.  XXX
    */
-  if (getenv ("NBDKIT_VALGRIND") != NULL) {
+  s = getenv ("NBDKIT_VALGRIND");
+  if (s && strcmp (s, "1") == 0) {
     fprintf (stderr, "ocaml test skipped under valgrind.\n");
     exit (77);                  /* Tells automake to skip the test. */
   }
diff --git a/tests/test-python-exception.sh b/tests/test-python-exception.sh
index 567853a..7813918 100755
--- a/tests/test-python-exception.sh
+++ b/tests/test-python-exception.sh
@@ -36,7 +36,7 @@ set -x
 
 # Python language leaks like a sieve as well as a lot of worrying
 # "Conditional jump or move depends on uninitialised value(s)".
-if test -n "$NBDKIT_VALGRIND"; then
+if [ "$NBDKIT_VALGRIND" = "1" ]; then
     echo "$0: skipping Python test under valgrind."
     exit 77
 fi
diff --git a/tests/test-version.sh b/tests/test-version.sh
index 869d88c..a3b8a18 100755
--- a/tests/test-version.sh
+++ b/tests/test-version.sh
@@ -45,7 +45,8 @@ fi
 # However some of these tests are expected to fail.
 test ()
 {
-    case "$1${NBDKIT_VALGRIND:+-valgrind}" in
+    [ "$NBDKIT_VALGRIND" = "1" ] && vg="-valgrind"
+    case "$1$vg" in
         vddk | vddk-valgrind)
             # VDDK won't run without special environment variables
             # being set, so ignore it.
-- 
2.19.0.rc0




More information about the Libguestfs mailing list