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