From ac8946e3d31c223a0c3aecd8fed71490a0abca6a Mon Sep 17 00:00:00 2001 From: Hartmut Brandt Date: Fri, 20 May 2005 15:06:27 +0000 Subject: [PATCH] Add a test to ensure that in compat mode when a line contains no shell meta characters it is not passed to the shell, but the command is executed directly (given that the line is not a shell builtin) and that the line with a meta character is passed to the shell. --- .../usr.bin/make/shell/meta/Makefile | 30 +++++++++++++++++++ .../usr.bin/make/shell/meta/expected.status | 1 + .../usr.bin/make/shell/meta/expected.stderr | 1 + .../usr.bin/make/shell/meta/expected.stdout | 0 .../regression/usr.bin/make/shell/meta/sh.sh | 6 ++++ .../regression/usr.bin/make/shell/meta/test.t | 13 ++++++++ 6 files changed, 51 insertions(+) create mode 100644 tools/regression/usr.bin/make/shell/meta/Makefile create mode 100644 tools/regression/usr.bin/make/shell/meta/expected.status create mode 100644 tools/regression/usr.bin/make/shell/meta/expected.stderr create mode 100644 tools/regression/usr.bin/make/shell/meta/expected.stdout create mode 100644 tools/regression/usr.bin/make/shell/meta/sh.sh create mode 100644 tools/regression/usr.bin/make/shell/meta/test.t diff --git a/tools/regression/usr.bin/make/shell/meta/Makefile b/tools/regression/usr.bin/make/shell/meta/Makefile new file mode 100644 index 000000000000..28a50d6eda16 --- /dev/null +++ b/tools/regression/usr.bin/make/shell/meta/Makefile @@ -0,0 +1,30 @@ +# +# In compat mode (the default without -j) a line that contains no shell +# meta characters and no shell builtins is not passed to the shell but +# executed directly. In our example the ls line without meta characters +# will really execute ls, while the line with meta characters will execute +# our special shell. +# +# $FreeBSD$ + +all: sh + @MAKEFLAGS= ${MAKE} -B no-meta + @MAKEFLAGS= ${MAKE} -B meta + +sh: sh.sh + @cp ${.CURDIR}/sh.sh ${.OBJDIR}/sh + @chmod +x ${.OBJDIR}/sh + +.ifmake meta || no-meta + +.SHELL: path="${.OBJDIR}/sh" + +.PHONY: meta no-meta + +meta: + @ls * + +no-meta: + @ls -d . + +.endif diff --git a/tools/regression/usr.bin/make/shell/meta/expected.status b/tools/regression/usr.bin/make/shell/meta/expected.status new file mode 100644 index 000000000000..0cfbf08886fc --- /dev/null +++ b/tools/regression/usr.bin/make/shell/meta/expected.status @@ -0,0 +1 @@ +2 diff --git a/tools/regression/usr.bin/make/shell/meta/expected.stderr b/tools/regression/usr.bin/make/shell/meta/expected.stderr new file mode 100644 index 000000000000..628ea8fef6c7 --- /dev/null +++ b/tools/regression/usr.bin/make/shell/meta/expected.stderr @@ -0,0 +1 @@ +make: don't know how to make sh.sh. Stop diff --git a/tools/regression/usr.bin/make/shell/meta/expected.stdout b/tools/regression/usr.bin/make/shell/meta/expected.stdout new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/tools/regression/usr.bin/make/shell/meta/sh.sh b/tools/regression/usr.bin/make/shell/meta/sh.sh new file mode 100644 index 000000000000..3a507b87f674 --- /dev/null +++ b/tools/regression/usr.bin/make/shell/meta/sh.sh @@ -0,0 +1,6 @@ +#!/bin/sh +# $FreeBSD$ +echo "$@" +if ! test -t 0 ; then + cat +fi diff --git a/tools/regression/usr.bin/make/shell/meta/test.t b/tools/regression/usr.bin/make/shell/meta/test.t new file mode 100644 index 000000000000..f67a5c6069fb --- /dev/null +++ b/tools/regression/usr.bin/make/shell/meta/test.t @@ -0,0 +1,13 @@ +#!/bin/sh + +# $FreeBSD$ + +cd `dirname $0` +. ../../common.sh + +desc_test() +{ + echo "Check that a command line with meta characters is passed to the shell." +} + +eval_cmd $1