--- a/tests/test-inherit-mode Mon Aug 30 12:41:43 2010 +0900
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,91 +0,0 @@
-#!/bin/sh
-
-# test that new files created in .hg inherit the permissions from .hg/store
-
-"$TESTDIR/hghave" unix-permissions || exit 80
-
-mkdir dir
-# just in case somebody has a strange $TMPDIR
-chmod g-s dir
-cd dir
-
-cat >printmodes.py <<EOF
-import os, sys
-
-allnames = []
-isdir = {}
-for root, dirs, files in os.walk(sys.argv[1]):
- for d in dirs:
- name = os.path.join(root, d)
- isdir[name] = 1
- allnames.append(name)
- for f in files:
- name = os.path.join(root, f)
- allnames.append(name)
-allnames.sort()
-for name in allnames:
- suffix = name in isdir and '/' or ''
- print '%05o %s%s' % (os.lstat(name).st_mode & 07777, name, suffix)
-EOF
-
-cat >mode.py <<EOF
-import sys
-import os
-print '%05o' % os.lstat(sys.argv[1]).st_mode
-EOF
-
-umask 077
-
-hg init repo
-cd repo
-
-chmod 0770 .hg/store
-
-echo '% before commit'
-echo '% store can be written by the group, other files cannot'
-echo '% store is setgid'
-python ../printmodes.py .
-
-mkdir dir
-touch foo dir/bar
-hg ci -qAm 'add files'
-
-echo
-echo '% after commit'
-echo '% working dir files can only be written by the owner'
-echo '% files created in .hg can be written by the group'
-echo '% (in particular, store/**, dirstate, branch cache file, undo files)'
-echo '% new directories are setgid'
-python ../printmodes.py .
-
-umask 007
-hg init ../push
-echo
-echo '% before push'
-echo '% group can write everything'
-python ../printmodes.py ../push
-
-umask 077
-hg -q push ../push
-echo
-echo '% after push'
-echo '% group can still write everything'
-python ../printmodes.py ../push
-
-# Test that we don't lose the setgid bit when we call chmod.
-# Not all systems support setgid directories (e.g. HFS+), so
-# just check that directories have the same mode.
-cd ..
-hg init setgid
-cd setgid
-chmod g+rwx .hg/store
-chmod g+s .hg/store 2> /dev/null
-mkdir dir
-touch dir/file
-hg ci -qAm 'add dir/file'
-storemode=`python ../mode.py .hg/store`
-dirmode=`python ../mode.py .hg/store/data/dir`
-if [ "$storemode" != "$dirmode" ]; then
- echo "$storemode != $dirmode"
-fi
-
--- a/tests/test-inherit-mode.out Mon Aug 30 12:41:43 2010 +0900
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,59 +0,0 @@
-% before commit
-% store can be written by the group, other files cannot
-% store is setgid
-00700 ./.hg/
-00600 ./.hg/00changelog.i
-00600 ./.hg/requires
-00770 ./.hg/store/
-
-% after commit
-% working dir files can only be written by the owner
-% files created in .hg can be written by the group
-% (in particular, store/**, dirstate, branch cache file, undo files)
-% new directories are setgid
-00700 ./.hg/
-00600 ./.hg/00changelog.i
-00660 ./.hg/dirstate
-00660 ./.hg/last-message.txt
-00600 ./.hg/requires
-00770 ./.hg/store/
-00660 ./.hg/store/00changelog.i
-00660 ./.hg/store/00manifest.i
-00770 ./.hg/store/data/
-00770 ./.hg/store/data/dir/
-00660 ./.hg/store/data/dir/bar.i
-00660 ./.hg/store/data/foo.i
-00660 ./.hg/store/fncache
-00660 ./.hg/store/undo
-00660 ./.hg/undo.branch
-00660 ./.hg/undo.desc
-00660 ./.hg/undo.dirstate
-00700 ./dir/
-00600 ./dir/bar
-00600 ./foo
-
-% before push
-% group can write everything
-00770 ../push/.hg/
-00660 ../push/.hg/00changelog.i
-00660 ../push/.hg/requires
-00770 ../push/.hg/store/
-
-% after push
-% group can still write everything
-00770 ../push/.hg/
-00660 ../push/.hg/00changelog.i
-00660 ../push/.hg/branchheads.cache
-00660 ../push/.hg/requires
-00770 ../push/.hg/store/
-00660 ../push/.hg/store/00changelog.i
-00660 ../push/.hg/store/00manifest.i
-00770 ../push/.hg/store/data/
-00770 ../push/.hg/store/data/dir/
-00660 ../push/.hg/store/data/dir/bar.i
-00660 ../push/.hg/store/data/foo.i
-00660 ../push/.hg/store/fncache
-00660 ../push/.hg/store/undo
-00660 ../push/.hg/undo.branch
-00660 ../push/.hg/undo.desc
-00660 ../push/.hg/undo.dirstate
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-inherit-mode.t Mon Aug 30 12:46:19 2010 +0900
@@ -0,0 +1,140 @@
+test that new files created in .hg inherit the permissions from .hg/store
+
+
+ $ "$TESTDIR/hghave" unix-permissions || exit 80
+
+ $ mkdir dir
+
+just in case somebody has a strange $TMPDIR
+
+ $ chmod g-s dir
+ $ cd dir
+
+ $ cat >printmodes.py <<EOF
+ > import os, sys
+ >
+ > allnames = []
+ > isdir = {}
+ > for root, dirs, files in os.walk(sys.argv[1]):
+ > for d in dirs:
+ > name = os.path.join(root, d)
+ > isdir[name] = 1
+ > allnames.append(name)
+ > for f in files:
+ > name = os.path.join(root, f)
+ > allnames.append(name)
+ > allnames.sort()
+ > for name in allnames:
+ > suffix = name in isdir and '/' or ''
+ > print '%05o %s%s' % (os.lstat(name).st_mode & 07777, name, suffix)
+ > EOF
+
+ $ cat >mode.py <<EOF
+ > import sys
+ > import os
+ > print '%05o' % os.lstat(sys.argv[1]).st_mode
+ > EOF
+
+ $ umask 077
+
+ $ hg init repo
+ $ cd repo
+
+ $ chmod 0770 .hg/store
+
+before commit
+store can be written by the group, other files cannot
+store is setgid
+
+ $ python ../printmodes.py .
+ 00700 ./.hg/
+ 00600 ./.hg/00changelog.i
+ 00600 ./.hg/requires
+ 00770 ./.hg/store/
+
+ $ mkdir dir
+ $ touch foo dir/bar
+ $ hg ci -qAm 'add files'
+
+after commit
+working dir files can only be written by the owner
+files created in .hg can be written by the group
+(in particular, store/**, dirstate, branch cache file, undo files)
+new directories are setgid
+
+ $ python ../printmodes.py .
+ 00700 ./.hg/
+ 00600 ./.hg/00changelog.i
+ 00660 ./.hg/dirstate
+ 00660 ./.hg/last-message.txt
+ 00600 ./.hg/requires
+ 00770 ./.hg/store/
+ 00660 ./.hg/store/00changelog.i
+ 00660 ./.hg/store/00manifest.i
+ 00770 ./.hg/store/data/
+ 00770 ./.hg/store/data/dir/
+ 00660 ./.hg/store/data/dir/bar.i
+ 00660 ./.hg/store/data/foo.i
+ 00660 ./.hg/store/fncache
+ 00660 ./.hg/store/undo
+ 00660 ./.hg/undo.branch
+ 00660 ./.hg/undo.desc
+ 00660 ./.hg/undo.dirstate
+ 00700 ./dir/
+ 00600 ./dir/bar
+ 00600 ./foo
+
+ $ umask 007
+ $ hg init ../push
+
+before push
+group can write everything
+
+ $ python ../printmodes.py ../push
+ 00770 ../push/.hg/
+ 00660 ../push/.hg/00changelog.i
+ 00660 ../push/.hg/requires
+ 00770 ../push/.hg/store/
+
+ $ umask 077
+ $ hg -q push ../push
+
+after push
+group can still write everything
+
+ $ python ../printmodes.py ../push
+ 00770 ../push/.hg/
+ 00660 ../push/.hg/00changelog.i
+ 00660 ../push/.hg/branchheads.cache
+ 00660 ../push/.hg/requires
+ 00770 ../push/.hg/store/
+ 00660 ../push/.hg/store/00changelog.i
+ 00660 ../push/.hg/store/00manifest.i
+ 00770 ../push/.hg/store/data/
+ 00770 ../push/.hg/store/data/dir/
+ 00660 ../push/.hg/store/data/dir/bar.i
+ 00660 ../push/.hg/store/data/foo.i
+ 00660 ../push/.hg/store/fncache
+ 00660 ../push/.hg/store/undo
+ 00660 ../push/.hg/undo.branch
+ 00660 ../push/.hg/undo.desc
+ 00660 ../push/.hg/undo.dirstate
+
+
+Test that we don't lose the setgid bit when we call chmod.
+Not all systems support setgid directories (e.g. HFS+), so
+just check that directories have the same mode.
+
+ $ cd ..
+ $ hg init setgid
+ $ cd setgid
+ $ chmod g+rwx .hg/store
+ $ chmod g+s .hg/store 2> /dev/null
+ $ mkdir dir
+ $ touch dir/file
+ $ hg ci -qAm 'add dir/file'
+ $ storemode=`python ../mode.py .hg/store`
+ $ dirmode=`python ../mode.py .hg/store/data/dir`
+ $ if [ "$storemode" != "$dirmode" ]; then
+ > echo "$storemode != $dirmode"
+ $ fi