#!/usr/bin/perl use strict; use warnings; # this is hardcoded; change it if needed use lib "src/lib"; use Gitolite::Test; # uhh, seems to be another rule sequence test # ---------------------------------------------------------------------- try "plan 48"; confreset;confadd ' @staff = u1 u2 u3 @gfoo = foo/CREATOR/..* repo @gfoo C = u1 RW+ = CREATOR RW = WRITERS - = @staff '; try "ADMIN_PUSH set1; !/FATAL/" or die text(); try " cd .. glt clone u1 file:///foo/u1/bar; ok /Initialized empty Git repository in .*/foo/u1/bar.git// cd bar tc p-906 glt push u1 origin master /To file:///foo/u1/bar/ /\\[new branch\\] master -> master/ echo WRITERS u2 | glt perms u1 -c foo/u1/bar glt perms u1 foo/u1/bar -l /WRITERS u2/ # expand glt info u2 /R W *\tfoo/u1/bar/ /R W *\ttesting/ # push cd .. glt clone u2 file:///foo/u1/bar u2bar /Cloning into 'u2bar'.../ cd u2bar tc p-222 glt push u2 /master -> master/ !/DENIED/ !/failed to push/ "; confreset;confadd ' @staff = u1 u2 u3 @gfoo = foo/CREATOR/..* repo @gfoo C = u1 RW+ = CREATOR - = @staff RW = WRITERS R = READERS '; try "ADMIN_PUSH set1; !/FATAL/" or die text(); try " cd .. rm -rf bar u2bar glt clone u1 file:///foo/u1/bar; ok /Initialized empty Git repository in .*/foo/u1/bar.git// cd bar tc p-906 glt push u1 origin master /To file:///foo/u1/bar/ /\\[new branch\\] master -> master/ echo WRITERS u2 | glt perms u1 -c foo/u1/bar glt perms u1 foo/u1/bar -l /WRITERS u2/ # expand glt info u2 !/R W *\tfoo/u1/baz/ /R W *\tfoo/u1/bar/ /R W *\ttesting/ # push cd .. glt clone u2 file:///foo/u1/bar u2bar /Cloning into 'u2bar'.../ cd u2bar tc p-222 glt push u2 !ok reject /W refs/heads/master foo/u1/bar u2 DENIED by refs/\\.\\*/ # auto-create using perms fail echo READERS u5 | glt perms u4 -c foo/u4/baz !/Initialized empty Git repository in .*/foo/u4/baz.git/ /FATAL: repo does not exist, or you are not authorised/ # auto-create using perms echo READERS u2 | glt perms u1 -c foo/u1/baz /Initialized empty Git repository in .*/foo/u1/baz.git/ glt perms u1 foo/u1/baz -l /READERS u2/ # expand glt info u2 /R *\tfoo/u1/baz/ /R W *\tfoo/u1/bar/ /R W *\ttesting/ ";