From 4145bcbcda65dbc65a06bb51868b4033a5ca4231 Mon Sep 17 00:00:00 2001 From: Paul Smith Date: Mon, 27 Mar 2000 20:53:50 +0000 Subject: * Handle case of empty static pattern rule prerequisites. * Fix linenumbers in error messages for rule definitions. --- tests/ChangeLog | 7 +++- tests/scripts/features/statipattrules | 71 ++++++++++++++++++----------------- 2 files changed, 42 insertions(+), 36 deletions(-) (limited to 'tests') diff --git a/tests/ChangeLog b/tests/ChangeLog index 55e56f8..ad01213 100644 --- a/tests/ChangeLog +++ b/tests/ChangeLog @@ -1,5 +1,9 @@ 2000-03-27 Paul D. Smith + * scripts/features/statipattrules: Test that static pattern rules + whose prerequisite patterns resolve to empty strings throw an + error (instead of dumping core). Fixes PR/1670. + * scripts/features/reinvoke: Make more robust by touching "b" first, to ensure it's not newer than "a". Reported by Marco Franzen . @@ -7,7 +11,8 @@ * scripts/functions/call: Whoops. The fix to PR/1527 caused recursive invocations of $(call ...) to break. I can't come up with any way to get both working at the same time, so I backed out - the fix to 1527 and added a test case for recursive calls. + the fix to 1527 and added a test case for recursive calls. This + also tests the fix for PR/1610. * scripts/features/double_colon: Test that circular dependencies in double-colon rule sets are detected correctly (PR/1671). diff --git a/tests/scripts/features/statipattrules b/tests/scripts/features/statipattrules index bf2eae7..29a7c08 100644 --- a/tests/scripts/features/statipattrules +++ b/tests/scripts/features/statipattrules @@ -1,66 +1,67 @@ -$description = "The following test creates a makefile to test static \n" - ."pattern rules. Static pattern rules are rules which \n" - ."specify multiple targets and construct the dependency \n" - ."names for each target based on the target name. "; - -$details = "The makefile created in this test has three targets. The \n" - ."filter command is used to get those target names ending in \n" - .".o and statically creates a compile command with the target\n" - ."name and the target name with .c. It also does the same thing\n" - ."for another target filtered with .elc and creates a command\n" - ."to emacs a .el file"; +# -*-perl-*- +$description = "Test handling of static pattern rules."; -open(MAKEFILE,"> $makefile"); - -# The Contents of the MAKEFILE ... +$details = "\ +The makefile created in this test has three targets. The +filter command is used to get those target names ending in +.o and statically creates a compile command with the target +name and the target name with .c. It also does the same thing +for another target filtered with .elc and creates a command +to emacs a .el file"; -print MAKEFILE "files = foo.elc bar.o lose.o \n\n" - ."\$(filter %.o,\$(files)): %.o: %.c\n" - ."\t\@echo CC -c \$(CFLAGS) \$< -o \$@ \n" - ."\$(filter %.elc,\$(files)): %.elc: %.el \n" - ."\t\@echo emacs \$< \n"; +open(MAKEFILE,"> $makefile"); +print MAKEFILE <<'EOF'; +files = foo.elc bar.o lose.o -# END of Contents of MAKEFILE +$(filter %.o,$(files)): %.o: %.c ; @echo CC -c $(CFLAGS) $< -o $@ +$(filter %.elc,$(files)): %.elc: %.el ; @echo emacs $< +EOF close(MAKEFILE); -&touch("bar.c","lose.c"); + +&touch('bar.c', 'lose.c'); # TEST #1 # ------- -&run_make_with_options($makefile, - "", - &get_logfile, - 0); - -# Create the answer to what should be produced by this Makefile +&run_make_with_options($makefile, '', &get_logfile); $answer = "CC -c bar.c -o bar.o\n"; -&compare_output($answer,&get_logfile(1)); +&compare_output($answer, &get_logfile(1)); # TEST #2 # ------- -&run_make_with_options($makefile,"lose.o",&get_logfile); +&run_make_with_options($makefile, 'lose.o', &get_logfile); $answer = "CC -c lose.c -o lose.o\n"; - -&compare_output($answer,&get_logfile(1)); +&compare_output($answer, &get_logfile(1)); # TEST #3 # ------- &touch("foo.el"); -&run_make_with_options($makefile,"foo.elc",&get_logfile); - +&run_make_with_options($makefile, 'foo.elc', &get_logfile); $answer = "emacs foo.el\n"; +&compare_output($answer, &get_logfile(1)); + + +unlink('foo.el', 'bar.c', 'lose.c'); -&compare_output($answer,&get_logfile(1)); +# TEST #4 -- PR/1670: don't core dump on invalid static pattern rules +# ------- + +$makefile2 = &get_tmpfile; +open(MAKEFILE, "> $makefile2"); +print MAKEFILE "foo: foo%: % ; \@echo $@\n"; +close(MAKEFILE); +&run_make_with_options($makefile2, '', &get_logfile, 512); +$answer = "$makefile2:1: *** target `foo' leaves prerequisite pattern empty. Stop.\n"; +&compare_output($answer, &get_logfile(1)); -unlink("foo.el","bar.c","lose.c"); 1; -- cgit v1.2.3