Clean up some tests for use on Windows.

This commit is contained in:
Paul Smith 2013-10-05 19:30:48 -04:00
parent 2fb91e19a0
commit b539908f73
4 changed files with 135 additions and 124 deletions

View file

@ -1,5 +1,10 @@
2013-10-05 Paul Smith <psmith@gnu.org> 2013-10-05 Paul Smith <psmith@gnu.org>
* test_driver.pl (run_all_tests): Rewrite to be more clear.
* scripts/features/jobserver: Avoid using $ENV{HOME} as it doesn't
exist everywhere.
* scripts/features/default_names: End with 1;
* scripts/features/loadapi: Use new calling signatures. Verify * scripts/features/loadapi: Use new calling signatures. Verify
the NOEXPAND flag works. Test with all valid function name the NOEXPAND flag works. Test with all valid function name
characters. characters.

View file

@ -40,3 +40,5 @@ if ($case_sensitive) {
compare_output("It chose Makefile\n",&get_logfile(1)); compare_output("It chose Makefile\n",&get_logfile(1));
unlink("Makefile"); unlink("Makefile");
} }
1;

View file

@ -43,10 +43,10 @@ unlink('inc.mk');
# Or Red Hat bug https://bugzilla.redhat.com/show_bug.cgi?id=885474 # Or Red Hat bug https://bugzilla.redhat.com/show_bug.cgi?id=885474
open(MAKEFILE,"> Makefile2"); open(MAKEFILE,"> Makefile2");
print MAKEFILE <<EOF; print MAKEFILE '
vpath %.c $ENV{HOME}/ vpath %.c ../
foo: foo:
EOF ';
close(MAKEFILE); close(MAKEFILE);
run_make_test(q! run_make_test(q!

View file

@ -202,7 +202,7 @@ sub toplevel
print "\n"; print "\n";
&run_each_test; run_all_tests();
foreach $dir (@rmdirs) foreach $dir (@rmdirs)
{ {
@ -415,128 +415,133 @@ sub print_banner
print "\n"; print "\n";
} }
sub run_each_test sub run_all_tests
{ {
$categories_run = 0; $categories_run = 0;
foreach $testname (sort @TESTS) foreach $testname (sort @TESTS) {
{ $suite_passed = 1; # reset by test on failure
++$categories_run; $num_of_logfiles = 0;
$suite_passed = 1; # reset by test on failure $num_of_tmpfiles = 0;
$num_of_logfiles = 0; $description = "";
$num_of_tmpfiles = 0; $details = "";
$description = ""; $old_makefile = undef;
$details = ""; $testname =~ s/^$scriptpath$pathsep//;
$old_makefile = undef; $perl_testname = "$scriptpath$pathsep$testname";
$testname =~ s/^$scriptpath$pathsep//; $testname =~ s/(\.pl|\.perl)$//;
$perl_testname = "$scriptpath$pathsep$testname"; $testpath = "$workpath$pathsep$testname";
$testname =~ s/(\.pl|\.perl)$//; # Leave enough space in the extensions to append a number, even
$testpath = "$workpath$pathsep$testname"; # though it needs to fit into 8+3 limits.
# Leave enough space in the extensions to append a number, even if ($short_filenames) {
# though it needs to fit into 8+3 limits. $logext = 'l';
if ($short_filenames) { $diffext = 'd';
$logext = 'l'; $baseext = 'b';
$diffext = 'd'; $runext = 'r';
$baseext = 'b'; $extext = '';
$runext = 'r'; } else {
$extext = ''; $logext = 'log';
} else { $diffext = 'diff';
$logext = 'log'; $baseext = 'base';
$diffext = 'diff'; $runext = 'run';
$baseext = 'base'; $extext = '.';
$runext = 'run'; }
$extext = '.'; $log_filename = "$testpath.$logext";
$diff_filename = "$testpath.$diffext";
$base_filename = "$testpath.$baseext";
$run_filename = "$testpath.$runext";
$tmp_filename = "$testpath.$tmpfilesuffix";
setup_for_test();
$output = "........................................................ ";
substr($output,0,length($testname)) = "$testname ";
print $output;
$tests_run = 0;
$tests_passed = 0;
# Run the test!
$code = do $perl_testname;
++$categories_run;
$total_tests_run += $tests_run;
$total_tests_passed += $tests_passed;
# How did it go?
if (!defined($code)) {
# Failed to parse or called die
if (length ($@)) {
warn "\n*** Test died ($testname): $@\n";
} else {
warn "\n*** Couldn't parse $perl_testname\n";
}
$status = "FAILED ($tests_passed/$tests_run passed)";
}
elsif ($tests_run == 0) {
# Nothing was done!!
$status = "FAILED (no tests found!)";
}
elsif ($code == -1) {
# Skipped... not supported
$status = "N/A";
--$categories_run;
}
elsif ($code != 1) {
# Bad result... this shouldn't really happen. Usually means that
# the suite forgot to end with "1;".
warn "\n*** Test returned $code\n";
$status = "FAILED ($tests_passed/$tests_run passed)";
}
elsif ($tests_run > $tests_passed) {
# Lose!
$status = "FAILED ($tests_passed/$tests_run passed)";
}
else {
# Win!
++$categories_passed;
$status = "ok ($tests_passed passed)";
# Clean up
for ($i = $num_of_tmpfiles; $i; $i--) {
rmfiles($tmp_filename . num_suffix($i));
}
for ($i = $num_of_logfiles ? $num_of_logfiles : 1; $i; $i--) {
rmfiles($log_filename . num_suffix($i));
rmfiles($base_filename . num_suffix($i));
}
}
# If the verbose option has been specified, then a short description
# of each test is printed before displaying the results of each test
# describing WHAT is being tested.
if ($verbose) {
if ($detail) {
print "\nWHAT IS BEING TESTED\n";
print "--------------------";
}
print "\n\n$description\n\n";
}
# If the detail option has been specified, then the details of HOW
# the test is testing what it says it is testing in the verbose output
# will be displayed here before the results of the test are displayed.
if ($detail) {
print "\nHOW IT IS TESTED\n";
print "----------------";
print "\n\n$details\n\n";
}
print "$status\n";
} }
$log_filename = "$testpath.$logext";
$diff_filename = "$testpath.$diffext";
$base_filename = "$testpath.$baseext";
$run_filename = "$testpath.$runext";
$tmp_filename = "$testpath.$tmpfilesuffix";
&setup_for_test; # suite-defined
$output = "........................................................ ";
substr($output,0,length($testname)) = "$testname ";
print $output;
# Run the actual test!
$tests_run = 0;
$tests_passed = 0;
$code = do $perl_testname;
$total_tests_run += $tests_run;
$total_tests_passed += $tests_passed;
# How did it go?
if (!defined($code))
{
$suite_passed = 0;
if (length ($@)) {
warn "\n*** Test died ($testname): $@\n";
} else {
warn "\n*** Couldn't run $perl_testname\n";
}
}
elsif ($code == -1) {
$suite_passed = 0;
}
elsif ($code != 1 && $code != -1) {
$suite_passed = 0;
warn "\n*** Test returned $code\n";
}
if ($suite_passed) {
++$categories_passed;
$status = "ok ($tests_passed passed)";
for ($i = $num_of_tmpfiles; $i; $i--)
{
&rmfiles ($tmp_filename . &num_suffix ($i) );
}
for ($i = $num_of_logfiles ? $num_of_logfiles : 1; $i; $i--)
{
&rmfiles ($log_filename . &num_suffix ($i) );
&rmfiles ($base_filename . &num_suffix ($i) );
}
}
elsif (!defined $code || $code > 0) {
$status = "FAILED ($tests_passed/$tests_run passed)";
}
elsif ($code < 0) {
$status = "N/A";
--$categories_run;
}
# If the verbose option has been specified, then a short description
# of each test is printed before displaying the results of each test
# describing WHAT is being tested.
if ($verbose)
{
if ($detail)
{
print "\nWHAT IS BEING TESTED\n";
print "--------------------";
}
print "\n\n$description\n\n";
}
# If the detail option has been specified, then the details of HOW
# the test is testing what it says it is testing in the verbose output
# will be displayed here before the results of the test are displayed.
if ($detail)
{
print "\nHOW IT IS TESTED\n";
print "----------------";
print "\n\n$details\n\n";
}
print "$status\n";
}
} }
# If the keep flag is not set, this subroutine deletes all filenames that # If the keep flag is not set, this subroutine deletes all filenames that
@ -713,7 +718,6 @@ sub compare_output
&run_command_with_output(&get_difffile,$command); &run_command_with_output(&get_difffile,$command);
} }
$suite_passed = 0;
return 0; return 0;
} }