Mercurial > hg-stable
changeset 12096:bb69460e9d2d
tests: unify test-inherit-mode
author | Nicolas Dumazet <nicdumz.commits@gmail.com> |
---|---|
date | Mon, 30 Aug 2010 12:46:19 +0900 |
parents | 80b0865b3fa5 |
children | 389c215885c5 |
files | tests/test-bisect.t tests/test-churn.t tests/test-inherit-mode tests/test-inherit-mode.out tests/test-inherit-mode.t |
diffstat | 3 files changed, 140 insertions(+), 150 deletions(-) [+] |
line wrap: on
line diff
--- 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