Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/trunk]: src/tests/bin/sh Add a test for opening files with exec "when" i...
details: https://anonhg.NetBSD.org/src/rev/740b1be46b9c
branches: trunk
changeset: 353627:740b1be46b9c
user: kre <kre%NetBSD.org@localhost>
date: Sun May 14 17:28:46 2017 +0000
description:
Add a test for opening files with exec "when" in posix mode (close-on-exec
should not get set.) While here, remove the (unused) runhelper() function.
diffstat:
tests/bin/sh/t_redircloexec.sh | 78 +++++++++++++++++++++++++++++++++++++++--
1 files changed, 73 insertions(+), 5 deletions(-)
diffs (104 lines):
diff -r fb19c56309cf -r 740b1be46b9c tests/bin/sh/t_redircloexec.sh
--- a/tests/bin/sh/t_redircloexec.sh Sun May 14 17:27:05 2017 +0000
+++ b/tests/bin/sh/t_redircloexec.sh Sun May 14 17:28:46 2017 +0000
@@ -1,4 +1,4 @@
-# $NetBSD: t_redircloexec.sh,v 1.3 2016/05/15 15:44:43 kre Exp $
+# $NetBSD: t_redircloexec.sh,v 1.4 2017/05/14 17:28:46 kre Exp $
#
# Copyright (c) 2016 The NetBSD Foundation, Inc.
# All rights reserved.
@@ -39,10 +39,6 @@
echo "echo ${name}2" ">&${fd}" > ./"${name}2"
}
-runhelper() {
- ${TEST_SH} "./${1}1"
-}
-
cleanhelper() {
# not really needed, atf cleans up...
rm -f ./"${1}1" ./"${1}2" out
@@ -168,6 +164,77 @@
cleanhelper comp
}
+atf_test_case posix_exec_redir
+posix_exec_redir_head() {
+ atf_set "descr" "Tests that redirections created by exec" \
+ " in posix mode are not closed on exec"
+}
+posix_exec_redir_body() {
+
+ # This test mostly just expects the opposite results than
+ # exec_redir_closed ...
+
+ # First work out how to get shell into posix mode
+ POSIX=
+
+ # This should succeed only if "set -o posix" succeeds.
+ # If it fails, whether it fails and exits the shell, or
+ # just returns a "false" from set (exit != 0), with or
+ # without errs on stderr, should not matter
+
+ if ${TEST_SH} -c "set -o posix && exit 0 || exit 1" 2>/dev/null
+ then
+ # If we have this method, use it, as we can expect
+ # this really should mean the shell is in posix mode.
+
+ POSIX='set -o posix;'
+
+ else
+ # This one is just a guess, and there is no assurance
+ # that it will do anything at all. What's more, since
+ # we do not know what the shell being tested does
+ # differently in posix and non-posix modes, if it
+ # even has that concept, there's nothing we can test
+ # to find out.
+
+ # A shell that always operates in posix mode (at least
+ # with regard to redirects on exec and close-on-exec
+ # should pass this test, in any case.
+
+ POSIXLY_CORRECT=true ; export POSIXLY_CORRECT
+
+ fi
+
+ mkhelper exec 6 \
+ "${POSIX} exec 6> out; echo exec1 >&6; ${TEST_SH} exec2; exec 6>&-"
+
+ atf_check -s exit:0 -o empty -e empty ${TEST_SH} ./exec1
+ atf_check -s exit:0 -o empty -e empty ${TEST_SH} -e ./exec1
+
+ mkhelper exec 9 \
+ "${POSIX} exec 9> out; echo exec1 >&9; ${TEST_SH} exec2"
+
+ atf_check -s exit:0 -o empty -e empty ${TEST_SH} ./exec1
+
+ mkhelper exec 8 \
+ "${POSIX}" \
+ "exec 8> out; printf OK; echo exec1 >&8;" \
+ "printf OK; ${TEST_SH} exec2; printf GOOD"
+
+ atf_check -s exit:0 -o match:OKOKGOOD -e empty \
+ ${TEST_SH} -e ./exec1
+
+ mkhelper exec 7 \
+ "${POSIX}" \
+ "exec 7> out; printf OK; echo exec1 >&7;" \
+ "printf OK; ${TEST_SH} exec2 || printf ERR"
+
+ atf_check -s exit:0 -o match:OKOK -o not-match:ERR -e empty \
+ ${TEST_SH} ./exec1
+
+ cleanhelper exec
+}
+
atf_init_test_cases() {
atf_add_test_case exec_redir_closed
atf_add_test_case exec_redir_open
@@ -175,4 +242,5 @@
atf_add_test_case compound_redir_open
atf_add_test_case simple_redir_open
atf_add_test_case subshell_redir_open
+ atf_add_test_case posix_exec_redir
}
Home |
Main Index |
Thread Index |
Old Index