On 11/14/18 8:27 AM, Richard W.M. Jones wrote:
 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.
 --- 
 +++ 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 
Could misbehave if I have 'export vg=-valgrind' in my environment but 
not NBDKIT_VALGRIND (cure by prepping with 'vg=' before the [...]).  Not 
sure if that is worth worrying about (someone playing that hard with 
their environment to try and break the testsuite deserves their problems).
Bash has sane rules even if I have NBDKIT_VALGRIND='!' or 
NBDKIT_VALGRIND='(', but not all other implementations do; the most 
common ways to ensure that user-supplied input can't cause an unexpected 
misparse of [ is to use either '[ "x$NBDKIT_VALGRIND" = "x1"
]' or '[ 1 
= "$NBDKIT_VALGRIND" ]'.  Not sure if that is worth worrying about, 
since the tests require bash.
 +++ 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)) { 
Do we still need the #pragma here?
Series is looking good now.
-- 
Eric Blake, Principal Software Engineer
Red Hat, Inc.           +1-919-301-3266
Virtualization:  
qemu.org | 
libvirt.org