diff options
author | Paul Smith <psmith@gnu.org> | 2012-01-29 18:12:22 +0000 |
---|---|---|
committer | Paul Smith <psmith@gnu.org> | 2012-01-29 18:12:22 +0000 |
commit | fca11f60390cf607f68b497c3909b1fb40251070 (patch) | |
tree | e8541f1110fab2d1ffc0c4b226405d85ad43c0ad /tests/scripts/functions/file | |
parent | d6e1c6e6c5961b8e7dee7ff1fc7d1792ab0fb4f8 (diff) | |
download | gunmake-fca11f60390cf607f68b497c3909b1fb40251070.tar.gz |
Create a new function $(file ...)
Diffstat (limited to 'tests/scripts/functions/file')
-rw-r--r-- | tests/scripts/functions/file | 94 |
1 files changed, 94 insertions, 0 deletions
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; |