#!/usr/bin/perl
use strict;
use warnings;

# this is hardcoded; change it if needed
use lib "src/lib";
use Gitolite::Test;

# invalid refnames
# ----------------------------------------------------------------------

try "plan 56";
try "DEF POK = !/DENIED/; !/failed to push/";

confreset; confadd '
    repo aa
        RW+                 =   @all
';

try "ADMIN_PUSH set1; !/FATAL/" or die text();

try "

cd ..
rm -rf aa
glt clone u1 file:///aa
cd aa
tc v-869

glt push u1 origin HEAD
        /To file:///aa/
        POK; /\\* \\[new branch\\]      HEAD -> master/

# push file aa,bb ok
tc  aa,bb
glt push u1 origin HEAD
        /To file:///aa/
        POK; /HEAD -> master/

# push file aa=bb ok
tc  aa=bb
glt push u1 origin HEAD
        /To file:///aa/
        POK; /HEAD -> master/

# push to branch dd,ee ok
glt push u1 origin master:dd,ee
        /To file:///aa/
        POK; /\\* \\[new branch\\]      master -> dd,ee/

# push to branch dd=ee fail
glt push u1 origin master:dd=ee
        /invalid characters in ref or filename: \\'refs/heads/dd=ee/
        reject
";

confreset; confadd '
    repo aa
        RW+                 =   @all
        RW+ NAME/           =   @all
';

try "ADMIN_PUSH set1; !/FATAL/" or die text();

try "

cd ..
rm -rf aa
glt clone u1 file:///aa
cd aa
tc  file-1

glt push u1 origin HEAD
        /To file:///aa/
        POK; /\\* \\[new branch\\]      HEAD -> master/

# push file aa,bb ok
tc  aa,bb
glt push u1 origin HEAD
        /To file:///aa/
        POK; /HEAD -> master/

# push file aa=bb fail
tc  aa=bb
glt push u1 origin HEAD
        /To file:///aa/
        POK; /HEAD -> master/

# push to branch dd,ee ok
git reset --hard HEAD^
tc  some-file
glt push u1 origin master:dd,ee
        /To file:///aa/
        POK; /\\* \\[new branch\\]      master -> dd,ee/

# push to branch dd=ee fail
glt push u1 origin master:dd=ee
        /invalid characters in ref or filename: \\'refs/heads/dd=ee/
        reject
";
