# vim: syn=sh:
cd $TESTDIR
$TESTDIR/rollback || die "rollback failed"

rm -rf $ADC_PATH
mkdir  $ADC_PATH || die "mkdir $ADC_PATH failed"
cp ../contrib/adc/* $ADC_PATH
echo "\$GL_ADC_PATH = '$ADC_PATH';" | addrc

runremote rm -rf /tmp/rsyncbase
runremote mkdir  /tmp/rsyncbase
editrc REPO_UMASK 0022
echo "\$RSYNC_BASE = '/tmp/rsyncbase';" | addrc

# ----------

name "INTERNAL"
echo "
    @leads = u1 u2
    @devs = u1 u2 u3 u4

    repo EXTCMD/rsync
        RW  NAME/           =   u1
        -   NAME/spl        =   @all
        RW  NAME/           =   u2
        RW  NAME/foo/       =   u3
" | ugc
expect_push_ok "master -> master"

name "u1 rsync to frob"
cd ~/gitolite-admin
runlocal rsync -avP conf u1:frob
expect conf/gitolite.conf
expect 100%
expect "total size is"
runlocal find /tmp/rsyncbase -type f
expect /tmp/rsyncbase/frob/conf/gitolite.conf

name "u1 rsync from frob to local"
cd ~/td
rm -rf frobhere
runlocal rsync -avP u1:frob frobhere
runlocal find frobhere -type f
expect frobhere/frob/conf/gitolite.conf

name "u2 rsync to nitz"
cd ~/gitolite-admin
runlocal rsync -avP conf u2:nitz
expect conf/gitolite.conf
expect 100%
expect "total size is"
runlocal find /tmp/rsyncbase -type f
expect /tmp/rsyncbase/nitz/conf/gitolite.conf

name "u2 rsync to spl"
cd ~/gitolite-admin
runlocal rsync -avP conf u2:spl
expect "W NAME/spl EXTCMD/rsync u2 DENIED by NAME/spl"

name "u1 rsync to spl"
cd ~/gitolite-admin
runlocal rsync -avP conf u1:spl
expect 100%
expect "total size is"

name "u2 rsync from spl"
cd ~/td
runlocal rsync -avP u2:spl splhere
expect "R NAME/spl EXTCMD/rsync u2 DENIED by NAME/spl"

name "u1 rsync from spl"
cd ~/td
runlocal rsync -avP u1:spl splhere
expect 100%
expect "total size is"

name "u3 rsync to foo"
cd ~/gitolite-admin
runlocal rsync -avP conf u3:foo/
expect 100%
expect "total size is"

name "u3 rsync to bar"
cd ~/gitolite-admin
runlocal rsync -avP conf u3:bar
expect "W NAME/bar EXTCMD/rsync u3 DENIED by fallthru"

name "INTERNAL"