gitolite/t/t59-repo-not-on-disk
2011-11-27 08:43:36 +05:30

121 lines
3.7 KiB
Plaintext

# vim: syn=sh:
# check basic repo level permissions, including what happens when the repo on
# disk is missing (non-wildcard only)
for bc in 0 1
do
cd $TESTDIR
$TESTDIR/rollback || die "rollback failed"
editrc GL_BIG_CONFIG $bc
name "INTERNAL"
echo "
@g1 = u1 u2
@g2 = u3 u4
@g3 = u5 u6
repo aa
RW+ = tester
RW = @g1
R = @g2
" | ugc
expect_push_ok "master -> master"
expect "remote: Initialized empty Git repository in $TEST_BASE_FULL/aa.git/"
cd ~/td
name "check u1 can auto-create and push"
runlocal git clone u1:aa
expect "Cloning into 'aa'..."
expect "warning: You appear to have cloned an empty repository"
cd ~/td/aa
mdc; mdc; mdc
mdc; mdc; mdc
mdc; mdc; mdc
name "INTERNAL"
runlocal git push origin HEAD
expect "To u1:aa"
expect "\* \[new branch\] HEAD -> master"
expect_push_ok "HEAD -> master"
name "check u1 cant rewind"
runlocal git reset --hard HEAD^
runlocal git push origin +master
expect "remote: + refs/heads/master aa u1 DENIED by fallthru"
expect "remote: error: hook declined to update refs/heads/master"
expect "\[remote rejected\] master -> master (hook declined)"
cd ~/td
rm -rf aa
name "check tester can rewind"
runlocal git clone gitolite:aa
expect "Cloning into 'aa'..."
cd aa
runlocal git reset --hard HEAD^
runlocal git push origin +master
expect_push_ok "master -> master (forced update)"
cd ~/td
rm -rf aa
name "check u4 can only read"
runlocal git clone u4:aa
expect "Cloning into 'aa'..."
cd aa
mdc; mdc; mdc
runlocal git push origin master
expect "W access for aa DENIED to u4"
cd ~/td
rm -rf aa
name "check u6 cant even read"
runlocal git clone u6:aa
expect "Cloning into 'aa'..."
expect "R access for aa DENIED to u6"
# now the same thing with the repo-on-disk missing
runremote rm -rf $TEST_BASE/aa.git
cd ~/td
name "repo on disk missing: u1"
runlocal git clone u1:aa
[ "$bc" = "0" ] && expect "fatal: '$TEST_BASE_FULL/aa.git' does not appear to be a git repository"
[ "$bc" = "1" ] && expect "R access for aa DENIED to u1"
[ "$bc" = "1" ] && expect "Or there may be no repository at the given path. Did you spell it correctly?"
name "repo on disk missing: tester"
runlocal git clone gitolite:aa
[ "$bc" = "0" ] && expect "fatal: '$TEST_BASE_FULL/aa.git' does not appear to be a git repository"
[ "$bc" = "1" ] && expect "R access for aa DENIED to tester"
[ "$bc" = "1" ] && expect "Or there may be no repository at the given path. Did you spell it correctly?"
name "repo on disk missing: u4"
runlocal git clone u4:aa
[ "$bc" = "0" ] && expect "fatal: '$TEST_BASE_FULL/aa.git' does not appear to be a git repository"
[ "$bc" = "1" ] && expect "R access for aa DENIED to u4"
[ "$bc" = "1" ] && expect "Or there may be no repository at the given path. Did you spell it correctly?"
name "repo on disk missing: u6"
runlocal git clone u6:aa
expect "R access for aa DENIED to u6"
# now the same thing with a repo that is not even in the config
cd ~/td
name "repo on disk missing: u1"
runlocal git clone u1:bb
expect "R access for bb DENIED to u1"
name "repo on disk missing: tester"
runlocal git clone gitolite:bb
expect "R access for bb DENIED to tester"
name "repo on disk missing: u4"
runlocal git clone u4:bb
expect "R access for bb DENIED to u4"
name "repo on disk missing: u6"
runlocal git clone u6:bb
expect "R access for bb DENIED to u6"
name INTERNAL
done