summaryrefslogtreecommitdiff
path: root/Build/source/texk/kpathsea/tests/kpseaccess.test
diff options
context:
space:
mode:
Diffstat (limited to 'Build/source/texk/kpathsea/tests/kpseaccess.test')
-rwxr-xr-xBuild/source/texk/kpathsea/tests/kpseaccess.test51
1 files changed, 51 insertions, 0 deletions
diff --git a/Build/source/texk/kpathsea/tests/kpseaccess.test b/Build/source/texk/kpathsea/tests/kpseaccess.test
new file mode 100755
index 00000000000..a1630e6ec8e
--- /dev/null
+++ b/Build/source/texk/kpathsea/tests/kpseaccess.test
@@ -0,0 +1,51 @@
+#! /bin/sh -vx
+# $Id$
+# Copyright 2017 Karl Berry <tex-live@tug.org>
+# Copyright 2010 Peter Breitenlohner <tex-live@tug.org>
+# You may freely use, modify and/or distribute this file.
+
+ret=0
+
+pass () {
+ echo "***** unexpected success of './kpseaccess $@'"
+ ret=77
+}
+
+fail () {
+ echo "***** unexpected failure of './kpseaccess $@'"
+ ret=77
+}
+
+./kpseaccess '' nonesuch && exit 1
+./kpseaccess - nonesuch && exit 1
+./kpseaccess r nonesuch && exit 1
+./kpseaccess w nonesuch && exit 1
+./kpseaccess x nonesuch && exit 1
+
+./kpseaccess '' access.o || exit 1
+./kpseaccess - access.o || exit 1
+./kpseaccess rw access.o || exit 1
+# From the access(3p) POSIX manpage:
+# If the process has appropriate privileges, an implementation may indicate
+# success for X_OK even if none of the execute file permission bits are set.
+./kpseaccess x access.o && pass x access.o
+
+# Testing write access to kpseaccess itself might fail with ETXTBSY.
+./kpseaccess rwx kpsewhich || {
+ fail rwx kpsewhich
+ ./kpseaccess r kpsewhich || fail r kpsewhich
+ ./kpseaccess w kpsewhich || fail w kpsewhich
+ ./kpseaccess x kpsewhich || fail x kpsewhich
+}
+
+./kpseaccess r $srcdir/access.c || exit 1
+./kpseaccess x $srcdir/access.c && pass x $srcdir/access.c
+
+if ./kpseaccess w $srcdir/access.c; then
+ echo 'file "$srcdir/access.c" is writable'
+else
+ echo 'file "$srcdir/access.c" is not writable'
+fi
+
+exit $ret
+