From 29cd838eab01ed7110f3ccb2e8c6a35c8a31dbcc Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Thu, 11 Apr 2024 10:21:29 +0200 Subject: Adding upstream version 1:0.1.9998svn3589+dfsg. Signed-off-by: Daniel Baumann --- src/kmk/tests/scripts/functions/file | 161 +++++++++++++++++++++++++++++++++++ 1 file changed, 161 insertions(+) create mode 100644 src/kmk/tests/scripts/functions/file (limited to 'src/kmk/tests/scripts/functions/file') diff --git a/src/kmk/tests/scripts/functions/file b/src/kmk/tests/scripts/functions/file new file mode 100644 index 0000000..904db79 --- /dev/null +++ b/src/kmk/tests/scripts/functions/file @@ -0,0 +1,161 @@ +# -*-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 > with no content +run_make_test(q! +$(file >4touch) +.PHONY:x +x:;@cat 4touch +!, + '', ''); + +# Test >> with no content +run_make_test(q! +$(file >>4touch) +.PHONY:x +x:;@cat 4touch +!, + '', ''); +unlink('4touch'); + +# Test > to a read-only file +touch('file.out'); +chmod(0444, 'file.out'); + +# Find the error that will be printed +# This seems complicated, but we need the message from the C locale +my $loc = undef; +if ($has_POSIX) { + $loc = POSIX::setlocale(POSIX::LC_MESSAGES); + POSIX::setlocale(POSIX::LC_MESSAGES, 'C'); +} +my $e; +open(my $F, '>', 'file.out') and die "Opened read-only file!\n"; +$e = "$!"; +$loc and POSIX::setlocale(POSIX::LC_MESSAGES, $loc); + +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'); + +# Reading files +run_make_test(q! +$(file >file.out,A = foo) +X1 := $(file >file.out,B = bar) +$(eval $(file )', '', + "#MAKEFILE#:1: *** file: missing filename. Stop.\n", 512); + +run_make_test('$(file >>)', '', + "#MAKEFILE#:1: *** file: missing filename. Stop.\n", 512); + +run_make_test('$(file <)', '', + "#MAKEFILE#:1: *** file: missing filename. Stop.\n", 512); + +# Bad call + +run_make_test('$(file foo)', '', + "#MAKEFILE#:1: *** file: invalid file operation: foo. Stop.\n", 512); + +1; -- cgit v1.2.3