Commit e2aaf22d authored by Daniel Stenberg's avatar Daniel Stenberg
Browse files

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
parent 33045890
Loading
Loading
Loading
Loading
+34 −2
Original line number Diff line number Diff line
@@ -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);
+1 −1

File changed.

Contains only whitespace changes.