Mercurial > hg
view tests/test-inherit-mode @ 10715:83dce0f817f4
add a small test for contrib/check-code.py
This changeset adds a test file for contrib/check-code.py. This test runs
check-code.py against two small files. The first file should not raise any
check-code.py error while the second should. A line contains multiple errors to
verify the check-code.py behaviour: In the case of multiple errors at the same
line, the context line should only be displayed once.
author | Pierre-Yves David <pierre-yves.david@logilab.fr> |
---|---|
date | Tue, 16 Mar 2010 19:52:55 +0100 |
parents | 68cfd7d208a5 |
children |
line wrap: on
line source
#!/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