]> The Tcpdump Group git mirrors - tcpdump/commitdiff
make check needs to work in build directories
authorMichael Richardson <[email protected]>
Fri, 16 Aug 2019 19:30:31 +0000 (15:30 -0400)
committerFrancois-Xavier Le Bail <[email protected]>
Tue, 27 Aug 2019 09:20:43 +0000 (11:20 +0200)
Makefile.in
tests/TESTonce
tests/TESTrun.sh

index b84c9da8a81d29fa2711761fecffaebc6b582f32..66cd7df40955fcd7fb36328fea063afb3545e0bc 100644 (file)
@@ -438,7 +438,7 @@ distclean:
        rm -rf autom4te.cache tests/DIFF tests/NEW
 
 check: tcpdump
-       (cd tests && ./TESTrun.sh)
+       (mkdir -p tests && cd tests && SRCDIR=${srcdir} ${srcdir}/tests/TESTrun.sh )
 
 extags: $(TAGFILES)
        ctags $(TAGFILES)
index 340f3578c84f1fa24b500ae2c4e042d68dc7770e..c4ba2f8494ad133e5019b28ba93355e463b2ecf9 100755 (executable)
@@ -1,5 +1,7 @@
 #!/usr/bin/env perl
 
+use File::Basename;
+
 system("mkdir -p NEW DIFF");
 
 if(@ARGV != 4) {
@@ -14,38 +16,40 @@ $options=$ARGV[3];
 
 my $r;
 
+$outputbase = basename($output);
+
 if ($^O eq 'MSWin32') {
-    $r = system "..\\windump -n -t -r $input $options 2>NUL | sed 's/\\r//' | tee NEW/$output | diff $output - >DIFF/$output.diff";
+    $r = system "..\\windump -n -t -r $input $options 2>NUL | sed 's/\\r//' | tee NEW/$outputbase | diff $output - >DIFF/$outputbase.diff";
     # need to do same as below for Cygwin.
 }
 else {
     # we used to do this as a nice pipeline, but the problem is that $r fails to
     # to be set properly if the tcpdump core dumps.
-    $r = system "../tcpdump 2>/dev/null -n -t -r $input $options >NEW/$output";
+    $r = system "../tcpdump 2>/dev/null -n -t -r $input $options >NEW/$outputbase";
     if($r != 0) {
         # this means tcpdump failed.
-        open(OUTPUT, ">>"."NEW/$output") || die "fail to open $output\n";
+        open(OUTPUT, ">>"."NEW/$outputbase") || die "fail to open $outputbase\n";
         printf OUTPUT "EXIT CODE %08x\n", $r;
         close(OUTPUT);
         $r = 0;
     }
     if($r == 0) {
-        $r = system "cat NEW/$output | diff $output - >DIFF/$output.diff";
+        $r = system "cat NEW/$outputbase | diff $output - >DIFF/$outputbase.diff";
     }
     #print sprintf("END: %08x\n", $r);
 }
 
 if($r == 0) {
   printf "    %-35s: passed\n", $name;
-  unlink "DIFF/$output.diff";
+  unlink "DIFF/$outputbase.diff";
   exit 0;
 }
 printf "    %-35s: TEST FAILED(%s)", $name, $r == -1 ? $! : "exit $?";
 open FOUT, '>>failure-outputs.txt';
 printf FOUT "\nFailed test: $name\n\n";
 close FOUT;
-if(-f "DIFF/$output.diff") {
-    system "cat DIFF/$output.diff >> failure-outputs.txt";
+if(-f "DIFF/$outputbase.diff") {
+    system "cat DIFF/$outputbase.diff >> failure-outputs.txt";
 }
 
 if($r == -1) {
index 98e644bfa2bc42d29f2dc6fb97b087614cadeb9d..366abb99cba5559cfa1a25c9a598c95569bfbcd7 100755 (executable)
@@ -1,15 +1,19 @@
 #!/bin/sh
 
+srcdir=${SRCDIR-..}
+
+echo RUNNING from ${srcdir}
+
 mkdir -p NEW
 mkdir -p DIFF
 cat /dev/null > failure-outputs.txt
 
 runComplexTests()
 {
-  for i in *.sh
+  for i in ${srcdir}/*.sh
   do
-    case $i in TEST*.sh) continue;; esac
-    sh ./$i
+    case $i in ${srcdir}/TEST*.sh) continue;; esac
+    sh ./$i ${srcdir}
   done
   passed=`cat .passed`
   failed=`cat .failed`
@@ -18,7 +22,7 @@ runComplexTests()
 runSimpleTests()
 {
   only=$1
-  cat TESTLIST | while read name input output options
+  cat ${srcdir}/tests/TESTLIST | while read name input output options
   do
     case $name in
       \#*) continue;;
@@ -26,7 +30,8 @@ runSimpleTests()
     esac
     rm -f core
     [ "$only" != "" -a "$name" != "$only" ] && continue
-    if ./TESTonce $name $input $output "$options"
+    export SRCDIR=${srcdir}
+    if ${srcdir}/tests/TESTonce $name ${srcdir}/tests/$input ${srcdir}/tests/$output "$options"
     then
       passed=`expr $passed + 1`
       echo $passed >.passed