# vim: syn=sh: for bc in 0 1 do cd $TESTDIR $TESTDIR/rollback || die "rollback failed" editrc GL_BIG_CONFIG $bc # ---------- # test "C" permissions name "INTERNAL" echo " @leads = u1 u2 @devs = u1 u2 u3 u4 @gfoo = foo repo @gfoo RW+C = @leads RW+C personal/USER/ = @devs RW = @devs " | ugc cd ~/td runlocal git clone u1:foo cd foo mdc; mdc; mdc; mdc; mdc name "u1 can push/rewind master on foo" runlocal git push origin master expect_push_ok "master -> master" runlocal git push -f origin master^^:master expect_push_ok "master^^ -> master" name "u2 can create newbr1 on foo" runlocal git push u2:foo master:newbr1 expect_push_ok "master -> newbr1" name "u2 can create newtag on foo" runlocal git tag newtag runlocal git push u2:foo newtag expect_push_ok "newtag -> newtag" name "u3 can push newbr1 on foo" mdc; mdc; mdc; mdc; mdc runlocal git push u3:foo master:newbr1 expect_push_ok "master -> newbr1" name "u4 canNOT create newbr2 on foo" mdc; mdc; mdc; mdc; mdc runlocal git push u3:foo master:newbr2 expect "remote: C refs/heads/newbr2 foo u3 DENIED by fallthru" expect "hook declined" expect "failed to push" name "u4 canNOT create newtag2 on foo" runlocal git tag newtag2 runlocal git push u3:foo newtag2 expect "remote: C refs/tags/newtag2 foo u3 DENIED by fallthru" expect "hook declined" expect "failed to push" name "u4 can create/rewind personal/u4/newbr3 on foo" mdc; mdc; mdc; mdc; mdc runlocal git push u4:foo master:personal/u4/newbr3 expect_push_ok "master -> personal/u4/newbr3" runlocal git push -f origin master^^:personal/u4/newbr3 expect_push_ok "master^^ -> personal/u4/newbr3" # bar, without "C" permissions, should behave like old name "INTERNAL" echo " @leads = u1 u2 @devs = u1 u2 u3 u4 @gbar = bar repo @gbar RW+ = @leads RW+ personal/USER/ = @devs RW = @devs " | ugc cd ~/td runlocal git clone u1:bar cd bar mdc; mdc; mdc; mdc; mdc name "u1 can push/rewind master on bar" runlocal git push origin master expect_push_ok "master -> master" runlocal git push -f origin master^^:master expect_push_ok "master^^ -> master" name "u2 can create newbr1 on bar" runlocal git push u2:bar master:newbr1 expect_push_ok "master -> newbr1" name "u2 can create newtag on bar" runlocal git tag newtag runlocal git push u2:bar newtag expect_push_ok "newtag -> newtag" name "u3 can push newbr1 on bar" mdc; mdc; mdc; mdc; mdc runlocal git push u3:bar master:newbr1 expect_push_ok "master -> newbr1" name "u4 can create newbr2 on bar" mdc; mdc; mdc; mdc; mdc runlocal git push u3:bar master:newbr2 expect_push_ok "master -> newbr2" name "u4 can create newtag2 on bar" runlocal git tag newtag2 runlocal git push u3:bar newtag2 expect_push_ok "newtag2 -> newtag2" name "u4 can create/rewind personal/u4/newbr3 on bar" mdc; mdc; mdc; mdc; mdc runlocal git push u4:bar master:personal/u4/newbr3 expect_push_ok "master -> personal/u4/newbr3" runlocal git push -f origin master^^:personal/u4/newbr3 expect_push_ok "master^^ -> personal/u4/newbr3" name INTERNAL done