mirror of
https://github.com/mirror/make.git
synced 2025-03-29 13:31:09 +08:00
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.
This commit is contained in:
parent
73e7767ffc
commit
29d78ddb28
@ -1,8 +1,17 @@
|
|||||||
|
2004-09-22 Paul D. Smith <psmith@gnu.org>
|
||||||
|
|
||||||
|
* 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 <boris@kolpackov.net>
|
2004-09-21 Boris Kolpackov <boris@kolpackov.net>
|
||||||
|
|
||||||
* run_make_tests.pl: Change `#!/usr/local/bin/perl' to be
|
* run_make_tests.pl: Change `#!/usr/local/bin/perl' to be
|
||||||
`#!/usr/bin/env perl'.
|
`#!/usr/bin/env perl'.
|
||||||
|
|
||||||
* scripts/features/implicit_prereq_eval: Test implicit rule
|
* scripts/features/implicit_prereq_eval: Test implicit rule
|
||||||
prerequisite evaluation code.
|
prerequisite evaluation code.
|
||||||
|
|
||||||
|
@ -76,7 +76,7 @@ sub run_make_test
|
|||||||
}
|
}
|
||||||
|
|
||||||
# Make sure it ends in a newline.
|
# 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
|
# Replace @MAKEFILE@ with the makefile name and @MAKE@ with the path to
|
||||||
# make
|
# make
|
||||||
@ -91,7 +91,7 @@ sub run_make_test
|
|||||||
|
|
||||||
# Do the same processing on $answer as we did on $makestring.
|
# 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/#MAKEFILE#/$makefile/g;
|
||||||
$answer =~ s/#MAKE#/$make_name/g;
|
$answer =~ s/#MAKE#/$make_name/g;
|
||||||
|
|
||||||
|
@ -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;
|
|
40
tests/scripts/features/patternrules
Normal file
40
tests/scripts/features/patternrules
Normal file
@ -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;
|
@ -1,64 +1,23 @@
|
|||||||
$description = "The following test creates a makefile to ...
|
# -*-perl-*-
|
||||||
<FILL IN DESCRIPTION HERE> ";
|
|
||||||
|
|
||||||
|
$description = "<FILL IN SHORT DESCRIPTION HERE>";
|
||||||
$details = "<FILL IN DETAILS OF HOW YOU TEST WHAT YOU SAY YOU ARE TESTING>";
|
$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
|
# Run a make test. See the documentation of run_make_test() in
|
||||||
# THE NAME OF THE MAKEFILE. THIS INSURES CONSISTENCY AND KEEPS TRACK OF
|
# run_make_tests.pl, but briefly the first argument is a string with the
|
||||||
# HOW MANY MAKEFILES EXIST FOR EASY DELETION AT THE END.
|
# contents of a makefile to be tested, the second is a string containing the
|
||||||
# EXAMPLE: $makefile2 = &get_tmpfile;
|
# 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.
|
# This tells the test driver that the perl test script executed properly.
|
||||||
1;
|
1;
|
||||||
|
Loading…
Reference in New Issue
Block a user