Mercurial > hg > index.cgi
view test/runtests @ 241:d0e9dbe9afbe
Add new heuristic for resolving instruction sizes.
Add new heuristic for resolving instruction sizes. This applies to the the
decision between extended and base page addressing by calculating the range
of possible addresses (if reasonably knowable) and deciding on whether to
force extended addressing based on that. (If the whole range is outside the
direct page, extended addressing is required.)
author | William Astle <lost@l-w.ca> |
---|---|
date | Sun, 23 Sep 2012 13:06:43 -0600 |
parents | 3413a88f4d09 |
children | 3cd8aa013b88 |
line wrap: on
line source
#!/usr/bin/perl # # This program will execute all programs in the "tests" directory. Each # program is expected to produce output as follows on stdout: # # each line begins with a test name followed by whitespace followed by # PASS, FAIL, or SKIP. # # stderr is not redirected during testing. Any test that might spam stderr # is encouraged to redirect it somewhere useful. # # After each test script exits, a report indicating number passed, failed, # and skipped is presented, or if the script failed to run. # # Once all tests have been run, a report showing the grand total number of # tests performed, passed, failed, and skipped. # # Each test can be in any programming language that is appropriate for # the task. # # Each test can assume the current directory is the root of the source tree. use File::Basename; $testdir = dirname($0) . '/tests'; opendir DH, $testdir; while ($fe = readdir DH) { next if ($fe =~ /^\./); next if ($fe =~ /~$/); $fn = $testdir . '/' . $fe; open P,"$fn|"; while (<P>) { chomp; ($tn, $ts) = split /\s+/; $testresults{$fe}{$tn} = $ts; if ($ts eq 'PASS') { $testspassed += 1; $testresults{$fe}{'..passed'} += 1; } elsif ($ts eq 'FAIL') { $testsfailed += 1; $testresults{$fe}{'..failed'} =+ 1; } elsif ($ts eq 'SKIP') { $testsskipped += 1; $testresults{$fe}{'..skipped'} += 1; } else { $testsunknown += 1; $testresults{$fe}{'..unknown'} += 1; } $teststotal += 1; $testresults{$fe}{'..total'} += 1; } close P; $fdn = $fe; $fdn =~ s/\..+?$//; $rline = sprintf("%-25.25s: %d/%d (%d skipped, %d unknown, %d failed)", $fdn, $testresults{$fe}{'..passed'}, $testresults{$fe}{'..total'}, $testresults{$fe}{'..skipped'}, $testresults{$fe}{'..unknown'}, $testresults{$fe}{'..failed'}); print "$rline\n"; } closedir DH; print sprintf("\n===================\nTotal: %d/%d (%d skipped, %d unknown, %d failed)\n", $testspassed, $teststotal, $testsskipped, $testsunknown, $testsfailed); if ($testspassed < $teststotal) { print "\nThe following tests either failed or were otherwise dubious:\n"; foreach $i (keys %testresults) { $fdn = $i; $fdn =~ s/\..+?$//; foreach $j (keys %{ $testresults{$i} }) { next if $j =~ /^\./; if ($testresults{$i}{$j} ne 'PASS') { print "$fdn/$j: $testresults{$i}{$j}\n"; } } } exit 1; } exit 0;