Mercurial > hg
changeset 6064:c608f67a87c0
add test-inherit-mode
author | Alexis S. L. Carvalho <alexis@cecm.usp.br> |
---|---|
date | Sat, 09 Feb 2008 18:38:54 -0200 |
parents | b74a0c4bfb30 |
children | 53ed9b40cfc4 |
files | tests/test-inherit-mode tests/test-inherit-mode.out |
diffstat | 2 files changed, 121 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/test-inherit-mode Sat Feb 09 18:38:54 2008 -0200 @@ -0,0 +1,67 @@ +#!/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 + +umask 077 + +hg init repo +cd repo + +chmod 02770 .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)' +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
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/test-inherit-mode.out Sat Feb 09 18:38:54 2008 -0200 @@ -0,0 +1,54 @@ +% before commit +% store can be written by the group, other files cannot +% store is setgid +00700 ./.hg/ +00600 ./.hg/00changelog.i +00600 ./.hg/requires +02770 ./.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) +% new directories are setgid +00700 ./.hg/ +00600 ./.hg/00changelog.i +00660 ./.hg/dirstate +00600 ./.hg/requires +02770 ./.hg/store/ +00660 ./.hg/store/00changelog.i +00660 ./.hg/store/00manifest.i +02770 ./.hg/store/data/ +02770 ./.hg/store/data/dir/ +00660 ./.hg/store/data/dir/bar.i +00660 ./.hg/store/data/foo.i +00600 ./.hg/store/undo +00660 ./.hg/undo.branch +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/branch.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 +00600 ../push/.hg/store/undo +00660 ../push/.hg/undo.branch +00660 ../push/.hg/undo.dirstate