#!/usr/bin/env perl use 5.006; use strict; use warnings; use Term::ANSIColor ':constants'; $Term::ANSIColor::AUTORESET = 1; 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-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-iri.px', 'Test-ftp-iri-fallback.px', 'Test-ftp-iri-disabled.px', 'Test-HTTP-Content-Disposition-1.px', 'Test-HTTP-Content-Disposition-2.px', 'Test-HTTP-Content-Disposition.px', 'Test-idn-headers.px', 'Test-idn-meta.px', 'Test-idn-cmd.px', 'Test-idn-robots.px', 'Test-iri.px', 'Test-iri-disabled.px', 'Test-iri-forced-remote.px', 'Test-iri-list.px', 'Test-N-current.px', 'Test-N-smaller.px', 'Test-N-no-info.px', 'Test-N--no-content-disposition.px', 'Test-N--no-content-disposition-trivial.px', 'Test--no-content-disposition.px', 'Test--no-content-disposition-trivial.px', 'Test-N-old.px', 'Test-nonexisting-quiet.px', 'Test-noop.px', 'Test-np.px', 'Test-N.px', 'Test-O-HTTP-Content-Disposition.px', 'Test-O--no-content-disposition.px', 'Test-O--no-content-disposition-trivial.px', 'Test-O-nonexisting.px', 'Test-O.px', 'Test-O-nc.px', 'Test-Restrict-Lowercase.px', 'Test-Restrict-Uppercase.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', ); my @tested; foreach my $test (@tests) { print "Running $test\n\n"; system("$^X $top_srcdir/tests/$test"); push @tested, { name => $test, result => $? }; } print "\n"; foreach my $test (@tested) { ($test->{result} == 0) ? print GREEN 'pass: ' : print RED 'FAIL: '; print $test->{name}, "\n"; } my $count = sub { return { pass => sub { scalar grep $_->{result} == 0, @tested }, fail => sub { scalar grep $_->{result} != 0, @tested }, }->{$_[0]}->(); }; my $summary = sub { my @lines = ( "${\scalar @tested} tests were run", "${\$count->('pass')} PASS, ${\$count->('fail')} FAIL", ); 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') ? RED $summary : GREEN $summary; print "\n"; exit $count->('fail');