diff options
Diffstat (limited to 'regress/check-perms')
-rw-r--r-- | regress/check-perms/DESCR | 1 | ||||
-rw-r--r-- | regress/check-perms/Makefile | 25 | ||||
-rw-r--r-- | regress/check-perms/PLIST | 2 | ||||
-rwxr-xr-x | regress/check-perms/spec | 58 |
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 +} |