# vim: ft=sh: tsh pwd || die '## tsh not installed?' # note 'tc' is an abbreviation for 'test-commit' in tsh lingo for wr in 0 1 do for bc in 0 1 do cd $TESTDIR $TESTDIR/rollback || die "rollback failed" editrc GL_WILDREPOS $wr editrc GL_BIG_CONFIG $bc # ---------- name "INTERNAL" echo " @gfoo = foo @lead = u1 @senior_devs = u2 u3 @junior_devs = u4 u5 u6 repo @gfoo RW+ = @all RW+ VREF/COUNT/2/NO_SIGNOFF = @lead - VREF/COUNT/2/NO_SIGNOFF = @all - VREF/COUNT/10/NEWFILES = @junior_devs - VREF/FILETYPE/AUTOGENERATED = @all " | ugc name "setup" cd ~/td tsh " ls -al foo; !ok; /cannot access foo: No such file or directory/ clone u1:foo; ok; /Cloning into/ /You appear to have cloned an empty/ " cd foo tsh " ls -Al; ok; /\.git/ " name "u1 can push 15 new files" tsh " tc a b c d e f g h i j k l m n o ok; /d8c0392/ push-om; ok; /new branch.*master -. master/ " name "u2 can push 2 new and 10 old files without signoff" tsh " tc a b c d e f g h i j u2a u2b ok; /6787ac9/ push u2:foo; ok; /d8c0392..6787ac9.*master -. master/ " name "u2 cannot push 3 new files without signoff" tsh " tc u2c u2d u2e; ok; /a74562b/ push u2:foo; !ok; /W VREF/COUNT/2/NO_SIGNOFF foo u2 DENIED by VREF/COUNT/2/NO_SIGNOFF/ /top commit message should include the text .3 new files signed-off by: tester.example.com./ /hook declined/ /remote rejected/ " name "u2 can push 15 new files with signoff" tsh " tc u2f u2g u2h u2i u2j u2k u2l u2m u2n u2o u2p u2q ok; /8dd31aa/ git commit --allow-empty -m '15 new files signed-off by: tester@example.com' ok; /.master 6126489. 15 new files signed-off by: tester.example.com/ push u2:foo; ok; /6787ac9..6126489.*master -. master/ " name "u4 can push 2 new and 10 old files without signoff" tsh " tc u4a u4b a b c d e f g h i j ok; /76c5593/ push u4:foo; ok; /6126489..76c5593.*master -. master/ " name "u4 cannot push 3 new files without signoff" tsh " tc u4c u4d u4e; ok; /2a84398/ push u4:foo; !ok; /W VREF/COUNT/2/NO_SIGNOFF foo u4 DENIED by VREF/COUNT/2/NO_SIGNOFF/ /top commit message should include the text .3 new files signed-off by: tester.example.com./ /hook declined/ /remote rejected/ " name "u4 can push 10 new and 5 old files with signoff" tsh " tc u4f u4g u4h u4i u4j u4k u4l a b c d e ok; /09b646a/ git commit --allow-empty -m '10 new files signed-off by: tester@example.com' ok; /.master 47f84b0. 10 new files signed-off by: tester.example.com/ push u4:foo; ok; /76c5593..47f84b0.*master -. master/ " name "u4 cannot push 11 new files even with signoff" tsh " tc u4ab u4ac u4ad u4ae u4af u4ag u4ah u4ai u4aj u4ak u4al ok; /90e7344/ git commit --allow-empty -m '11 new files signed-off by: tester@example.com' ok; /.master 1f36537. 11 new files signed-off by: tester.example.com/ push u4:foo; !ok; /W VREF/COUNT/10/NEWFILES foo u4 DENIED by VREF/COUNT/10/NEWFILES/ /too many new files in this push/ /hook declined/ /remote rejected/ " name "test AUTOGENERATED vref" tsh " fetch; ok; reset-h origin/master; ok; " tsh " tc not-really.java; ok; /0f88b2e/ push u4:foo; ok; /47f84b0..0f88b2e.*master -. master/ " echo "Generated by the protocol buffer compiler. DO NOT EDIT" >> not-really.java tsh " commit -am pbc; ok; /aa3d8da/ push u4:foo; !ok; /W VREF/FILETYPE/AUTOGENERATED foo u4 DENIED by VREF/FILETYPE/AUTOGENERATED/ /hook declined/ /remote rejected/ " name INTERNAL done done