From 29d78ddb2842d75956fb9b2f50fa7032f6a28416 Mon Sep 17 00:00:00 2001 From: Paul Smith Date: Wed, 22 Sep 2004 04:36:17 +0000 Subject: [PATCH] Update the test template. A few fixes in run_make_test(). Rename implicit_prereq_eval to patternrules, to be the start of a suite of tests of pattern rules. --- tests/ChangeLog | 11 ++++- tests/run_make_tests.pl | 4 +- tests/scripts/features/implicit_prereq_eval | 64 -------------------------- tests/scripts/features/patternrules | 40 +++++++++++++++++ tests/scripts/test_template | 69 ++++++----------------------- 5 files changed, 66 insertions(+), 122 deletions(-) delete mode 100644 tests/scripts/features/implicit_prereq_eval create mode 100644 tests/scripts/features/patternrules diff --git a/tests/ChangeLog b/tests/ChangeLog index 0a7ed0c..542194e 100644 --- a/tests/ChangeLog +++ b/tests/ChangeLog @@ -1,8 +1,17 @@ +2004-09-22 Paul D. Smith + + * run_make_tests.pl (run_make_test): Don't add newlines to the + makestring or answer if they are completely empty. + + * scripts/features/patternrules: Rename from implicit_prereq_eval. + + * scripts/test_template: Rework the template. + 2004-09-21 Boris Kolpackov * run_make_tests.pl: Change `#!/usr/local/bin/perl' to be `#!/usr/bin/env perl'. - + * scripts/features/implicit_prereq_eval: Test implicit rule prerequisite evaluation code. diff --git a/tests/run_make_tests.pl b/tests/run_make_tests.pl index a4c4330..9b9104f 100755 --- a/tests/run_make_tests.pl +++ b/tests/run_make_tests.pl @@ -76,7 +76,7 @@ sub run_make_test } # Make sure it ends in a newline. - $makestring =~ /\n$/s or $makestring .= "\n"; + $makestring && $makestring !~ /\n$/s and $makestring .= "\n"; # Replace @MAKEFILE@ with the makefile name and @MAKE@ with the path to # make @@ -91,7 +91,7 @@ sub run_make_test # Do the same processing on $answer as we did on $makestring. - $answer =~ /\n$/s or $answer .= "\n"; + $answer && $answer !~ /\n$/s and $answer .= "\n"; $answer =~ s/#MAKEFILE#/$makefile/g; $answer =~ s/#MAKE#/$make_name/g; diff --git a/tests/scripts/features/implicit_prereq_eval b/tests/scripts/features/implicit_prereq_eval deleted file mode 100644 index f549a79..0000000 --- a/tests/scripts/features/implicit_prereq_eval +++ /dev/null @@ -1,64 +0,0 @@ -$description = "Test implicit rule prerequisite evaluation code."; - -$details = "The makefile created by this test has a set of implicit rule - pairs with the first rule usually not applying because its prerequisites - cannot be made and the second rule which should succeed."; - -open(MAKEFILE,"> $makefile"); - -# The contents of the Makefile ... - -print MAKEFILE <1 MAKEFILE FOR THIS TEST, USE &get_tmpfile; TO GET -# THE NAME OF THE MAKEFILE. THIS INSURES CONSISTENCY AND KEEPS TRACK OF -# HOW MANY MAKEFILES EXIST FOR EASY DELETION AT THE END. -# EXAMPLE: $makefile2 = &get_tmpfile; +# Run a make test. See the documentation of run_make_test() in +# run_make_tests.pl, but briefly the first argument is a string with the +# contents of a makefile to be tested, the second is a string containing the +# arguments to be passed to the make invocation, the third is a string +# containing the expected output. The fourth is the expected exit code for +# make. If not specified, it's assumed that the make program should succeed +# (exit with 0). -open(MAKEFILE,"> $makefile"); +run_make_test('Your test makefile goes here', + 'Arguments to pass to make go here', + 'Expected output from the invocation goes here'); -# The Contents of the MAKEFILE ... +# There are various special tokens, options, etc. See the full documentation +# in run_make_tests.pl. -print MAKEFILE " \n"; - -# END of Contents of MAKEFILE - -close(MAKEFILE); - - -# Run make. You may specify a makefile, but if you don't want to, just -# insert "" where $make_filename is now. You may also specify specific -# options to run make with, but you also don't have to. (Insert "" where it -# says ), The last field in this subroutine call -# is the code which is returned from make. If you think that make should -# execute with no errors, you may OPTIONALLY put 0; Otherwise put the -# error code that you expect back from make for this test. - -# Every time you run make, you just need to say &get_logfile and that -# subroutine will get a new logfile name for you in incrementing order -# according to how many times you call it within ONE test. It is -# reset to 0 at the beginning of every new test script. - -&run_make_with_options($makefile, - "", - &get_logfile, - 0); - - -# THE REST OF THIS FILE DEPENDS HIGHLY ON WHAT KIND OF TEST YOU ARE -# CREATING, SO IT WILL VARY. BASICALLY, YOU MAY INSERT ANYTHING YOU -# WISH AT THIS POINT TO SEE IF THE TEST WORKED OK. IF THERE ARE -# ADDITIONAL TESTS BESIDES &compare_output, AND IT FAILES, YOU -# MUST *** SET $test_passed = 0 !!! *** - -# Create the answer to what should be produced by this Makefile -$answer = ""; - -# COMPARE RESULTS - -# In this call to compare output, you should use the call &get_logfile(1) -# to send the name of the last logfile created. You may also use -# the special call &get_logfile(1) which returns the same as &get_logfile(1). - -&compare_output($answer,&get_logfile(1)); - -# If you wish to &error ("abort -") if the compare fails, then add a "|| &error ("abort -")" to the -# end of the previous line. # This tells the test driver that the perl test script executed properly. 1; -- 2.7.4