diff --git a/t/rule-seq.t b/t/rule-seq.t new file mode 100755 index 0000000..b7e3386 --- /dev/null +++ b/t/rule-seq.t @@ -0,0 +1,87 @@ +#!/usr/bin/perl +use strict; +use warnings; + +# this is hardcoded; change it if needed +use lib "src"; +use Gitolite::Test; + +# rule sequence +# ---------------------------------------------------------------------- + +# this is the specific example in commit 32056e0 of g2 + +try "plan 27"; + +try "DEF POK = !/DENIED/; !/failed to push/"; + +confreset; confadd ' + @private-owners = u1 u2 + @experienced-private-owners = u3 u4 + + repo CREATOR/.* + C = @private-owners @experienced-private-owners + RWD = CREATOR + RW = WRITERS + R = READERS + - = @private-owners + RW+D = CREATOR +'; + +try "ADMIN_PUSH set1; !/FATAL/" or die text(); + +try " + cd .. + glt clone u1 file:///u1/r1 + /Initialized empty Git repository in .*/u1/r1.git// + cd r1 + tc h-395 + glt push u1 origin master + git checkout -b br1 + tc m-367 + tc i-747 + + # u1 create branch + glt push u1 origin br1 + /\\* \\[new branch\\] br1 -> br1/ + POK; /br1 -> br1/ + + # u1 rewind branch + git reset --hard HEAD^ + tc e-633 + glt push u1 origin +br1 + /\\+ refs/heads/br1 u1/r1 u1 DENIED by refs// + /error: hook declined to update refs/heads/br1/ + reject + + # u1 delete branch + glt push u1 origin :br1 + /\\[deleted\\] br1/ + + cd .. + rm -rf r1 + glt clone u3 file:///u3/r1 + /Initialized empty Git repository in .*/u3/r1.git// + cd r1 + tc p-274 + glt push u3 origin master + git checkout -b br1 + tc s-613 + tc k-988 + + # u3 create branch + glt push u3 origin br1 + /\\* \\[new branch\\] br1 -> br1/ + POK; /br1 -> br1/ + + # u3 rewind branch + git reset --hard HEAD^ + tc n-919 + glt push u3 origin +br1 + /To file:///u3/r1/ + /\\+ .......\\.\\.\\........ br1 -> br1 \\(forced update\\)/ + + # u3 delete branch + glt push u3 origin :br1 + /\\[deleted\\] br1/ +";