Pass VALGRIND in to runtest. When it's set, redefine spawn to use it for
authorKen Raeburn <raeburn@mit.edu>
Sun, 15 Oct 2006 08:37:35 +0000 (08:37 +0000)
committerKen Raeburn <raeburn@mit.edu>
Sun, 15 Oct 2006 08:37:35 +0000 (08:37 +0000)
most commands starting with "/" but not "/bin/sh" and certain others.

git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@18710 dc483132-0cff-0310-8789-dd5450dbe970

src/tests/dejagnu/Makefile.in
src/tests/dejagnu/config/default.exp

index 60838bccc960628b088e42fcf373fbb1d4484d45..61fbed088fa1c929ea3718ac2d6033ad3bcd8178 100644 (file)
@@ -22,7 +22,7 @@ check-runtest-no::
        @echo "+++"
 
 check-runtest-yes:: t_inetd site.exp
-       $(RUNTEST) --tool krb --srcdir $(srcdir) $(KRB4_RUNTESTFLAGS) PRIOCNTL_HACK=@PRIOCNTL_HACK@ $(RUNTESTFLAGS)
+       $(RUNTEST) --tool krb --srcdir $(srcdir) $(KRB4_RUNTESTFLAGS) PRIOCNTL_HACK=@PRIOCNTL_HACK@ VALGRIND="$(VALGRIND)" $(RUNTESTFLAGS)
 
 t_inetd:: t_inetd.o $(KRB5_BASE_DEPLIBS)
        $(CC_LINK) -o t_inetd t_inetd.o $(KRB5_BASE_LIBS)
@@ -44,7 +44,6 @@ runenv.vals: runenv.vars
 site.exp: runenv.vals Makefile
        echo "set runvarlist [list `cat runenv.vals | tr '\n' ' '`]" | \
                sed -e 's%=\.%='`pwd`'/.%g' > site.exp
-       echo "set VALGRIND {$(VALGRIND)}" >> site.exp
        echo "set KRB5_DB_MODULE_DIR {$(KRB5_DB_MODULE_DIR)}" >> site.exp
 
 # +++ Dependency line eater +++
index 7f964a3415295713beae5eedcaee443cf0d09da0..0c40553ff72429585ee1ca9f4772fbe74d5f2fc8 100644 (file)
@@ -54,6 +54,46 @@ if 0 {
     }
 }
 
+if { [string length $VALGRIND] } {
+    rename spawn valgrind_aux_spawn
+    proc spawn { args } {
+       global VALGRIND
+       upvar 1 spawn_id spawn_id
+       set newargs {}
+       set inflags 1
+       set eatnext 0
+       foreach arg $args {
+           if { $arg == "-ignore" \
+                    || $arg == "-open" \
+                    || $arg == "-leaveopen" } {
+               lappend newargs $arg
+               set eatnext 1
+               continue
+           }
+           if [string match "-*" $arg] {
+               lappend newargs $arg
+               continue
+           }
+           if { $eatnext } {
+               set eatnext 0
+               lappend newargs $arg
+               continue
+           }
+           if { $inflags } {
+               set inflags 0
+               # Only run valgrind for local programs, not
+               # system ones.
+               if [string match "/" [string index $arg 0]]&&![string match "/bin/sh" $arg]&&![string match "/bin/ls" $arg]&&![regexp {/kshd$} $arg] {
+                   set newargs [concat $newargs $VALGRIND]
+               }
+           }
+           lappend newargs $arg
+       }
+       set pid [eval valgrind_aux_spawn $newargs]
+       return $pid
+    }
+}
+
 # Hack around Solaris 9 kernel race condition that causes last output
 # from a pty to get dropped.
 if { $PRIOCNTL_HACK } {