X-Git-Url: http://sjero.net/git/?p=wget;a=blobdiff_plain;f=tests%2Frun-px;h=49dcb740a2c99601d0915e05a77844c4079a0099;hp=37f14324d59f535a4fb99d5d215aa46719fe9aef;hb=HEAD;hpb=2e2ac6ad2fc90eaf46ae5fee0bc4f61dd97b4284 diff --git a/tests/run-px b/tests/run-px index 37f14324..49dcb740 100755 --- a/tests/run-px +++ b/tests/run-px @@ -1,24 +1,64 @@ #!/usr/bin/env perl + +use 5.006; +use strict; use warnings; +use Term::ANSIColor; + die "Please specify the top source directory.\n" if (!@ARGV); my $top_srcdir = shift @ARGV; my @tests = ( 'Test-auth-basic.px', + 'Test-auth-no-challenge.px', + 'Test-auth-no-challenge-url.px', + 'Test-auth-with-content-disposition.px', + 'Test-auth-retcode.px', + 'Test-cookies.px', + 'Test-cookies-401.px', 'Test-proxy-auth-basic.px', 'Test-proxied-https-auth.px', 'Test-N-HTTP-Content-Disposition.px', 'Test--spider.px', 'Test-c-full.px', 'Test-c-partial.px', + 'Test-c-shorter.px', 'Test-c.px', 'Test-E-k-K.px', 'Test-E-k.px', 'Test-ftp.px', + 'Test-ftp-pasv-fail.px', + 'Test-ftp-bad-list.px', + 'Test-ftp-recursive.px', + 'Test-ftp-iri.px', + 'Test-ftp-iri-fallback.px', + 'Test-ftp-iri-recursive.px', + 'Test-ftp-iri-disabled.px', + 'Test-ftp-list-Multinet.px', + 'Test-ftp-list-Unknown.px', + 'Test-ftp-list-Unknown-a.px', + 'Test-ftp-list-Unknown-hidden.px', + 'Test-ftp-list-Unknown-list-a-fails.px', + 'Test-ftp-list-UNIX-hidden.px', 'Test-HTTP-Content-Disposition-1.px', 'Test-HTTP-Content-Disposition-2.px', 'Test-HTTP-Content-Disposition.px', + 'Test-i-ftp.px', + 'Test-i-http.px', + 'Test-idn-headers.px', + 'Test-idn-meta.px', + 'Test-idn-cmd.px', + 'Test-idn-cmd-utf8.px', + 'Test-idn-robots.px', + 'Test-idn-robots-utf8.px', + 'Test-iri.px', + 'Test-iri-percent.px', + 'Test-iri-disabled.px', + 'Test-iri-forced-remote.px', + 'Test-iri-list.px', + 'Test-k.px', + 'Test-meta-robots.px', 'Test-N-current.px', 'Test-N-smaller.px', 'Test-N-no-info.px', @@ -36,35 +76,99 @@ my @tests = ( 'Test-O--no-content-disposition-trivial.px', 'Test-O-nonexisting.px', 'Test-O.px', + 'Test--post-file.px', + 'Test-O-nc.px', + 'Test-restrict-ascii.px', 'Test-Restrict-Lowercase.px', 'Test-Restrict-Uppercase.px', + 'Test-stdouterr.px', 'Test--spider-fail.px', 'Test--spider-r-HTTP-Content-Disposition.px', 'Test--spider-r--no-content-disposition.px', 'Test--spider-r--no-content-disposition-trivial.px', 'Test--spider-r.px', + 'Test--httpsonly-r.px', + 'Test--start-pos.px', + 'Test-ftp--start-pos.px', + 'Test--start-pos--continue.px', + 'Test-204.px', ); -my @results; +foreach my $var (qw(SYSTEM_WGETRC WGETRC)) { + $ENV{$var} = '/dev/null'; +} + +my @tested; -for my $test (@tests) { +foreach my $test (@tests) { print "Running $test\n\n"; - system("$top_srcdir/tests/$test"); - push @results, $?; + system("$^X -I$top_srcdir/tests $top_srcdir/tests/$test $top_srcdir"); + push @tested, { name => $test, result => $? >> 8 }; } -for (my $i=0; $i != @tests; ++$i) { - if ($results[$i] == 0) { - print "pass: "; - } else { - print "FAIL: "; - } - print "$tests[$i]\n"; +foreach my $var (qw(SYSTEM_WGETRC WGETRC)) { + delete $ENV{$var}; +} + +my %exit = ( + pass => 0, + fail => 1, + skip => 2, + unknown => 3, # or greater +); + +my %colors = ( + $exit{pass} => colored('pass:', 'green' ), + $exit{fail} => colored('FAIL:', 'red' ), + $exit{skip} => colored('Skip:', 'yellow' ), + $exit{unknown} => colored('Unknown:', 'magenta'), +); + +print "\n"; +foreach my $test (@tested) { + my $colored = exists $colors{$test->{result}} + ? $colors{$test->{result}} + : $colors{$exit{unknown}}; + print "$colored $test->{name}\n"; } +my $count = sub +{ + return { + pass => sub { scalar grep $_->{result} == $exit{pass}, @tested }, + fail => sub { scalar grep $_->{result} == $exit{fail}, @tested }, + skip => sub { scalar grep $_->{result} == $exit{skip}, @tested }, + unknown => sub { scalar grep $_->{result} >= $exit{unknown}, @tested }, + }->{$_[0]}->(); +}; + +my $summary = sub +{ + my @lines = ( + "${\scalar @tested} tests were run", + "${\$count->('pass')} PASS, ${\$count->('fail')} FAIL", + "${\$count->('skip')} SKIP, ${\$count->('unknown')} UNKNOWN", + ); + my $len_longest = sub + { + local $_ = 0; + foreach my $line (@lines) { + if (length $line > $_) { + $_ = length $line; + } + } + return $_; + }->(); + return join "\n", + '=' x $len_longest, + @lines, + '=' x $len_longest; +}->(); + +print "\n"; +print $count->('fail') || $count->('unknown') + ? colored($summary, 'red') + : colored($summary, 'green'); print "\n"; -print scalar(@results) . " tests were run\n"; -print scalar(grep $_ == 0, @results) . " PASS\n"; -print scalar(grep $_ != 0, @results) . " FAIL\n"; -exit scalar (grep $_ != 0, @results); +exit $count->('fail') + $count->('unknown');