summaryrefslogtreecommitdiff
path: root/regress/check-perms
diff options
context:
space:
mode:
Diffstat (limited to 'regress/check-perms')
-rw-r--r--regress/check-perms/DESCR1
-rw-r--r--regress/check-perms/Makefile25
-rw-r--r--regress/check-perms/PLIST2
-rwxr-xr-xregress/check-perms/spec58
4 files changed, 86 insertions, 0 deletions
diff --git a/regress/check-perms/DESCR b/regress/check-perms/DESCR
new file mode 100644
index 00000000000..fd32bcfadc7
--- /dev/null
+++ b/regress/check-perms/DESCR
@@ -0,0 +1 @@
+Regression test for mk/check/check-perms.mk.
diff --git a/regress/check-perms/Makefile b/regress/check-perms/Makefile
new file mode 100644
index 00000000000..41cac42f157
--- /dev/null
+++ b/regress/check-perms/Makefile
@@ -0,0 +1,25 @@
+# $NetBSD: Makefile,v 1.1 2019/09/19 23:53:36 rillig Exp $
+
+DISTNAME= check-perms-1.0
+CATEGORIES= regress
+MASTER_SITES= # none
+DISTFILES= # none
+
+MAINTAINER= pkgsrc-users@NetBSD.org
+COMMENT= Ensures that wrong file permissions are fixed
+LICENSE= 2-clause-bsd
+
+NO_CHECKSUM= yes
+WRKSRC= ${WRKDIR}
+BUILD_DIRS= # none
+AUTO_MKDIRS= yes
+
+USE_TOOLS+= pax
+
+do-extract:
+ cd ${WRKSRC} && > demo-file && chmod 777 demo-file
+
+do-install:
+ cd ${WRKSRC} && pax -wr -pp demo-file ${DESTDIR}${PREFIX}/share/regress-check-perms/
+
+.include "../../mk/bsd.pkg.mk"
diff --git a/regress/check-perms/PLIST b/regress/check-perms/PLIST
new file mode 100644
index 00000000000..1696f77e6f2
--- /dev/null
+++ b/regress/check-perms/PLIST
@@ -0,0 +1,2 @@
+@comment $NetBSD: PLIST,v 1.1 2019/09/19 23:53:36 rillig Exp $
+share/regress-check-perms/demo-file
diff --git a/regress/check-perms/spec b/regress/check-perms/spec
new file mode 100755
index 00000000000..ae7deb88d4b
--- /dev/null
+++ b/regress/check-perms/spec
@@ -0,0 +1,58 @@
+#! /bin/sh
+# $NetBSD: spec,v 1.1 2019/09/19 23:53:36 rillig Exp $
+set -eu
+
+do_cleanup() {
+ $TEST_MAKE deinstall clean
+}
+
+do_make() {
+ echo "Running test case $*"
+
+ #$TEST_MAKE "$@" show-all-check-perms
+
+ $TEST_MAKE "$@" deinstall clean install 1>"$TEST_OUTFILE" 2>&1 \
+ && TEST_EXITSTATUS=0 || TEST_EXITSTATUS=$?
+}
+
+test_no_developer_no_autofix() {
+ do_make PKG_DEVELOPER=no CHECK_PERMS_AUTOFIX=no
+
+ exit_status 0
+}
+
+test_no_developer_autofix() {
+ do_make PKG_DEVELOPER=no CHECK_PERMS_AUTOFIX=yes
+
+ # FIXME: The permissions must be fixed even though PKG_DEVELOPER=no.
+ exit_status 0
+ output_prohibit "^error: .*: world-writable file"
+}
+
+test_developer_no_autofix() {
+ do_make PKG_DEVELOPER=yes CHECK_PERMS_AUTOFIX=no
+
+ exit_status 1
+ output_require "^warning: .*/demo-file: too small to be a valid executable file"
+ output_require "^warning: .*/demo-file: group-writable file"
+ output_require "^error: .*/demo-file: world-writable file"
+}
+
+test_developer_autofix() {
+ do_make PKG_DEVELOPER=yes CHECK_PERMS_AUTOFIX=yes
+
+ # FIXME: Since all permission problems have been fixed, the exit status must be 0.
+ # This needs to be fixed in checkperms upstream.
+ exit_status 1
+ output_require "^warning: .*/demo-file: too small to be a valid executable file"
+ output_require "^warning: .*/demo-file: group-writable file"
+ output_require "^error: .*/demo-file: world-writable file"
+ output_require "^note: .*/demo-file: fixed permissions from 0777 to 0644"
+}
+
+do_test() {
+ test_no_developer_no_autofix
+ test_no_developer_autofix
+ test_developer_no_autofix
+ test_developer_autofix
+}