test-acl
109 lines
| 2.3 KiB
| text/plain
|
TextLexer
/ tests / test-acl
Alexis S. L. Carvalho
|
r3426 | #!/bin/sh | ||
do_push() | ||||
{ | ||||
user=$1 | ||||
shift | ||||
echo "Pushing as user $user" | ||||
echo 'hgrc = """' | ||||
sed -e 1,2d b/.hg/hgrc | ||||
echo '"""' | ||||
Alexis S. L. Carvalho
|
r3469 | if test -f acl.config; then | ||
Alexis S. L. Carvalho
|
r3426 | echo 'acl.config = """' | ||
cat acl.config | ||||
echo '"""' | ||||
fi | ||||
LOGNAME=$user hg --cwd a --debug push ../b | ||||
hg --cwd b rollback | ||||
hg --cwd b --quiet tip | ||||
echo | ||||
} | ||||
hg init a | ||||
cd a | ||||
mkdir foo foo/Bar quux | ||||
echo 'in foo' > foo/file.txt | ||||
echo 'in foo/Bar' > foo/Bar/file.txt | ||||
echo 'in quux' > quux/file.py | ||||
hg add | ||||
hg ci -m 'add files' -d '1000000 0' | ||||
echo >> foo/file.txt | ||||
hg ci -m 'change foo/file' -d '1000001 0' | ||||
echo >> foo/Bar/file.txt | ||||
hg ci -m 'change foo/Bar/file' -d '1000002 0' | ||||
echo >> quux/file.py | ||||
hg ci -m 'change quux/file' -d '1000003 0' | ||||
hg tip --quiet | ||||
cd .. | ||||
hg clone -r 0 a b | ||||
echo '[extensions]' >> $HGRCPATH | ||||
echo 'hgext.acl =' >> $HGRCPATH | ||||
config=b/.hg/hgrc | ||||
echo | ||||
echo 'Extension disabled for lack of a hook' | ||||
do_push fred | ||||
echo '[hooks]' >> $config | ||||
echo 'pretxnchangegroup.acl = python:hgext.acl.hook' >> $config | ||||
echo 'Extension disabled for lack of acl.sources' | ||||
do_push fred | ||||
echo 'No [acl.allow]/[acl.deny]' | ||||
echo '[acl]' >> $config | ||||
echo 'sources = push' >> $config | ||||
do_push fred | ||||
echo 'Empty [acl.allow]' | ||||
echo '[acl.allow]' >> $config | ||||
do_push fred | ||||
echo 'fred is allowed inside foo/' | ||||
echo 'foo/** = fred' >> $config | ||||
do_push fred | ||||
echo 'Empty [acl.deny]' | ||||
echo '[acl.deny]' >> $config | ||||
do_push barney | ||||
echo 'fred is allowed inside foo/, but not foo/bar/ (case matters)' | ||||
echo 'foo/bar/** = fred' >> $config | ||||
do_push fred | ||||
echo 'fred is allowed inside foo/, but not foo/Bar/' | ||||
echo 'foo/Bar/** = fred' >> $config | ||||
do_push fred | ||||
echo 'barney is not mentioned => not allowed anywhere' | ||||
do_push barney | ||||
echo 'barney is allowed everywhere' | ||||
echo '[acl.allow]' >> $config | ||||
echo '** = barney' >> $config | ||||
do_push barney | ||||
echo 'wilma can change files with a .txt extension' | ||||
echo '**/*.txt = wilma' >> $config | ||||
do_push wilma | ||||
echo 'file specified by acl.config does not exist' | ||||
echo '[acl]' >> $config | ||||
echo 'config = ../acl.config' >> $config | ||||
do_push barney | ||||
echo 'betty is allowed inside foo/ by a acl.config file' | ||||
echo '[acl.allow]' >> acl.config | ||||
echo 'foo/** = betty' >> acl.config | ||||
do_push betty | ||||
Alexis S. L. Carvalho
|
r3436 | echo 'acl.config can set only [acl.allow]/[acl.deny]' | ||
echo '[hooks]' >> acl.config | ||||
echo 'changegroup.acl = false' >> acl.config | ||||
do_push barney | ||||