~ubuntu-branches/ubuntu/utopic/coreutils/utopic-proposed

« back to all changes in this revision

Viewing changes to tests/mkdir/perm

  • Committer: Package Import Robot
  • Author(s): Colin Watson
  • Date: 2012-11-28 03:03:42 UTC
  • mfrom: (8.3.4 sid)
  • Revision ID: package-import@ubuntu.com-20121128030342-21zanj8354gas5gr
Tags: 8.20-3ubuntu1
* Resynchronise with Debian.  Remaining changes:
  - Make 'uname -i -p' return the real processor/hardware, instead of
    unknown.
  - Build-depend on gettext:any instead of on gettext, so that apt-get can
    properly resolve build-dependencies on the tool when cross-building.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
#!/bin/sh
2
 
# Verify that mkdir's `-m MODE' option works properly
3
 
# with various umask settings.
4
 
 
5
 
# Copyright (C) 2000, 2002-2011 Free Software Foundation, Inc.
6
 
 
7
 
# This program is free software: you can redistribute it and/or modify
8
 
# it under the terms of the GNU General Public License as published by
9
 
# the Free Software Foundation, either version 3 of the License, or
10
 
# (at your option) any later version.
11
 
 
12
 
# This program is distributed in the hope that it will be useful,
13
 
# but WITHOUT ANY WARRANTY; without even the implied warranty of
14
 
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15
 
# GNU General Public License for more details.
16
 
 
17
 
# You should have received a copy of the GNU General Public License
18
 
# along with this program.  If not, see <http://www.gnu.org/licenses/>.
19
 
 
20
 
. "${srcdir=.}/init.sh"; path_prepend_ ../src
21
 
print_ver_ mkdir
22
 
skip_if_setgid_
23
 
 
24
 
working_umask_or_skip_
25
 
 
26
 
 
27
 
#                         parent        parent/dir
28
 
# umask   -m option   resulting perm  resulting perm
29
 
tests='
30
 
    000  :   empty    : drwxrwxrwx : drwxrwxrwx :
31
 
    000  :   -m 016   : drwxrwxrwx : d-----xrw- :
32
 
    077  :   empty    : drwx------ : drwx------ :
33
 
    050  :   empty    : drwx-w-rwx : drwx-w-rwx :
34
 
    050  :   -m 312   : drwx-w-rwx : d-wx--x-w- :
35
 
    160  :   empty    : drwx--xrwx : drw---xrwx :
36
 
    160  :   -m 743   : drwx--xrwx : drwxr---wx :
37
 
    027  :   -m =+x   : drwxr-x--- : d--x--x--- :
38
 
    027  :   -m =+X   : drwxr-x--- : d--x--x--- :
39
 
    -    :   -        : last       : last       :
40
 
    '
41
 
colon_tests=`echo $tests | sed 's/^ *//; s/ *: */:/g'`
42
 
 
43
 
for p in empty -p; do
44
 
  test _$p = _empty && p=
45
 
 
46
 
  old_IFS=$IFS
47
 
  IFS=':'
48
 
  set $colon_tests
49
 
  IFS=$old_IFS
50
 
 
51
 
  while :; do
52
 
    test "$VERBOSE" = yes && set -x
53
 
    umask=$1 mode=$2 parent_perms=$3 sub_perms=$4
54
 
    test "_$mode" = _empty && mode=
55
 
    test $sub_perms = last && break
56
 
    # echo p=$p umask=$1 mode=$2 parent_perms=$3 sub_perms=$4
57
 
    shift; shift; shift; shift
58
 
    umask $umask
59
 
 
60
 
    # If we're not using -p, then create the parent manually,
61
 
    # and adjust expectations accordingly.
62
 
    test x$p = x && \
63
 
      {
64
 
        mkdir -m =,u=rwx parent || fail=1
65
 
        parent_perms=drwx------
66
 
      }
67
 
 
68
 
    mkdir $p $mode parent/sub || fail=1
69
 
 
70
 
    perms=$(stat --printf %A parent)
71
 
    test "$parent_perms" = "$perms" \
72
 
      || { fail=1; echo parent: expected $parent_perms, got $perms; }
73
 
 
74
 
    perms=$(stat --printf %A parent/sub)
75
 
    test "$sub_perms" = "$perms" \
76
 
      || { fail=1; echo parent/sub: expected $sub_perms, got $perms; }
77
 
 
78
 
    chmod -R u+rwx parent
79
 
    rm -rf parent || fail=1
80
 
  done
81
 
done
82
 
 
83
 
Exit $fail