@@ -45,8 +45,7 @@ sub set_path {
4545# output and report results.
4646#
4747sub runtest {
48− my ($test, $update, $showTime) = @_;
49−
48+ my ($test, $update, $showTime, $failedref, $statsref) = @_;
5049
5150 chdir($test);
5251
@@ -90,15 +89,19 @@ sub runtest {
9089
9190 if ($got eq $exp) {
9291 print "Ran $test...success\n";
92+ $statsref->{'succeeded'}++;
9393 }
9494 else {
9595 if ($update == 0) {
9696 $exitstatus = 1;
9797 print "Ran $test...FAILURE\n";
9898 system "diff output expected";
99+ push @$failedref, $test;
100+ $statsref->{'failed'}++;
99101 } else {
100102 system("cp output expected");
101103 print "Ran $test...UPDATED\n";
104+ $statsref->{'updated'}++;
102105 }
103106 }
104107 chdir "..";
@@ -164,6 +167,14 @@ my $show = 0;
164167my $usejava = 0;
165168my $showTime = 0;
166169
170+my @failed;
171+my %stats = (
172+ total => 0,
173+ succeeded => 0,
174+ failed => 0,
175+ updated => 0
176+);
177+
167178while (my $opt = shift @opts) {
168179 if ($opt eq "-u") { $update = 1; }
169180 elsif ($opt eq "-d") { $diff = 1; }
@@ -186,7 +197,8 @@ my $startTime = time();
186197
187198foreach my $test (@tests) {
188199 if ($diff == 0 && $show == 0) {
189− runtest($test,$update,$showTime);
200+ ++$stats{'total'};
201+ runtest($test,$update,$showTime, \@failed, \%stats);
190202 }
191203 else {
192204 chdir $test;
@@ -208,6 +220,19 @@ foreach my $test (@tests) {
208220my $endTime = time();
209221my $elapsedTime = $endTime - $startTime;
210222
223+
224+print "----\n";
225+printf("%d tests run: %d succeeded, %d failed, %d updated.\n\n",
226+ $stats{'total'}, $stats{'succeeded'}, $stats{'failed'}, $stats{'updated'} );
227+
228+if (@failed) {
229+ print "Failed tests:\n";
230+ foreach my $failure (@failed) {
231+ print "$failure\n";
232+ }
233+}
234+
235+
211236if ($showTime == 1) {
212237 printf("Duration of Entire Test Suite was %d\n", $elapsedTime);
213238}