From e2aaf22d5d46e01323ce495f2f0e3587933b2fdb Mon Sep 17 00:00:00 2001 From: Daniel Stenberg Date: Fri, 30 Apr 2004 08:03:07 +0000 Subject: [PATCH] support the new libcurl IDN feature, also a first attempt to display a stack trace if a test results in a 'core' file and gdb is present --- tests/getpart.pm | 2 +- tests/runtests.pl | 36 ++++++++++++++++++++++++++++++++++-- 2 files changed, 35 insertions(+), 3 deletions(-) diff --git a/tests/getpart.pm b/tests/getpart.pm index cb890d96a..897ac24bb 100644 --- a/tests/getpart.pm +++ b/tests/getpart.pm @@ -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) { diff --git a/tests/runtests.pl b/tests/runtests.pl index 9ab962fe6..305cde92a 100755 --- a/tests/runtests.pl +++ b/tests/runtests.pl @@ -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);