From c7b469f0f337247acb83067d8f4aa4dc76b8a9a9 Mon Sep 17 00:00:00 2001 From: Paul Smith Date: Tue, 6 Jul 2010 06:37:42 +0000 Subject: - Enhance .POSIX to set -e when invoking shells, as demanded by a backward-incompatible change in the 2008 POSIX specification. - Add the .SHELLFLAGS variable so people can choose their own shell flags. - Add tests for this. - Add documentation for this. --- tests/ChangeLog | 7 +++++++ tests/scripts/targets/POSIX | 26 ++++++++++++++++++++++++++ tests/scripts/variables/SHELL | 14 ++++++++++++++ 3 files changed, 47 insertions(+) create mode 100644 tests/scripts/targets/POSIX (limited to 'tests') diff --git a/tests/ChangeLog b/tests/ChangeLog index c8f3aab..a611422 100644 --- a/tests/ChangeLog +++ b/tests/ChangeLog @@ -1,3 +1,10 @@ +2010-07-06 Paul Smith + + * scripts/variables/SHELL: Test the new .SHELLFLAGS variable. + + * scripts/targets/POSIX: New file. Test the .POSIX special target. + Verify that enabling .POSIX changes the shell flags to set -e. + 2010-07-01 Paul Smith * scripts/features/recursion: Add a space to separate command-line diff --git a/tests/scripts/targets/POSIX b/tests/scripts/targets/POSIX new file mode 100644 index 0000000..662c16d --- /dev/null +++ b/tests/scripts/targets/POSIX @@ -0,0 +1,26 @@ +# -*-perl-*- + +$description = "Test the behaviour of the .PHONY target."; + +$details = ""; + + +# Ensure turning on .POSIX enables the -e flag for the shell + +run_make_test(q! +.POSIX: +all: ; @false; true +!, + '', "#MAKE#: *** [all] Error 1\n", 512); + +# User settings must override .POSIX + +run_make_test(q! +.SHELLFLAGS = -xc +.POSIX: +all: ; @false; true +!, + '', "+ false\n+ true\n"); + +# This tells the test driver that the perl test script executed properly. +1; diff --git a/tests/scripts/variables/SHELL b/tests/scripts/variables/SHELL index a303540..69871d2 100644 --- a/tests/scripts/variables/SHELL +++ b/tests/scripts/variables/SHELL @@ -56,4 +56,18 @@ two: export SHELL := /./$mshell\n".' one two:;@echo "$@: $(SHELL) $$SHELL" ', '', "two: /./$mshell /./$mshell\none: /././$mshell $mshell\n"); +# Test .SHELLFLAGS + +run_make_test(q! +.SHELLFLAGS = -xc +all: ; @true +!, + '', "+ true\n"); + +run_make_test(q! +.SHELLFLAGS = -xec +all: ; @true; false; true +!, + '', "+ true\n+ false\n#MAKE#: *** [all] Error 1\n", 512); + 1; -- cgit v1.2.3