(!!) personal branches -- 1 line of code, 50 lines of test!

(and by the way even in g2 this was not so easy as just ONE line of
code!)
This commit is contained in:
Sitaram Chamarty 2012-03-15 16:00:15 +05:30
parent 876f6517f5
commit 9780ddab9d
2 changed files with 52 additions and 1 deletions

View file

@ -68,7 +68,7 @@ sub access {
trace( 3, scalar(@rules) . " rules found" ); trace( 3, scalar(@rules) . " rules found" );
for my $r (@rules) { for my $r (@rules) {
my $perm = $r->[1]; my $perm = $r->[1];
my $refex = $r->[2]; my $refex = $r->[2]; $refex =~ s(/USER/)(/$user/);
trace( 4, "perm=$perm, refex=$refex" ); trace( 4, "perm=$perm, refex=$refex" );
# skip 'deny' rules if the ref is not (yet) known # skip 'deny' rules if the ref is not (yet) known

51
t/personal-branches.t Executable file
View file

@ -0,0 +1,51 @@
#!/usr/bin/perl
use strict;
use warnings;
# this is hardcoded; change it if needed
use lib "src";
use Gitolite::Test;
# basic tests
# ----------------------------------------------------------------------
try "plan 39";
confreset;confadd '
@admins = admin dev1
repo gitolite-admin
RW+ = admin
repo testing
RW+ = @all
@g1 = t1
repo @g1
R = u2
RW = u3
RW+ = u4
RW a/USER/ = @all
RW+ p/USER/ = u1 u6
';
try "ADMIN_PUSH set1; !/FATAL/" or die text();
try "
gitolite access t1 u1; ok; /refs/heads/p/u1//; !/DENIED/
gitolite access t1 u5; !ok; /\\+ any t1 u5 DENIED by fallthru/
gitolite access \@g1 u5 W; ok; /refs/heads/a/u5//; !/DENIED/
gitolite access t1 u1 W refs/heads/a/user1/foo; !ok; /W refs/heads/a/user1/foo t1 u1 DENIED by fallthru/
gitolite access \@g1 u1 + refs/heads/a/user1/foo; !ok; /\\+ refs/heads/a/user1/foo \@g1 u1 DENIED by fallthru/
gitolite access t1 u1 W refs/heads/p/user1/foo; !ok; /W refs/heads/p/user1/foo t1 u1 DENIED by fallthru/
gitolite access \@g1 u1 + refs/heads/p/user1/foo; !ok; /\\+ refs/heads/p/user1/foo \@g1 u1 DENIED by fallthru/
gitolite access \@g1 u1 W refs/heads/a/u1/foo; ok; /refs/heads/a/u1//; !/DENIED/
gitolite access t1 u1 + refs/heads/a/u1/foo; !ok; /\\+ refs/heads/a/u1/foo t1 u1 DENIED by fallthru/
gitolite access \@g1 u1 W refs/heads/p/u1/foo; ok; /refs/heads/p/u1//; !/DENIED/
gitolite access t1 u1 + refs/heads/p/u1/foo; ok; /refs/heads/p/u1//; !/DENIED/
gitolite access \@g1 u1 W refs/heads/p/u2/foo; !ok; /W refs/heads/p/u2/foo \@g1 u1 DENIED by fallthru/
gitolite access t1 u1 + refs/heads/p/u2/foo; !ok; /\\+ refs/heads/p/u2/foo t1 u1 DENIED by fallthru/
";