on master help sign in
Keep track of test stats and print the failed tests at the end
920282fNiklas Larsson
test/mktest.pl+1−1
@@ -13,7 +13,7 @@ chdir($test);
13open(FOO,">run");
13open(FOO,">run");
14
14
15print FOO "#!/usr/bin/env bash\n";
15print FOO "#!/usr/bin/env bash\n";
16−print FOO "idris \$@ $test.idr -o $test\n";
16+print FOO "${IDRIS:-idris} \$@ $test.idr -o $test\n";
17print FOO "./$test\n";print FOO "rm -f $test *.ibc\n";
17print FOO "./$test\n";print FOO "rm -f $test *.ibc\n";
18
18
19close(FOO);
19close(FOO);
test/runtest.pl+28−3
@@ -45,8 +45,7 @@ sub set_path {
45# output and report results.
45# output and report results.
46#
46#
47sub runtest {
47sub runtest {
48− my ($test, $update, $showTime) = @_;
48+ my ($test, $update, $showTime, $failedref, $statsref) = @_;
49−
50
49
51 chdir($test);
50 chdir($test);
52
51
@@ -90,15 +89,19 @@ sub runtest {
90
89
91 if ($got eq $exp) {
90 if ($got eq $exp) {
92 print "Ran $test...success\n";
91 print "Ran $test...success\n";
92+ $statsref->{'succeeded'}++;
93 }
93 }
94 else {
94 else {
95 if ($update == 0) {
95 if ($update == 0) {
96 $exitstatus = 1;
96 $exitstatus = 1;
97 print "Ran $test...FAILURE\n";
97 print "Ran $test...FAILURE\n";
98 system "diff output expected";
98 system "diff output expected";
99+ push @$failedref, $test;
100+ $statsref->{'failed'}++;
99 } else {
101 } else {
100 system("cp output expected");
102 system("cp output expected");
101 print "Ran $test...UPDATED\n";
103 print "Ran $test...UPDATED\n";
104+ $statsref->{'updated'}++;
102 }
105 }
103 }
106 }
104 chdir "..";
107 chdir "..";
@@ -164,6 +167,14 @@ my $show = 0;
164my $usejava = 0;
167my $usejava = 0;
165my $showTime = 0;
168my $showTime = 0;
166
169
170+my @failed;
171+my %stats = (
172+ total => 0,
173+ succeeded => 0,
174+ failed => 0,
175+ updated => 0
176+);
177+
167while (my $opt = shift @opts) {
178while (my $opt = shift @opts) {
168 if ($opt eq "-u") { $update = 1; }
179 if ($opt eq "-u") { $update = 1; }
169 elsif ($opt eq "-d") { $diff = 1; }
180 elsif ($opt eq "-d") { $diff = 1; }
@@ -186,7 +197,8 @@ my $startTime = time();
186
197
187foreach my $test (@tests) {
198foreach my $test (@tests) {
188 if ($diff == 0 && $show == 0) {
199 if ($diff == 0 && $show == 0) {
200+ ++$stats{'total'};
189− runtest($test,$update,$showTime);
201+ runtest($test,$update,$showTime, \@failed, \%stats);
190 }
202 }
191 else {
203 else {
192 chdir $test;
204 chdir $test;
@@ -208,6 +220,19 @@ foreach my $test (@tests) {
208my $endTime = time();
220my $endTime = time();
209my $elapsedTime = $endTime - $startTime;
221my $elapsedTime = $endTime - $startTime;
210
222
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+
211if ($showTime == 1) {
236if ($showTime == 1) {
212 printf("Duration of Entire Test Suite was %d\n", $elapsedTime);
237 printf("Duration of Entire Test Suite was %d\n", $elapsedTime);
213}
238}