summaryrefslogtreecommitdiffstats
path: root/contrib/pjdfstest
diff options
context:
space:
mode:
authorngie <ngie@FreeBSD.org>2016-03-22 19:29:55 +0000
committerngie <ngie@FreeBSD.org>2016-03-22 19:29:55 +0000
commita211c0e5f23147c683ebe722d2ebec16794eb854 (patch)
tree1122eb7183010744123747de37ff63d7bb9fc994 /contrib/pjdfstest
parentceb7b147e676803c22cf6d815f543f21fd9aa926 (diff)
downloadFreeBSD-src-a211c0e5f23147c683ebe722d2ebec16794eb854.zip
FreeBSD-src-a211c0e5f23147c683ebe722d2ebec16794eb854.tar.gz
MFC r296766:
Better handle filesystems mounted with -o noexec ftruncate/11, open/20, and truncate/11 copy sleep(1) to a temporary file on the target filesystem, execute the binary, then expect a result. This doesn't work with scenarios where the target binary cannot be executed, e.g. the filesystem was mounted with -o noexec. Ensure the filesystem hasn't been mounted with -o noexec for the testcases before executing them.
Diffstat (limited to 'contrib/pjdfstest')
-rw-r--r--contrib/pjdfstest/tests/ftruncate/11.t2
-rwxr-xr-xcontrib/pjdfstest/tests/misc.sh34
-rw-r--r--contrib/pjdfstest/tests/open/20.t2
-rw-r--r--contrib/pjdfstest/tests/truncate/11.t2
4 files changed, 40 insertions, 0 deletions
diff --git a/contrib/pjdfstest/tests/ftruncate/11.t b/contrib/pjdfstest/tests/ftruncate/11.t
index b00d7b8..8d9f0d5 100644
--- a/contrib/pjdfstest/tests/ftruncate/11.t
+++ b/contrib/pjdfstest/tests/ftruncate/11.t
@@ -8,6 +8,8 @@ dir=`dirname $0`
[ "${os}" = "FreeBSD" ] || quick_exit
+requires_exec
+
echo "1..2"
n0=`namegen`
diff --git a/contrib/pjdfstest/tests/misc.sh b/contrib/pjdfstest/tests/misc.sh
index 8978b5f..654d3dd 100755
--- a/contrib/pjdfstest/tests/misc.sh
+++ b/contrib/pjdfstest/tests/misc.sh
@@ -219,3 +219,37 @@ create_file() {
expect 0 lchmod ${name} ${3}
fi
}
+
+# Tests for whether or not a filesystem is mounted with a particular option
+# with -o, e.g. `mount -o noexec`.
+#
+# Parameters:
+# - mount_option - noatime, noexec, etc.
+#
+# Returns:
+# - 0 if mounted with the option.
+# - 1 otherwise.
+has_mount_option()
+{
+ local IFS=,
+ local mount_opt
+
+ local mount_option_search=$1
+
+ # XXX: mountpoint is defined in .../tests/sys/pjdfstest/tests/conf
+ for mount_opt in $(mount -d -p | awk '$2 == "'$mountpoint'" { print $4 }'); do
+ if [ "$mount_opt" = "$mount_option_search" ]; then
+ return 0
+ fi
+ done
+ return 1
+}
+
+# Filesystem must be mounted with -o exec
+requires_exec()
+{
+ if has_mount_option noexec; then
+ echo "1..0 # SKIP filesystem mounted with -o noexec"
+ exit 0
+ fi
+}
diff --git a/contrib/pjdfstest/tests/open/20.t b/contrib/pjdfstest/tests/open/20.t
index de80b61..a7eb3db 100644
--- a/contrib/pjdfstest/tests/open/20.t
+++ b/contrib/pjdfstest/tests/open/20.t
@@ -8,6 +8,8 @@ dir=`dirname $0`
[ "${os}:${fs}" = "FreeBSD:UFS" ] || quick_exit
+requires_exec
+
echo "1..4"
n0=`namegen`
diff --git a/contrib/pjdfstest/tests/truncate/11.t b/contrib/pjdfstest/tests/truncate/11.t
index b00d7b8..8d9f0d5 100644
--- a/contrib/pjdfstest/tests/truncate/11.t
+++ b/contrib/pjdfstest/tests/truncate/11.t
@@ -8,6 +8,8 @@ dir=`dirname $0`
[ "${os}" = "FreeBSD" ] || quick_exit
+requires_exec
+
echo "1..2"
n0=`namegen`
OpenPOWER on IntegriCloud