]> granicus.if.org Git - curl/commitdiff
support the new libcurl IDN feature, also a first attempt to display a stack
authorDaniel Stenberg <daniel@haxx.se>
Fri, 30 Apr 2004 08:03:07 +0000 (08:03 +0000)
committerDaniel Stenberg <daniel@haxx.se>
Fri, 30 Apr 2004 08:03:07 +0000 (08:03 +0000)
trace if a test results in a 'core' file and gdb is present

tests/getpart.pm
tests/runtests.pl

index cb890d96a941a42e8470f1132699a00fb6e97a2f..897ac24bb6bd9b50357b8491a048e24b30bdf2cd 100644 (file)
@@ -27,7 +27,7 @@ sub getpartattr {
              ) {
             $inside++;
             my $attr=$1;
-            my @p=split("[ \t]", $attr);
+            my @p=split("[\t]", $attr);
             my $assign;
 
             foreach $assign (@p) {
index 9ab962fe6452e8b586a6a009f28e765c3351fa98..305cde92a3700b6af4639c9c3e01208e662ed598 100755 (executable)
@@ -75,9 +75,11 @@ my $memanalyze="./memanalyze.pl";
 
 my $stunnel = checkcmd("stunnel");
 my $valgrind = checkcmd("valgrind");
+my $gdb = checkcmd("gdb");
 
 my $ssl_version; # set if libcurl is built with SSL support
 my $large_file;  # set if libcurl is built with large file support
+my $has_idn;     # set if libcurl is built with IDN support
 
 my $skipped=0;  # number of tests skipped; reported in main loop
 my %skipped;    # skipped{reason}=counter, reasons for skip
@@ -739,6 +741,10 @@ sub checkcurl {
                 # large file support
                 $large_file=1;
             }
+            if($feat =~ /IDN/i) {
+                # IDN support
+                $has_idn=1;
+            }
         }
     }
     if(!$curl) {
@@ -821,6 +827,11 @@ sub singletest {
                 next;
             }
         }
+        elsif($f eq "idn") {
+            if($has_idn) {
+                next;
+            }
+        }
 
         $why = "curl lacks $f support";
         $serverproblem = 15; # set it here
@@ -1035,6 +1046,9 @@ sub singletest {
 
     print CMDLOG "$CMDLINE\n";
 
+    unlink("core");
+
+    my $dumped_core;
     my $cmdres;
     # run the command line we built
     if($gdbthis) {
@@ -1048,7 +1062,7 @@ sub singletest {
     else {
         $cmdres = system("$CMDLINE");
         my $signal_num  = $cmdres & 127;
-        my $dumped_core = $cmdres & 128;
+        $dumped_core = $cmdres & 128;
 
         if(!$anyway && ($signal_num || $dumped_core)) {
             $cmdres = 1000;
@@ -1057,6 +1071,24 @@ sub singletest {
             $cmdres /= 256;
         }
     }
+    if(!$dumped_core) {
+        if(-r "core") {
+            # there's core file present now!
+            $dumped_core = 1;
+        }
+    }
+
+    if($dumped_core) {
+        print "core dumped!\n";
+        if($gdb) {
+            print "running gdb for post-mortem analysis:\n";
+            open(GDBCMD, ">log/gdbcmd2");
+            print GDBCMD "bt\n";
+            close(GDBCMD);
+            system("gdb --directory libtest -x log/gdbcmd2 -batch $DBGCURL core ");
+     #       unlink("log/gdbcmd2");
+        }
+    }
 
     # remove the special FTP command file after each test!
     unlink($FTPDCMD);
@@ -1127,7 +1159,7 @@ sub singletest {
         }
 
         for(@strip) {
-            # strip all patterns from both arrays
+            # strip off all lines that match the patterns from both arrays
             chomp $_;
             @out = striparray( $_, \@out);
             @protstrip= striparray( $_, \@protstrip);