summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorPaul Smith <psmith@gnu.org>2000-03-27 20:53:50 +0000
committerPaul Smith <psmith@gnu.org>2000-03-27 20:53:50 +0000
commit4145bcbcda65dbc65a06bb51868b4033a5ca4231 (patch)
treef6721fcfeef5132082da38c2b88b935850b7ef00 /tests
parentc637af71d9398a269c467a132109e0ef853806d4 (diff)
downloadgunmake-4145bcbcda65dbc65a06bb51868b4033a5ca4231.tar.gz
* Handle case of empty static pattern rule prerequisites.
* Fix linenumbers in error messages for rule definitions.
Diffstat (limited to 'tests')
-rw-r--r--tests/ChangeLog7
-rw-r--r--tests/scripts/features/statipattrules71
2 files changed, 42 insertions, 36 deletions
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 <psmith@gnu.org>
+ * 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 <Marco.Franzen@Thyron.com>.
@@ -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;