diff options
Diffstat (limited to 'tests/scripts')
-rw-r--r-- | tests/scripts/features/statipattrules | 71 |
1 files changed, 36 insertions, 35 deletions
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; |