diff options
author | Florian Obser <florian@cvs.openbsd.org> | 2015-06-15 09:23:13 +0000 |
---|---|---|
committer | Florian Obser <florian@cvs.openbsd.org> | 2015-06-15 09:23:13 +0000 |
commit | 2ae135e5f82c9e03307661692553a03cec3f902b (patch) | |
tree | 5d58df313d01e95aa4b6115aae408b4086c68a63 /regress | |
parent | cb397047e41ec74bcd13299a045a86bab897ce29 (diff) |
First stab at regression test for chmod (and chflags, chgrp and chown
which are the same binary). This is supposed to exercise all syscalls
paths through those tools and not a comprehensive regression test.
Diffstat (limited to 'regress')
-rw-r--r-- | regress/bin/chmod/Makefile | 365 | ||||
-rw-r--r-- | regress/bin/chmod/Makefile~ | 374 | ||||
-rw-r--r-- | regress/bin/chmod/chflags.error | 1 | ||||
-rw-r--r-- | regress/bin/chmod/chgrp.error | 1 | ||||
-rw-r--r-- | regress/bin/chmod/chmod.error | 1 | ||||
-rw-r--r-- | regress/bin/chmod/chown.error | 1 |
6 files changed, 743 insertions, 0 deletions
diff --git a/regress/bin/chmod/Makefile b/regress/bin/chmod/Makefile new file mode 100644 index 00000000000..3767b1eaaa9 --- /dev/null +++ b/regress/bin/chmod/Makefile @@ -0,0 +1,365 @@ +# $OpenBSD: Makefile,v 1.1 2015/06/15 09:23:12 florian Exp $ + +REGRESS_TARGETS= chmod_abs_0000 chmod_abs_0644 +REGRESS_TARGETS+= chmod_sym_0644 chmod_sym_0000 +REGRESS_TARGETS+= chmod_R_0755 chmod_RP_0755 chmod_RH_0755 chmod_RL_0755 +REGRESS_TARGETS+= chmod_error + +REGRESS_TARGETS+= chgrp_id chgrp_name +REGRESS_TARGETS+= chgrp_symlink chgrp_h_symlink +REGRESS_TARGETS+= chgrp_R chgrp_RP chgrp_RH chgrp_RL +REGRESS_TARGETS+= chgrp_error + +REGRESS_TARGETS+= chown_id chown_name +REGRESS_TARGETS+= chown_symlink chown_h_symlink +REGRESS_TARGETS+= chown_R chown_RP chown_RH chown_RL +REGRESS_TARGETS+= chown_error + +REGRESS_TARGETS+= chflags chflags_no +REGRESS_TARGETS+= chflags_R chflags_RP chflags_RH chflags_RL +REGRESS_TARGETS+= chflags_error + +prepfile: clean + @/bin/mkdir -p regress + @/usr/bin/touch regress/file + @/bin/chmod 000 regress/file + @[ `/usr/bin/stat -f '%p' regress/file` == '100000' ] + +prepdir: clean + @/bin/mkdir -p regress/dir + @/usr/bin/touch regress/dir/file1 + @/usr/bin/touch regress/dir/file2 + @/bin/chmod 000 regress/dir/file1 + @/bin/chmod 000 regress/dir/file2 + @/usr/bin/touch regress/link_target_file + @/bin/chmod 0600 regress/link_target_file + @[ `/usr/bin/stat -f '%p' regress/dir/file1` == '100000' ] + @[ `/usr/bin/stat -f '%p' regress/dir/file2` == '100000' ] + @ln -s ${.OBJDIR}/regress/link_target_file \ + ${.OBJDIR}/regress/dir/linked_file + @ln -s ${.OBJDIR}/regress/dir ${.OBJDIR}/regress/linked_dir + @/bin/chmod 000 regress/dir + @[ `/usr/bin/stat -f '%p' regress/dir` == '40000' ] + @[ `/usr/bin/stat -f '%p' regress/link_target_file` == '100600' ] + +chown_prepfile: prepfile + @[ `id -u` != 0 ] || /sbin/chown root:wheel regress/file + @[ `id -u` != 0 ] || [ `/usr/bin/stat -f '%Su' regress/file` == 'root' ] + @[ `id -u` != 0 ] || [ `/usr/bin/stat -f '%Sg' regress/file` == \ + 'wheel' ] + +chown_prepsymlink: chown_prepfile + @[ `id -u` != 0 ] || ln -s ${.OBJDIR}/regress/file \ + ${.OBJDIR}/regress/symlink + @[ `id -u` != 0 ] || /sbin/chown -h root:wheel regress/symlink + @[ `id -u` != 0 ] || [ `/usr/bin/stat -f '%Su' regress/symlink` == \ + 'root' ] + @[ `id -u` != 0 ] || [ `/usr/bin/stat -f '%Sg' regress/symlink` == \ + 'wheel' ] + +chown_prepdir: prepdir + @[ `id -u` != 0 ] || /bin/chmod -R 0755 regress + @[ `id -u` != 0 ] || /sbin/chown -RL root:wheel regress + +chflags_prepfile: prepfile + @/usr/bin/chflags dump regress/file + @[ `/usr/bin/stat -f '%f' regress/file` == '0' ] + +chflags_prepdir: prepdir + @/bin/chmod -R 0755 regress + @/usr/bin/chflags -RL dump regress + +chmod_abs_0000: prepfile + @echo chmod abs 0000 + @/bin/chmod 0644 regress/file + @/bin/chmod 0000 regress/file + @[ `/usr/bin/stat -f '%p' regress/file` == '100000' ] + +chmod_abs_0644: prepfile + @echo chmod abs 0644 + @/bin/chmod 0644 regress/file + @[ `/usr/bin/stat -f '%p' regress/file` == '100644' ] + +chmod_sym_0644: prepfile + @echo chmod sym 0644 + @/bin/chmod u=rw,go=r regress/file + @[ `/usr/bin/stat -f '%p' regress/file` == '100644' ] + +chmod_sym_0000: prepfile + @echo chmod sym 0000 + @/bin/chmod 0644 regress/file + @/bin/chmod a-rwx regress/file + @[ `/usr/bin/stat -f '%p' regress/file` == '100000' ] + +chmod_R_0755: prepdir + @echo chmod -R 0755 + @/bin/chmod -R 0755 regress/dir + @[ `/usr/bin/stat -f '%p' regress/dir/file1` == '100755' ] + @[ `/usr/bin/stat -f '%p' regress/dir/file2` == '100755' ] + @[ `/usr/bin/stat -f '%p' regress/dir` == '40755' ] + @[ `/usr/bin/stat -f '%p' regress/link_target_file` == '100600' ] + +chmod_RP_0755: prepdir + @echo chmod -RP 0755 + @/bin/chmod -RP 0755 regress/dir + @[ `/usr/bin/stat -f '%p' regress/dir/file1` == '100755' ] + @[ `/usr/bin/stat -f '%p' regress/dir/file2` == '100755' ] + @[ `/usr/bin/stat -f '%p' regress/dir` == '40755' ] + @[ `/usr/bin/stat -f '%p' regress/link_target_file` == '100600' ] + +chmod_RH_0755: prepdir + @echo chmod -RH 0755 + @/bin/chmod -RH 0755 regress/linked_dir + @[ `/usr/bin/stat -f '%p' regress/dir/file1` == '100755' ] + @[ `/usr/bin/stat -f '%p' regress/dir/file2` == '100755' ] + @[ `/usr/bin/stat -f '%p' regress/dir` == '40755' ] + @[ `/usr/bin/stat -f '%p' regress/link_target_file` == '100600' ] + +chmod_RL_0755: prepdir + @echo chmod -RL 0755 + @/bin/chmod -RL 0755 regress/linked_dir + @[ `/usr/bin/stat -f '%p' regress/dir/file1` == '100755' ] + @[ `/usr/bin/stat -f '%p' regress/dir/file2` == '100755' ] + @[ `/usr/bin/stat -f '%p' regress/dir` == '40755' ] + @[ `/usr/bin/stat -f '%p' regress/link_target_file` == '100755' ] + +chmod_error: + @echo chmod error + @/bin/chmod foo bar 2> ${.OBJDIR}/chmod.error || /usr/bin/true + @cmp -s ${.CURDIR}/chmod.error ${.OBJDIR}/chmod.error + +chgrp_id: chown_prepfile + @echo chgrp 32767 + @[ `id -u` != 0 ] && echo skipped, not root || /usr/bin/true + @[ `id -u` != 0 ] || /bin/chgrp 32767 regress/file + @[ `id -u` != 0 ] || [ `/usr/bin/stat -f '%g' regress/file` == 32767 ] + +chgrp_name: chown_prepfile + @echo chgrp nobody + @[ `id -u` != 0 ] && echo skipped, not root || /usr/bin/true + @[ `id -u` != 0 ] || /bin/chgrp nobody regress/file + @[ `id -u` != 0 ] || [ `/usr/bin/stat -f '%Sg' regress/file` == \ + 'nobody' ] + +chgrp_symlink: chown_prepsymlink + @echo chgrp symlink + @[ `id -u` != 0 ] && echo skipped, not root || /usr/bin/true + @[ `id -u` != 0 ] || /bin/chgrp nobody regress/symlink + @[ `id -u` != 0 ] || [ `/usr/bin/stat -f '%Sg' regress/file` == \ + 'nobody' ] + @[ `id -u` != 0 ] || [ `/usr/bin/stat -f '%Sg' regress/symlink` == \ + 'wheel' ] + +chgrp_h_symlink: chown_prepsymlink + @echo chgrp -h symlink + @[ `id -u` != 0 ] && echo skipped, not root || /usr/bin/true + @[ `id -u` != 0 ] || /bin/chgrp -h nobody regress/symlink + @[ `id -u` != 0 ] || [ `/usr/bin/stat -f '%Sg' regress/file` == \ + 'wheel' ] + @[ `id -u` != 0 ] || [ `/usr/bin/stat -f '%Sg' regress/symlink` == \ + 'nobody' ] + +chgrp_R: chown_prepdir + @echo chown -R nobody + @[ `id -u` != 0 ] && echo skipped, not root || /usr/bin/true + @[ `id -u` != 0 ] || /bin/chgrp -R nobody regress/dir + @[ `id -u` != 0 ] || [ `/usr/bin/stat -f '%Sg' regress/dir/file1` == \ + 'nobody' ] + @[ `id -u` != 0 ] || [ `/usr/bin/stat -f '%Sg' regress/dir/file2` == \ + 'nobody' ] + @[ `id -u` != 0 ] || [ `/usr/bin/stat -f '%Sg' regress/dir` == \ + 'nobody' ] + @[ `id -u` != 0 ] || [ `/usr/bin/stat -f '%Sg' \ + regress/link_target_file` == 'wheel' ] + +chgrp_RP: chown_prepdir + @echo chgrp -RP nobody + @[ `id -u` != 0 ] && echo skipped, not root || /usr/bin/true + @[ `id -u` != 0 ] || /bin/chgrp -RP nobody regress/dir + @[ `id -u` != 0 ] || [ `/usr/bin/stat -f '%Sg' regress/dir/file1` == \ + 'nobody' ] + @[ `id -u` != 0 ] || [ `/usr/bin/stat -f '%Sg' regress/dir/file2` == \ + 'nobody' ] + @[ `id -u` != 0 ] || [ `/usr/bin/stat -f '%Sg' regress/dir` == \ + 'nobody' ] + @[ `id -u` != 0 ] || [ `/usr/bin/stat -f '%Sg' \ + regress/link_target_file` == 'wheel' ] + +chgrp_RH: chown_prepdir + @echo chgrp -RH nobody + @[ `id -u` != 0 ] && echo skipped, not root || /usr/bin/true + @[ `id -u` != 0 ] || /bin/chgrp -RH nobody regress/linked_dir + @[ `id -u` != 0 ] || [ `/usr/bin/stat -f '%Sg' regress/dir/file1` == \ + 'nobody' ] + @[ `id -u` != 0 ] || [ `/usr/bin/stat -f '%Sg' regress/dir/file2` == \ + 'nobody' ] + @[ `id -u` != 0 ] || [ `/usr/bin/stat -f '%Sg' regress/dir` == \ + 'nobody' ] + @[ `id -u` != 0 ] || [ `/usr/bin/stat -f '%Sg' \ + regress/link_target_file` == 'wheel' ] + +chgrp_RL: chown_prepdir + @echo chgrp -RL nobody + @[ `id -u` != 0 ] && echo skipped, not root || /usr/bin/true + @[ `id -u` != 0 ] || /bin/chgrp -RL nobody regress/linked_dir + @[ `id -u` != 0 ] || [ `/usr/bin/stat -f '%Sg' regress/dir/file1` == \ + 'nobody' ] + @[ `id -u` != 0 ] || [ `/usr/bin/stat -f '%Sg' regress/dir/file2` == \ + 'nobody' ] + @[ `id -u` != 0 ] || [ `/usr/bin/stat -f '%Sg' regress/dir` == \ + 'nobody' ] + @[ `id -u` != 0 ] || [ `/usr/bin/stat -f '%Sg' \ + regress/link_target_file` == 'nobody' ] + +chgrp_error: + @echo chgrp error + @/bin/chgrp __hopefully_not_existing_group bar 2> \ + ${.OBJDIR}/chgrp.error || /usr/bin/true + @cmp -s ${.CURDIR}/chgrp.error ${.OBJDIR}/chgrp.error + +chown_id: chown_prepfile + @echo chown 32767 + @[ `id -u` != 0 ] && echo skipped, not root || /usr/bin/true + @[ `id -u` != 0 ] || /sbin/chown 32767 regress/file + @[ `id -u` != 0 ] || [ `/usr/bin/stat -f '%u' regress/file` == 32767 ] + +chown_name: chown_prepfile + @echo chown nobody + @[ `id -u` != 0 ] && echo skipped, not root || /usr/bin/true + @[ `id -u` != 0 ] || /sbin/chown nobody regress/file + @[ `id -u` != 0 ] || [ `/usr/bin/stat -f '%Su' regress/file` == \ + 'nobody' ] + +chown_symlink: chown_prepsymlink + @echo chown symlink + @[ `id -u` != 0 ] && echo skipped, not root || /usr/bin/true + @[ `id -u` != 0 ] || /sbin/chown nobody regress/symlink + @[ `id -u` != 0 ] || [ `/usr/bin/stat -f '%Su' regress/file` == \ + 'nobody' ] + @[ `id -u` != 0 ] || [ `/usr/bin/stat -f '%Su' regress/symlink` == \ + 'root' ] + +chown_h_symlink: chown_prepsymlink + @echo chown -h symlink + @[ `id -u` != 0 ] && echo skipped, not root || /usr/bin/true + @[ `id -u` != 0 ] || /sbin/chown -h nobody regress/symlink + @[ `id -u` != 0 ] || [ `/usr/bin/stat -f '%Su' regress/file` == \ + 'root' ] + @[ `id -u` != 0 ] || [ `/usr/bin/stat -f '%Su' regress/symlink` == \ + 'nobody' ] + +chown_R: chown_prepdir + @echo chown -R nobody + @[ `id -u` != 0 ] && echo skipped, not root || /usr/bin/true + @[ `id -u` != 0 ] || /sbin/chown -R nobody regress/dir + @[ `id -u` != 0 ] || [ `/usr/bin/stat -f '%Su' regress/dir/file1` == \ + 'nobody' ] + @[ `id -u` != 0 ] || [ `/usr/bin/stat -f '%Su' regress/dir/file2` == \ + 'nobody' ] + @[ `id -u` != 0 ] || [ `/usr/bin/stat -f '%Su' regress/dir` == \ + 'nobody' ] + @[ `id -u` != 0 ] || [ `/usr/bin/stat -f '%Su' \ + regress/link_target_file` == 'root' ] + +chown_RP: chown_prepdir + @echo chown -RP nobody + @[ `id -u` != 0 ] && echo skipped, not root || /usr/bin/true + @[ `id -u` != 0 ] || /sbin/chown -RP nobody regress/dir + @[ `id -u` != 0 ] || [ `/usr/bin/stat -f '%Su' regress/dir/file1` == \ + 'nobody' ] + @[ `id -u` != 0 ] || [ `/usr/bin/stat -f '%Su' regress/dir/file2` == \ + 'nobody' ] + @[ `id -u` != 0 ] || [ `/usr/bin/stat -f '%Su' regress/dir` == \ + 'nobody' ] + @[ `id -u` != 0 ] || [ `/usr/bin/stat -f '%Su' \ + regress/link_target_file` == 'root' ] + +chown_RH: chown_prepdir + @echo chown -RH nobody + @[ `id -u` != 0 ] && echo skipped, not root || /usr/bin/true + @[ `id -u` != 0 ] || /sbin/chown -RH nobody regress/linked_dir + @[ `id -u` != 0 ] || [ `/usr/bin/stat -f '%Su' regress/dir/file1` == \ + 'nobody' ] + @[ `id -u` != 0 ] || [ `/usr/bin/stat -f '%Su' regress/dir/file2` == \ + 'nobody' ] + @[ `id -u` != 0 ] || [ `/usr/bin/stat -f '%Su' regress/dir` == \ + 'nobody' ] + @[ `id -u` != 0 ] || [ `/usr/bin/stat -f '%Su' \ + regress/link_target_file` == 'root' ] + +chown_RL: chown_prepdir + @echo chown -RL nobody + @[ `id -u` != 0 ] && echo skipped, not root || /usr/bin/true + @[ `id -u` != 0 ] || /sbin/chown -RL nobody regress/linked_dir + @[ `id -u` != 0 ] || [ `/usr/bin/stat -f '%Su' regress/dir/file1` == \ + 'nobody' ] + @[ `id -u` != 0 ] || [ `/usr/bin/stat -f '%Su' regress/dir/file2` == \ + 'nobody' ] + @[ `id -u` != 0 ] || [ `/usr/bin/stat -f '%Su' regress/dir` == \ + 'nobody' ] + @[ `id -u` != 0 ] || [ `/usr/bin/stat -f '%Su' \ + regress/link_target_file` == 'nobody' ] + +chown_error: + @echo chown error + @/sbin/chown __hopefully_not_existing_user bar 2> \ + ${.OBJDIR}/chown.error || /usr/bin/true + @cmp -s ${.CURDIR}/chown.error ${.OBJDIR}/chown.error + +chflags: chflags_prepfile + @echo chflags nodump + @/usr/bin/chflags nodump regress/file + @[ `/usr/bin/stat -f '%f' regress/file` == '1' ] + +chflags_no: chflags_prepfile + @echo chflags dump + @/usr/bin/chflags nodump regress/file + @[ `/usr/bin/stat -f '%f' regress/file` == '1' ] + @/usr/bin/chflags dump regress/file + @[ `/usr/bin/stat -f '%f' regress/file` == '0' ] + +chflags_R: chflags_prepdir + @echo chflags -R nodump + @/usr/bin/chflags -R nodump regress/dir + @[ `/usr/bin/stat -f '%f' regress/dir/file1` == '1' ] + @[ `/usr/bin/stat -f '%f' regress/dir/file2` == '1' ] + @[ `/usr/bin/stat -f '%f' regress/dir` == '1' ] + @[ `/usr/bin/stat -f '%f' regress/link_target_file` == '0' ] + +chflags_RP: chflags_prepdir + @echo chflags -RP nodump + @/usr/bin/chflags -RP nodump regress/dir + @[ `/usr/bin/stat -f '%f' regress/dir/file1` == '1' ] + @[ `/usr/bin/stat -f '%f' regress/dir/file2` == '1' ] + @[ `/usr/bin/stat -f '%f' regress/dir` == '1' ] + @[ `/usr/bin/stat -f '%f' regress/link_target_file` == '0' ] + +chflags_RH: chflags_prepdir + @echo chflags -RH nodump + @/usr/bin/chflags -RH nodump regress/linked_dir + @[ `/usr/bin/stat -f '%f' regress/dir/file1` == '1' ] + @[ `/usr/bin/stat -f '%f' regress/dir/file2` == '1' ] + @[ `/usr/bin/stat -f '%f' regress/dir` == '1' ] + @[ `/usr/bin/stat -f '%f' regress/link_target_file` == '0' ] + +chflags_RL: chflags_prepdir + @echo chflags -RL nodump + @/usr/bin/chflags -RL nodump regress/linked_dir + @[ `/usr/bin/stat -f '%f' regress/dir/file1` == '1' ] + @[ `/usr/bin/stat -f '%f' regress/dir/file2` == '1' ] + @[ `/usr/bin/stat -f '%f' regress/dir` == '1' ] + @[ `/usr/bin/stat -f '%f' regress/link_target_file` == '1' ] + +chflags_error: + @echo chflags error + @/usr/bin/chflags foo bar 2> ${.OBJDIR}/chflags.error || /usr/bin/true + @cmp -s ${.CURDIR}/chflags.error ${.OBJDIR}/chflags.error + +clean: + @chmod -R 0700 regress 2>/dev/null || /usr/bin/true + @/bin/rm -rf regress + +.PHONY: ${REGRESS_TARGETS} prepfile prepdir chown_prepfile chown_prepsymlink \ + chown_prepdir chflags_prepfile chflags_prepdir + +.include <bsd.regress.mk> diff --git a/regress/bin/chmod/Makefile~ b/regress/bin/chmod/Makefile~ new file mode 100644 index 00000000000..f67b1b9cda3 --- /dev/null +++ b/regress/bin/chmod/Makefile~ @@ -0,0 +1,374 @@ +# $OpenBSD: Makefile~,v 1.1 2015/06/15 09:23:12 florian Exp $ + +REGRESS_TARGETS= chmod_abs_0000 chmod_abs_0644 +REGRESS_TARGETS+= chmod_sym_0644 chmod_sym_0000 +REGRESS_TARGETS+= chmod_R_0755 chmod_RP_0755 chmod_RH_0755 chmod_RL_0755 +REGRESS_TARGETS+= chmod_error + +REGRESS_TARGETS+= chgrp_id chgrp_name +REGRESS_TARGETS+= chgrp_symlink chgrp_h_symlink +REGRESS_TARGETS+= chgrp_R chgrp_RP chgrp_RH chgrp_RL +REGRESS_TARGETS+= chgrp_error + +REGRESS_TARGETS+= chown_id chown_name +REGRESS_TARGETS+= chown_symlink chown_h_symlink +REGRESS_TARGETS+= chown_R chown_RP chown_RH chown_RL +REGRESS_TARGETS+= chown_error + +REGRESS_TARGETS+= chflags chflags_no +REGRESS_TARGETS+= chflags_R chflags_RP chflags_RH chflags_RL +REGRESS_TARGETS+= chflags_error + +prepfile: clean + @/bin/mkdir -p regress + @/usr/bin/touch regress/file + @/bin/chmod 000 regress/file + @[ `/usr/bin/stat -f '%p' regress/file` == '100000' ] + +prepdir: clean + @/bin/mkdir -p regress/dir + @/usr/bin/touch regress/dir/file1 + @/usr/bin/touch regress/dir/file2 + @/bin/chmod 000 regress/dir/file1 + @/bin/chmod 000 regress/dir/file2 + @/usr/bin/touch regress/link_target_file + @/bin/chmod 0600 regress/link_target_file + @[ `/usr/bin/stat -f '%p' regress/dir/file1` == '100000' ] + @[ `/usr/bin/stat -f '%p' regress/dir/file2` == '100000' ] + @ln -s ${.OBJDIR}/regress/link_target_file \ + ${.OBJDIR}/regress/dir/linked_file + @ln -s ${.OBJDIR}/regress/dir ${.OBJDIR}/regress/linked_dir + @/bin/chmod 000 regress/dir + @[ `/usr/bin/stat -f '%p' regress/dir` == '40000' ] + @[ `/usr/bin/stat -f '%p' regress/link_target_file` == '100600' ] + +chown_prepfile: prepfile + @[ `id -u` != 0 ] || /sbin/chown root:wheel regress/file + @[ `id -u` != 0 ] || [ `/usr/bin/stat -f '%Su' regress/file` == 'root' ] + @[ `id -u` != 0 ] || [ `/usr/bin/stat -f '%Sg' regress/file` == \ + 'wheel' ] + +chown_prepsymlink: chown_prepfile + @[ `id -u` != 0 ] || ln -s ${.OBJDIR}/regress/file \ + ${.OBJDIR}/regress/symlink + @[ `id -u` != 0 ] || /sbin/chown -h root:wheel regress/symlink + @[ `id -u` != 0 ] || [ `/usr/bin/stat -f '%Su' regress/symlink` == \ + 'root' ] + @[ `id -u` != 0 ] || [ `/usr/bin/stat -f '%Sg' regress/symlink` == \ + 'wheel' ] + +chown_prepdir: prepdir + @[ `id -u` != 0 ] || /bin/chmod -R 0755 regress + @[ `id -u` != 0 ] || /sbin/chown -RL root:wheel regress + +chflags_prepfile: prepfile + @/usr/bin/chflags dump regress/file + @[ `/usr/bin/stat -f '%f' regress/file` == '0' ] + +chflags_prepdir: prepdir + @/bin/chmod -R 0755 regress + @/usr/bin/chflags -RL dump regress + +chmod_abs_0000: prepfile + @echo chmod abs 0000 + @/bin/chmod 0644 regress/file + @/bin/chmod 0000 regress/file + @[ `/usr/bin/stat -f '%p' regress/file` == '100000' ] + +chmod_abs_0644: prepfile + @echo chmod abs 0644 + @/bin/chmod 0644 regress/file + @[ `/usr/bin/stat -f '%p' regress/file` == '100644' ] + +chmod_sym_0644: prepfile + @echo chmod sym 0644 + @/bin/chmod u=rw,go=r regress/file + @[ `/usr/bin/stat -f '%p' regress/file` == '100644' ] + +chmod_sym_0000: prepfile + @echo chmod sym 0000 + @/bin/chmod 0644 regress/file + @/bin/chmod a-rwx regress/file + @[ `/usr/bin/stat -f '%p' regress/file` == '100000' ] + +chmod_R_0755: prepdir + @echo chmod -R 0755 + @/bin/chmod -R 0755 regress/dir + @[ `/usr/bin/stat -f '%p' regress/dir/file1` == '100755' ] + @[ `/usr/bin/stat -f '%p' regress/dir/file2` == '100755' ] + @[ `/usr/bin/stat -f '%p' regress/dir` == '40755' ] + @[ `/usr/bin/stat -f '%p' regress/link_target_file` == '100600' ] + +chmod_RP_0755: prepdir + @echo chmod -RP 0755 + @/bin/chmod -RP 0755 regress/dir + @[ `/usr/bin/stat -f '%p' regress/dir/file1` == '100755' ] + @[ `/usr/bin/stat -f '%p' regress/dir/file2` == '100755' ] + @[ `/usr/bin/stat -f '%p' regress/dir` == '40755' ] + @[ `/usr/bin/stat -f '%p' regress/link_target_file` == '100600' ] + +chmod_RH_0755: prepdir + @echo chmod -RH 0755 + @/bin/chmod -RH 0755 regress/linked_dir + @[ `/usr/bin/stat -f '%p' regress/dir/file1` == '100755' ] + @[ `/usr/bin/stat -f '%p' regress/dir/file2` == '100755' ] + @[ `/usr/bin/stat -f '%p' regress/dir` == '40755' ] + @[ `/usr/bin/stat -f '%p' regress/link_target_file` == '100600' ] + +chmod_RL_0755: prepdir + @echo chmod -RL 0755 + @/bin/chmod -RL 0755 regress/linked_dir + @[ `/usr/bin/stat -f '%p' regress/dir/file1` == '100755' ] + @[ `/usr/bin/stat -f '%p' regress/dir/file2` == '100755' ] + @[ `/usr/bin/stat -f '%p' regress/dir` == '40755' ] + @[ `/usr/bin/stat -f '%p' regress/link_target_file` == '100755' ] + +chmod_error: + @echo chmod error + @/bin/chmod foo bar 2> ${.OBJDIR}/chmod.error || /usr/bin/true + @cmp -s ${.CURDIR}/chmod.error ${.OBJDIR}/chmod.error + +chgrp_id: chown_prepfile + @echo chgrp 32767 + @[ `id -u` != 0 ] && echo skipped, not root || /usr/bin/true + @[ `id -u` != 0 ] || /bin/chgrp 32767 regress/file + @[ `id -u` != 0 ] || [ `/usr/bin/stat -f '%g' regress/file` == 32767 ] + +chgrp_name: chown_prepfile + @echo chgrp nobody + @[ `id -u` != 0 ] && echo skipped, not root || /usr/bin/true + @[ `id -u` != 0 ] || /bin/chgrp nobody regress/file + @[ `id -u` != 0 ] || [ `/usr/bin/stat -f '%Sg' regress/file` == \ + 'nobody' ] + +chgrp_symlink: chown_prepsymlink + @echo chgrp symlink + @[ `id -u` != 0 ] && echo skipped, not root || /usr/bin/true + @[ `id -u` != 0 ] || /bin/chgrp nobody regress/symlink + @[ `id -u` != 0 ] || [ `/usr/bin/stat -f '%Sg' regress/file` == \ + 'nobody' ] + @[ `id -u` != 0 ] || [ `/usr/bin/stat -f '%Sg' regress/symlink` == \ + 'wheel' ] + +chgrp_h_symlink: chown_prepsymlink + @echo chgrp -h symlink + @[ `id -u` != 0 ] && echo skipped, not root || /usr/bin/true + @[ `id -u` != 0 ] || /bin/chgrp -h nobody regress/symlink + @[ `id -u` != 0 ] || [ `/usr/bin/stat -f '%Sg' regress/file` == \ + 'wheel' ] + @[ `id -u` != 0 ] || [ `/usr/bin/stat -f '%Sg' regress/symlink` == \ + 'nobody' ] + +chgrp_R: chown_prepdir + @echo chown -R nobody + @[ `id -u` != 0 ] && echo skipped, not root || /usr/bin/true + @[ `id -u` != 0 ] || /bin/chgrp -R nobody regress/dir + @[ `id -u` != 0 ] || [ `/usr/bin/stat -f '%Sg' regress/dir/file1` == \ + 'nobody' ] + @[ `id -u` != 0 ] || [ `/usr/bin/stat -f '%Sg' regress/dir/file2` == \ + 'nobody' ] + @[ `id -u` != 0 ] || [ `/usr/bin/stat -f '%Sg' regress/dir` == \ + 'nobody' ] + @[ `id -u` != 0 ] || [ `/usr/bin/stat -f '%Sg' \ + regress/link_target_file` == 'wheel' ] + +chgrp_RP: chown_prepdir + @echo chgrp -RP nobody + @[ `id -u` != 0 ] && echo skipped, not root || /usr/bin/true + @[ `id -u` != 0 ] || /bin/chgrp -RP nobody regress/dir + @[ `id -u` != 0 ] || [ `/usr/bin/stat -f '%Sg' regress/dir/file1` == \ + 'nobody' ] + @[ `id -u` != 0 ] || [ `/usr/bin/stat -f '%Sg' regress/dir/file2` == \ + 'nobody' ] + @[ `id -u` != 0 ] || [ `/usr/bin/stat -f '%Sg' regress/dir` == \ + 'nobody' ] + @[ `id -u` != 0 ] || [ `/usr/bin/stat -f '%Sg' \ + regress/link_target_file` == 'wheel' ] + +chgrp_RH: chown_prepdir + @echo chgrp -RH nobody + @[ `id -u` != 0 ] && echo skipped, not root || /usr/bin/true + @[ `id -u` != 0 ] || /bin/chgrp -RH nobody regress/linked_dir + @[ `id -u` != 0 ] || [ `/usr/bin/stat -f '%Sg' regress/dir/file1` == \ + 'nobody' ] + @[ `id -u` != 0 ] || [ `/usr/bin/stat -f '%Sg' regress/dir/file2` == \ + 'nobody' ] + @[ `id -u` != 0 ] || [ `/usr/bin/stat -f '%Sg' regress/dir` == \ + 'nobody' ] + @[ `id -u` != 0 ] || [ `/usr/bin/stat -f '%Sg' \ + regress/link_target_file` == 'wheel' ] + +chgrp_RL: chown_prepdir + @echo chgrp -RL nobody + @[ `id -u` != 0 ] && echo skipped, not root || /usr/bin/true + @[ `id -u` != 0 ] || /bin/chgrp -RL nobody regress/linked_dir + @[ `id -u` != 0 ] || [ `/usr/bin/stat -f '%Sg' regress/dir/file1` == \ + 'nobody' ] + @[ `id -u` != 0 ] || [ `/usr/bin/stat -f '%Sg' regress/dir/file2` == \ + 'nobody' ] + @[ `id -u` != 0 ] || [ `/usr/bin/stat -f '%Sg' regress/dir` == \ + 'nobody' ] + @[ `id -u` != 0 ] || [ `/usr/bin/stat -f '%Sg' \ + regress/link_target_file` == 'nobody' ] + +chgrp_error: + @echo chgrp error + @/bin/chgrp __hopefully_not_existing_group bar 2> \ + ${.OBJDIR}/chgrp.error || /usr/bin/true + @cmp -s ${.CURDIR}/chgrp.error ${.OBJDIR}/chgrp.error + +chown_id: chown_prepfile + @echo chown 32767 + @[ `id -u` != 0 ] && echo skipped, not root || /usr/bin/true + @[ `id -u` != 0 ] || /sbin/chown 32767 regress/file + @[ `id -u` != 0 ] || [ `/usr/bin/stat -f '%u' regress/file` == 32767 ] + +chown_name: chown_prepfile + @echo chown nobody + @[ `id -u` != 0 ] && echo skipped, not root || /usr/bin/true + @[ `id -u` != 0 ] || /sbin/chown nobody regress/file + @[ `id -u` != 0 ] || [ `/usr/bin/stat -f '%Su' regress/file` == \ + 'nobody' ] + +chown_symlink: chown_prepsymlink + @echo chown symlink + @[ `id -u` != 0 ] && echo skipped, not root || /usr/bin/true + @[ `id -u` != 0 ] || /sbin/chown nobody regress/symlink + @[ `id -u` != 0 ] || [ `/usr/bin/stat -f '%Su' regress/file` == \ + 'nobody' ] + @[ `id -u` != 0 ] || [ `/usr/bin/stat -f '%Su' regress/symlink` == \ + 'root' ] + +chown_h_symlink: chown_prepsymlink + @echo chown -h symlink + @[ `id -u` != 0 ] && echo skipped, not root || /usr/bin/true + @[ `id -u` != 0 ] || /sbin/chown -h nobody regress/symlink + @[ `id -u` != 0 ] || [ `/usr/bin/stat -f '%Su' regress/file` == \ + 'root' ] + @[ `id -u` != 0 ] || [ `/usr/bin/stat -f '%Su' regress/symlink` == \ + 'nobody' ] + +chown_R: chown_prepdir + @echo chown -R nobody + @[ `id -u` != 0 ] && echo skipped, not root || /usr/bin/true + @[ `id -u` != 0 ] || /sbin/chown -R nobody regress/dir + @[ `id -u` != 0 ] || [ `/usr/bin/stat -f '%Su' regress/dir/file1` == \ + 'nobody' ] + @[ `id -u` != 0 ] || [ `/usr/bin/stat -f '%Su' regress/dir/file2` == \ + 'nobody' ] + @[ `id -u` != 0 ] || [ `/usr/bin/stat -f '%Su' regress/dir` == \ + 'nobody' ] + @[ `id -u` != 0 ] || [ `/usr/bin/stat -f '%Su' \ + regress/link_target_file` == 'root' ] + +chown_RP: chown_prepdir + @echo chown -RP nobody + @[ `id -u` != 0 ] && echo skipped, not root || /usr/bin/true + @[ `id -u` != 0 ] || /sbin/chown -RP nobody regress/dir + @[ `id -u` != 0 ] || [ `/usr/bin/stat -f '%Su' regress/dir/file1` == \ + 'nobody' ] + @[ `id -u` != 0 ] || [ `/usr/bin/stat -f '%Su' regress/dir/file2` == \ + 'nobody' ] + @[ `id -u` != 0 ] || [ `/usr/bin/stat -f '%Su' regress/dir` == \ + 'nobody' ] + @[ `id -u` != 0 ] || [ `/usr/bin/stat -f '%Su' \ + regress/link_target_file` == 'root' ] + +chown_RH: chown_prepdir + @echo chown -RH nobody + @[ `id -u` != 0 ] && echo skipped, not root || /usr/bin/true + @[ `id -u` != 0 ] || /sbin/chown -RH nobody regress/linked_dir + @[ `id -u` != 0 ] || [ `/usr/bin/stat -f '%Su' regress/dir/file1` == \ + 'nobody' ] + @[ `id -u` != 0 ] || [ `/usr/bin/stat -f '%Su' regress/dir/file2` == \ + 'nobody' ] + @[ `id -u` != 0 ] || [ `/usr/bin/stat -f '%Su' regress/dir` == \ + 'nobody' ] + @[ `id -u` != 0 ] || [ `/usr/bin/stat -f '%Su' \ + regress/link_target_file` == 'root' ] + +chown_RL: chown_prepdir + @echo chown -RL nobody + @[ `id -u` != 0 ] && echo skipped, not root || /usr/bin/true + @[ `id -u` != 0 ] || /sbin/chown -RL nobody regress/linked_dir + @[ `id -u` != 0 ] || [ `/usr/bin/stat -f '%Su' regress/dir/file1` == \ + 'nobody' ] + @[ `id -u` != 0 ] || [ `/usr/bin/stat -f '%Su' regress/dir/file2` == \ + 'nobody' ] + @[ `id -u` != 0 ] || [ `/usr/bin/stat -f '%Su' regress/dir` == \ + 'nobody' ] + @[ `id -u` != 0 ] || [ `/usr/bin/stat -f '%Su' \ + regress/link_target_file` == 'nobody' ] + +chown_error: + @echo chown error + @/sbin/chown __hopefully_not_existing_user bar 2> \ + ${.OBJDIR}/chown.error || /usr/bin/true + @cmp -s ${.CURDIR}/chown.error ${.OBJDIR}/chown.error + +chflags: chflags_prepfile + @echo chflags nodump + @/usr/bin/chflags nodump regress/file + @[ `/usr/bin/stat -f '%f' regress/file` == '1' ] + +chflags_no: chflags_prepfile + @echo chflags dump + @/usr/bin/chflags nodump regress/file + @[ `/usr/bin/stat -f '%f' regress/file` == '1' ] + @/usr/bin/chflags dump regress/file + @[ `/usr/bin/stat -f '%f' regress/file` == '0' ] + +chflags_R: chflags_prepdir + @echo chflags -R nodump + @/usr/bin/chflags -R nodump regress/dir + @[ `/usr/bin/stat -f '%f' regress/dir/file1` == '1' ] + @[ `/usr/bin/stat -f '%f' regress/dir/file2` == '1' ] + @[ `/usr/bin/stat -f '%f' regress/dir` == '1' ] + @[ `/usr/bin/stat -f '%f' regress/link_target_file` == '0' ] + +chflags_RP: chflags_prepdir + @echo chflags -RP nodump + @/usr/bin/chflags -RP nodump regress/dir + @[ `/usr/bin/stat -f '%f' regress/dir/file1` == '1' ] + @[ `/usr/bin/stat -f '%f' regress/dir/file2` == '1' ] + @[ `/usr/bin/stat -f '%f' regress/dir` == '1' ] + @[ `/usr/bin/stat -f '%f' regress/link_target_file` == '0' ] + +chflags_RH: chflags_prepdir + @echo chflags -RH nodump + @/usr/bin/chflags -RH nodump regress/linked_dir + @[ `/usr/bin/stat -f '%f' regress/dir/file1` == '1' ] + @[ `/usr/bin/stat -f '%f' regress/dir/file2` == '1' ] + @[ `/usr/bin/stat -f '%f' regress/dir` == '1' ] + @[ `/usr/bin/stat -f '%f' regress/link_target_file` == '0' ] + +chflags_RL: chflags_prepdir + @echo chflags -RL nodump + @/usr/bin/chflags -RL nodump regress/linked_dir + @[ `/usr/bin/stat -f '%f' regress/dir/file1` == '1' ] + @[ `/usr/bin/stat -f '%f' regress/dir/file2` == '1' ] + @[ `/usr/bin/stat -f '%f' regress/dir` == '1' ] + @[ `/usr/bin/stat -f '%f' regress/link_target_file` == '1' ] + +chflags_error: + @echo chflags error + @/usr/bin/chflags foo bar 2> ${.OBJDIR}/chflags.error || /usr/bin/true + @cmp -s ${.CURDIR}/chflags.error ${.OBJDIR}/chflags.error + + + + + + + + + + +clean: + @chmod -R 0700 regress 2>/dev/null || /usr/bin/true + @/bin/rm -rf regress + +.PHONY: ${REGRESS_TARGETS} prepfile prepdir chown_prepfile chown_prepsymlink \ + chown_prepdir chflags_prepfile chflags_prepdir + +.include <bsd.regress.mk> diff --git a/regress/bin/chmod/chflags.error b/regress/bin/chmod/chflags.error new file mode 100644 index 00000000000..60d6e56961c --- /dev/null +++ b/regress/bin/chmod/chflags.error @@ -0,0 +1 @@ +chflags: invalid flag: foo diff --git a/regress/bin/chmod/chgrp.error b/regress/bin/chmod/chgrp.error new file mode 100644 index 00000000000..4a9c9da1d02 --- /dev/null +++ b/regress/bin/chmod/chgrp.error @@ -0,0 +1 @@ +chgrp: group is invalid: __hopefully_not_existing_group diff --git a/regress/bin/chmod/chmod.error b/regress/bin/chmod/chmod.error new file mode 100644 index 00000000000..608ba5f5ba2 --- /dev/null +++ b/regress/bin/chmod/chmod.error @@ -0,0 +1 @@ +chmod: invalid file mode: foo diff --git a/regress/bin/chmod/chown.error b/regress/bin/chmod/chown.error new file mode 100644 index 00000000000..4bdcdb98421 --- /dev/null +++ b/regress/bin/chmod/chown.error @@ -0,0 +1 @@ +chown: user is invalid: __hopefully_not_existing_user |