annotate tests/test-inherit-mode @ 8564:6b9ec23b09fc

named branches: improve pre-push logic (issue736) Each named branch is considered separately, and the push is allowed if no new branch heads are created for any named branch to be pushed. Due to some tests's use of --debug, their output will change after this addition. This has been fixed as well. Co-contributor: Henrik Stuart <henrik.stuart@edlund.dk>
author Sune Foldager <cryo@cyanite.org>
date Sat, 23 May 2009 17:04:31 +0200
parents 68cfd7d208a5
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
6064
c608f67a87c0 add test-inherit-mode
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
1 #!/bin/sh
c608f67a87c0 add test-inherit-mode
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
2
c608f67a87c0 add test-inherit-mode
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
3 # test that new files created in .hg inherit the permissions from .hg/store
c608f67a87c0 add test-inherit-mode
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
4
c608f67a87c0 add test-inherit-mode
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
5 "$TESTDIR/hghave" unix-permissions || exit 80
c608f67a87c0 add test-inherit-mode
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
6
c608f67a87c0 add test-inherit-mode
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
7 mkdir dir
c608f67a87c0 add test-inherit-mode
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
8 # just in case somebody has a strange $TMPDIR
c608f67a87c0 add test-inherit-mode
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
9 chmod g-s dir
c608f67a87c0 add test-inherit-mode
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
10 cd dir
c608f67a87c0 add test-inherit-mode
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
11
c608f67a87c0 add test-inherit-mode
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
12 cat >printmodes.py <<EOF
c608f67a87c0 add test-inherit-mode
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
13 import os, sys
c608f67a87c0 add test-inherit-mode
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
14
c608f67a87c0 add test-inherit-mode
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
15 allnames = []
c608f67a87c0 add test-inherit-mode
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
16 isdir = {}
c608f67a87c0 add test-inherit-mode
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
17 for root, dirs, files in os.walk(sys.argv[1]):
c608f67a87c0 add test-inherit-mode
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
18 for d in dirs:
c608f67a87c0 add test-inherit-mode
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
19 name = os.path.join(root, d)
c608f67a87c0 add test-inherit-mode
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
20 isdir[name] = 1
c608f67a87c0 add test-inherit-mode
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
21 allnames.append(name)
c608f67a87c0 add test-inherit-mode
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
22 for f in files:
c608f67a87c0 add test-inherit-mode
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
23 name = os.path.join(root, f)
c608f67a87c0 add test-inherit-mode
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
24 allnames.append(name)
c608f67a87c0 add test-inherit-mode
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
25 allnames.sort()
c608f67a87c0 add test-inherit-mode
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
26 for name in allnames:
c608f67a87c0 add test-inherit-mode
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
27 suffix = name in isdir and '/' or ''
c608f67a87c0 add test-inherit-mode
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
28 print '%05o %s%s' % (os.lstat(name).st_mode & 07777, name, suffix)
c608f67a87c0 add test-inherit-mode
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
29 EOF
c608f67a87c0 add test-inherit-mode
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
30
6113
8ca25589e960 try to fix test-inherit-mode on HFS+
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 6073
diff changeset
31 cat >mode.py <<EOF
8ca25589e960 try to fix test-inherit-mode on HFS+
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 6073
diff changeset
32 import sys
8ca25589e960 try to fix test-inherit-mode on HFS+
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 6073
diff changeset
33 import os
8ca25589e960 try to fix test-inherit-mode on HFS+
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 6073
diff changeset
34 print '%05o' % os.lstat(sys.argv[1]).st_mode
8ca25589e960 try to fix test-inherit-mode on HFS+
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 6073
diff changeset
35 EOF
8ca25589e960 try to fix test-inherit-mode on HFS+
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 6073
diff changeset
36
6064
c608f67a87c0 add test-inherit-mode
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
37 umask 077
c608f67a87c0 add test-inherit-mode
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
38
c608f67a87c0 add test-inherit-mode
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
39 hg init repo
c608f67a87c0 add test-inherit-mode
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
40 cd repo
c608f67a87c0 add test-inherit-mode
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
41
6073
89c70d496175 Use chmod 0770 and g+s instead of 02770 which does't work on Solaris 8.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 6065
diff changeset
42 chmod 0770 .hg/store
6064
c608f67a87c0 add test-inherit-mode
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
43
c608f67a87c0 add test-inherit-mode
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
44 echo '% before commit'
c608f67a87c0 add test-inherit-mode
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
45 echo '% store can be written by the group, other files cannot'
c608f67a87c0 add test-inherit-mode
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
46 echo '% store is setgid'
c608f67a87c0 add test-inherit-mode
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
47 python ../printmodes.py .
c608f67a87c0 add test-inherit-mode
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
48
c608f67a87c0 add test-inherit-mode
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
49 mkdir dir
c608f67a87c0 add test-inherit-mode
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
50 touch foo dir/bar
c608f67a87c0 add test-inherit-mode
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
51 hg ci -qAm 'add files'
c608f67a87c0 add test-inherit-mode
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
52
c608f67a87c0 add test-inherit-mode
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
53 echo
c608f67a87c0 add test-inherit-mode
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
54 echo '% after commit'
c608f67a87c0 add test-inherit-mode
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
55 echo '% working dir files can only be written by the owner'
c608f67a87c0 add test-inherit-mode
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
56 echo '% files created in .hg can be written by the group'
6160
3ee3bc5d06c5 tests: hide the name of the branch cache file
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 6113
diff changeset
57 echo '% (in particular, store/**, dirstate, branch cache file, undo files)'
6064
c608f67a87c0 add test-inherit-mode
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
58 echo '% new directories are setgid'
c608f67a87c0 add test-inherit-mode
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
59 python ../printmodes.py .
c608f67a87c0 add test-inherit-mode
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
60
c608f67a87c0 add test-inherit-mode
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
61 umask 007
c608f67a87c0 add test-inherit-mode
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
62 hg init ../push
c608f67a87c0 add test-inherit-mode
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
63 echo
c608f67a87c0 add test-inherit-mode
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
64 echo '% before push'
c608f67a87c0 add test-inherit-mode
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
65 echo '% group can write everything'
c608f67a87c0 add test-inherit-mode
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
66 python ../printmodes.py ../push
c608f67a87c0 add test-inherit-mode
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
67
c608f67a87c0 add test-inherit-mode
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
68 umask 077
c608f67a87c0 add test-inherit-mode
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
69 hg -q push ../push
c608f67a87c0 add test-inherit-mode
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
70 echo
c608f67a87c0 add test-inherit-mode
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
71 echo '% after push'
c608f67a87c0 add test-inherit-mode
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
72 echo '% group can still write everything'
c608f67a87c0 add test-inherit-mode
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
73 python ../printmodes.py ../push
6113
8ca25589e960 try to fix test-inherit-mode on HFS+
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 6073
diff changeset
74
8ca25589e960 try to fix test-inherit-mode on HFS+
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 6073
diff changeset
75 # Test that we don't lose the setgid bit when we call chmod.
8ca25589e960 try to fix test-inherit-mode on HFS+
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 6073
diff changeset
76 # Not all systems support setgid directories (e.g. HFS+), so
8ca25589e960 try to fix test-inherit-mode on HFS+
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 6073
diff changeset
77 # just check that directories have the same mode.
8ca25589e960 try to fix test-inherit-mode on HFS+
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 6073
diff changeset
78 cd ..
8ca25589e960 try to fix test-inherit-mode on HFS+
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 6073
diff changeset
79 hg init setgid
8ca25589e960 try to fix test-inherit-mode on HFS+
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 6073
diff changeset
80 cd setgid
6301
68cfd7d208a5 Fix thinko in test-inherit-mode
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 6160
diff changeset
81 chmod g+rwx .hg/store
6113
8ca25589e960 try to fix test-inherit-mode on HFS+
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 6073
diff changeset
82 chmod g+s .hg/store 2> /dev/null
8ca25589e960 try to fix test-inherit-mode on HFS+
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 6073
diff changeset
83 mkdir dir
8ca25589e960 try to fix test-inherit-mode on HFS+
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 6073
diff changeset
84 touch dir/file
8ca25589e960 try to fix test-inherit-mode on HFS+
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 6073
diff changeset
85 hg ci -qAm 'add dir/file'
8ca25589e960 try to fix test-inherit-mode on HFS+
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 6073
diff changeset
86 storemode=`python ../mode.py .hg/store`
8ca25589e960 try to fix test-inherit-mode on HFS+
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 6073
diff changeset
87 dirmode=`python ../mode.py .hg/store/data/dir`
8ca25589e960 try to fix test-inherit-mode on HFS+
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 6073
diff changeset
88 if [ "$storemode" != "$dirmode" ]; then
8ca25589e960 try to fix test-inherit-mode on HFS+
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 6073
diff changeset
89 echo "$storemode != $dirmode"
8ca25589e960 try to fix test-inherit-mode on HFS+
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 6073
diff changeset
90 fi
8ca25589e960 try to fix test-inherit-mode on HFS+
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 6073
diff changeset
91