diff options
Diffstat (limited to 'tests/scripts')
-rw-r--r-- | tests/scripts/features/implicit_prereq_eval | 64 | ||||
-rw-r--r-- | tests/scripts/features/patternrules | 40 | ||||
-rw-r--r-- | tests/scripts/test_template | 69 |
3 files changed, 54 insertions, 119 deletions
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 <<EOF; - -.PHONY: all - -all: case.1 case.2 case.3 - -a: void - -# 1 - existing file -# -%.1: void - \@false - -%.1: $makefile - \@true - - -# 2 - phony -# -%.2: void - \@false - -%.2: 2.phony - \@true - -.PHONY: 2.phony - - -# 3 - implicit-phony -# -%.3: void - \@false - -%.3: 3.implicit-phony - \@true - -3.implicit-phony: - -EOF - -close(MAKEFILE); - -&run_make_with_options($makefile, - "", - &get_logfile, - 0); - - -# This makefile doesn't produce anything except exit code. -# -&compare_output("",&get_logfile(1)); - -# This tells the test driver that the perl test script executed properly. -1; diff --git a/tests/scripts/features/patternrules b/tests/scripts/features/patternrules new file mode 100644 index 0000000..926695a --- /dev/null +++ b/tests/scripts/features/patternrules @@ -0,0 +1,40 @@ +# -*-perl-*- + +$description = "Test pattern rules."; + +$details = ""; + +# Make sure that multiple patterns where the same target can be built are +# searched even if the first one fails to match properly. + +run_make_test(' +.PHONY: all + +all: case.1 case.2 case.3 +a: void + +# 1 - existing file +%.1: void + @false +%.1: #MAKEFILE# + @true + +# 2 - phony +%.2: void + @false +%.2: 2.phony + @true +.PHONY: 2.phony + +# 3 - implicit-phony +%.3: void + @false +%.3: 3.implicit-phony + @true + +3.implicit-phony: +', '', ''); + + +# This tells the test driver that the perl test script executed properly. +1; diff --git a/tests/scripts/test_template b/tests/scripts/test_template index 773ced3..3fd3f95 100644 --- a/tests/scripts/test_template +++ b/tests/scripts/test_template @@ -1,64 +1,23 @@ -$description = "The following test creates a makefile to ... - <FILL IN DESCRIPTION HERE> "; +# -*-perl-*- +$description = "<FILL IN SHORT DESCRIPTION HERE>"; $details = "<FILL IN DETAILS OF HOW YOU TEST WHAT YOU SAY YOU ARE TESTING>"; -# IF YOU NEED >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 " <FILL IN THE CONTENTS OF THE MAKEFILE HERE> \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 <FILL IN OPTIONS HERE>), 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, - "<FILL IN OPTIONS HERE>", - &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 = "<INSERT ANSWER HERE>"; - -# 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; |