summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorPaul Smith <psmith@gnu.org>2012-01-29 18:12:22 +0000
committerPaul Smith <psmith@gnu.org>2012-01-29 18:12:22 +0000
commitfca11f60390cf607f68b497c3909b1fb40251070 (patch)
treee8541f1110fab2d1ffc0c4b226405d85ad43c0ad /tests
parentd6e1c6e6c5961b8e7dee7ff1fc7d1792ab0fb4f8 (diff)
downloadgunmake-fca11f60390cf607f68b497c3909b1fb40251070.tar.gz
Create a new function $(file ...)
Diffstat (limited to 'tests')
-rw-r--r--tests/ChangeLog4
-rw-r--r--tests/scripts/functions/file94
-rw-r--r--tests/test_driver.pl1
3 files changed, 99 insertions, 0 deletions
diff --git a/tests/ChangeLog b/tests/ChangeLog
index f603fc8..3e0643c 100644
--- a/tests/ChangeLog
+++ b/tests/ChangeLog
@@ -1,3 +1,7 @@
+2012-01-29 Paul Smith <psmith@gnu.org>
+
+ * scripts/functions/file: Test the new $(file ...) function.
+
2012-01-12 Paul Smith <psmith@gnu.org>
* scripts/functions/guile: New regression tests for Guile support.
diff --git a/tests/scripts/functions/file b/tests/scripts/functions/file
new file mode 100644
index 0000000..b994af8
--- /dev/null
+++ b/tests/scripts/functions/file
@@ -0,0 +1,94 @@
+# -*-perl-*-
+
+$description = 'Test the $(file ...) function.';
+
+# Test > and >>
+run_make_test(q!
+define A
+a
+b
+endef
+B = c d
+$(file >file.out,$(A))
+$(foreach L,$(B),$(file >> file.out,$L))
+x:;@echo hi; cat file.out
+!,
+ '', "hi\na\nb\nc\nd");
+
+unlink('file.out');
+
+# Test >> to a non-existent file
+run_make_test(q!
+define A
+a
+b
+endef
+$(file >> file.out,$(A))
+x:;@cat file.out
+!,
+ '', "a\nb");
+
+unlink('file.out');
+
+# Test > to a read-only file
+touch('file.out');
+chmod(0444, 'file.out');
+
+# Find the error that will be printed
+my $e;
+open(my $F, '>', 'file.out') and die "Opened read-only file!\n";
+$e = "$!";
+
+run_make_test(q!
+define A
+a
+b
+endef
+$(file > file.out,$(A))
+x:;@cat file.out
+!,
+ '', "#MAKEFILE#:6: *** open: file.out: $e. Stop.",
+ 512);
+
+unlink('file.out');
+
+# Use variables for operator and filename
+run_make_test(q!
+define A
+a
+b
+endef
+OP = >
+FN = file.out
+$(file $(OP) $(FN),$(A))
+x:;@cat file.out
+!,
+ '', "a\nb");
+
+unlink('file.out');
+
+# Don't add newlines if one already exists
+run_make_test(q!
+define A
+a
+b
+
+endef
+$(file >file.out,$(A))
+x:;@cat file.out
+!,
+ '', "a\nb");
+
+unlink('file.out');
+
+# Empty text
+run_make_test(q!
+$(file >file.out,)
+$(file >>file.out,)
+x:;@cat file.out
+!,
+ '', "\n\n");
+
+unlink('file.out');
+
+1;
diff --git a/tests/test_driver.pl b/tests/test_driver.pl
index b57d936..4ec3a11 100644
--- a/tests/test_driver.pl
+++ b/tests/test_driver.pl
@@ -89,6 +89,7 @@ sub toplevel
foreach (# UNIX-specific things
'TZ', 'TMPDIR', 'HOME', 'USER', 'LOGNAME', 'PATH',
+ 'LD_LIBRARY_PATH',
# Purify things
'PURIFYOPTIONS',
# Windows NT-specific stuff