diff options
author | 2017-02-17 09:59:31 +0000 | |
---|---|---|
committer | 2017-02-17 09:59:31 +0000 | |
commit | 62a9160f38ae967fdec1a664f42debeed6dacffd (patch) | |
tree | 713de41206bac5401497d26c7d7f338aec058d6b | |
parent | Fix inverted PMAP_CANFAIL logic. (diff) | |
download | wireguard-openbsd-62a9160f38ae967fdec1a664f42debeed6dacffd.tar.xz wireguard-openbsd-62a9160f38ae967fdec1a664f42debeed6dacffd.zip |
Add tests for chmod's interaction with symlinks: missing tests for -h and
add tests for the regression introduced in chmod.c r1.33 that transferred
the permissions from the link to the target file in some circumstances.
There are no tests for chflags since I couldn't come up with testcases
without undesirable side-effects like breaking make clean.
Four of these tests fail and will be fixed in the upcoming r1.40 to chmod.
Prompted by a bug report from Christopher Wellons
-rw-r--r-- | regress/bin/chmod/Makefile | 111 |
1 files changed, 110 insertions, 1 deletions
diff --git a/regress/bin/chmod/Makefile b/regress/bin/chmod/Makefile index 3767b1eaaa9..2857b1b7043 100644 --- a/regress/bin/chmod/Makefile +++ b/regress/bin/chmod/Makefile @@ -1,8 +1,16 @@ -# $OpenBSD: Makefile,v 1.1 2015/06/15 09:23:12 florian Exp $ +# $OpenBSD: Makefile,v 1.2 2017/02/17 09:59:31 tb 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_h_abs_0000 chmod_h_abs_0644 +REGRESS_TARGETS+= chmod_h_sym_0000 chmod_h_sym_0644 +REGRESS_TARGETS+= chmod_h_go_minus_r chmod_h_go_minus_rx +REGRESS_TARGETS+= chmod_h_go_plus_r chmod_h_go_plus_rx +REGRESS_TARGETS+= chmod_via_link_abs_0000 chmod_via_link_abs_0644 +REGRESS_TARGETS+= chmod_via_link_sym_0000 chmod_via_link_sym_0644 +REGRESS_TARGETS+= chmod_via_link_go_minus_r chmod_via_link_go_minus_rx +REGRESS_TARGETS+= chmod_via_link_go_plus_r chmod_via_link_go_plus_rx REGRESS_TARGETS+= chmod_error REGRESS_TARGETS+= chgrp_id chgrp_name @@ -25,6 +33,11 @@ prepfile: clean @/bin/chmod 000 regress/file @[ `/usr/bin/stat -f '%p' regress/file` == '100000' ] +chmod_prepsymlink: prepfile + @/bin/ln -s ${.OBJDIR}/regress/file ${.OBJDIR}/regress/link + @/bin/chmod -h 755 regress/link + @[ `/usr/bin/stat -f '%p' regress/link` == '120755' ] + prepdir: clean @/bin/mkdir -p regress/dir @/usr/bin/touch regress/dir/file1 @@ -123,6 +136,102 @@ chmod_RL_0755: prepdir @[ `/usr/bin/stat -f '%p' regress/dir` == '40755' ] @[ `/usr/bin/stat -f '%p' regress/link_target_file` == '100755' ] +chmod_h_abs_0000: chmod_prepsymlink + @echo chmod -h 0000 + @/bin/chmod -h 0000 regress/link + @[ `/usr/bin/stat -f '%p' regress/file` == '100000' ] + @[ `/usr/bin/stat -f '%p' regress/link` == '120000' ] + +chmod_h_abs_0644: chmod_prepsymlink + @echo chmod -h 0644 + @/bin/chmod -h 0644 regress/link + @[ `/usr/bin/stat -f '%p' regress/file` == '100000' ] + @[ `/usr/bin/stat -f '%p' regress/link` == '120644' ] + +chmod_h_sym_0000: chmod_prepsymlink + @echo chmod -h sym 0000 + @/bin/chmod -h a-rwx regress/link + @[ `/usr/bin/stat -f '%p' regress/file` == '100000' ] + @[ `/usr/bin/stat -f '%p' regress/link` == '120000' ] + +chmod_h_sym_0644: chmod_prepsymlink + @echo chmod -h sym 0644 + @/bin/chmod -h u=rw,go=r regress/link + @[ `/usr/bin/stat -f '%p' regress/file` == '100000' ] + @[ `/usr/bin/stat -f '%p' regress/link` == '120644' ] + +chmod_h_go_minus_r: chmod_prepsymlink + @echo chmod -h go-r + @/bin/chmod -h go-r regress/link + @[ `/usr/bin/stat -f '%p' regress/file` == '100000' ] + @[ `/usr/bin/stat -f '%p' regress/link` == '120711' ] + +chmod_h_go_minus_rx: chmod_prepsymlink + @echo chmod -h go-rx + @/bin/chmod -h go-rx regress/link + @[ `/usr/bin/stat -f '%p' regress/file` == '100000' ] + @[ `/usr/bin/stat -f '%p' regress/link` == '120700' ] + +chmod_h_go_plus_r: chmod_prepsymlink + @echo chmod -h go+r + @/bin/chmod -h go+r regress/link + @[ `/usr/bin/stat -f '%p' regress/file` == '100000' ] + @[ `/usr/bin/stat -f '%p' regress/link` == '120755' ] + +chmod_h_go_plus_rx: chmod_prepsymlink + @echo chmod -h go+rx + @/bin/chmod -h go+rx regress/link + @[ `/usr/bin/stat -f '%p' regress/file` == '100000' ] + @[ `/usr/bin/stat -f '%p' regress/link` == '120755' ] + +chmod_via_link_abs_0000: chmod_prepsymlink + @echo chmod via symlink 0000 + @/bin/chmod 0000 regress/link + @[ `/usr/bin/stat -f '%p' regress/file` == '100000' ] + @[ `/usr/bin/stat -f '%p' regress/link` == '120755' ] + +chmod_via_link_abs_0644: chmod_prepsymlink + @echo chmod via symlink 0644 + @/bin/chmod 0644 regress/link + @[ `/usr/bin/stat -f '%p' regress/file` == '100644' ] + @[ `/usr/bin/stat -f '%p' regress/link` == '120755' ] + +chmod_via_link_sym_0000: chmod_prepsymlink + @echo chmod via symlink sym 0000 + @/bin/chmod a-rwx regress/link + @[ `/usr/bin/stat -f '%p' regress/file` == '100000' ] + @[ `/usr/bin/stat -f '%p' regress/link` == '120755' ] + +chmod_via_link_sym_0644: chmod_prepsymlink + @echo chmod via symlink sym 0644 + @/bin/chmod u=rw,go=r regress/link + @[ `/usr/bin/stat -f '%p' regress/file` == '100644' ] + @[ `/usr/bin/stat -f '%p' regress/link` == '120755' ] + +chmod_via_link_go_minus_r: chmod_prepsymlink + @echo chmod via symlink go-r + @/bin/chmod go-r regress/link + @[ `/usr/bin/stat -f '%p' regress/file` == '100000' ] + @[ `/usr/bin/stat -f '%p' regress/link` == '120755' ] + +chmod_via_link_go_minus_rx: chmod_prepsymlink + @echo chmod via symlink go-rx + @/bin/chmod go-rx regress/link + @[ `/usr/bin/stat -f '%p' regress/file` == '100000' ] + @[ `/usr/bin/stat -f '%p' regress/link` == '120755' ] + +chmod_via_link_go_plus_r: chmod_prepsymlink + @echo chmod via symlink go+r + @/bin/chmod go+r regress/link + @[ `/usr/bin/stat -f '%p' regress/file` == '100044' ] + @[ `/usr/bin/stat -f '%p' regress/link` == '120755' ] + +chmod_via_link_go_plus_rx: chmod_prepsymlink + @echo chmod via symlink go+rx + @/bin/chmod go+rx regress/link + @[ `/usr/bin/stat -f '%p' regress/file` == '100055' ] + @[ `/usr/bin/stat -f '%p' regress/link` == '120755' ] + chmod_error: @echo chmod error @/bin/chmod foo bar 2> ${.OBJDIR}/chmod.error || /usr/bin/true |