# vim: syn=sh:
for bc in 0 1
do
    cd $TESTDIR
    $TESTDIR/rollback || die "rollback failed"
    editrc GL_WILDREPOS 1
    editrc GL_BIG_CONFIG $bc

    name "INTERNAL"
    echo "
        @leads = u1 u2
        @devs = u1 u2 u3 u4

        @gbar = bar/CREATOR/..*
        repo    @gbar
            C               =   @leads
            RW+             =   CREATOR
            RW              =   WRITERS
            R               =   READERS
    " | ugc
    name "nothing set yet"
    expect_push_ok "master -> master"

    name "u1 auto-creates a repo"
    runlocal git ls-remote u1:bar/u1/try1
    expect "Initialized empty Git repository in $TEST_BASE_FULL/bar/u1/try1.git/"
    name "default permissions for u2 and u4"
    runlocal ssh u1 expand
    expect R.*W.*u1.*bar/u1/try1
    runlocal ssh u2 expand
    notexpect R.*W.*u1.*bar/u1/try1
    runlocal ssh u4 expand
    notexpect R.*W.*u1.*bar/u1/try1

    name "@leads can RW try1"
    echo RW @leads | runlocal ssh u1 setperms bar/u1/try1
    expect "WRITERS @leads"
    runlocal ssh u1 expand
    expect R.*W.*u1.*bar/u1/try1
    runlocal ssh u2 expand
    expect R.*W.*u1.*bar/u1/try1
    runlocal ssh u4 expand
    notexpect R.*W.*u1.*bar/u1/try1

    name "@devs can R try1"
    echo R @devs | runlocal ssh u1 setperms bar/u1/try1
    expect "READERS @devs"
    notexpect "RW @leads"
    notexpect "WRITERS @leads"
    runlocal ssh u1 expand
    expect R.*W.*u1.*bar/u1/try1
    runlocal ssh u2 expand
    notexpect R.*W.*u1.*bar/u1/try1
    expect R.*u1.*bar/u1/try1
    runlocal ssh u4 expand
    notexpect R.*W.*u1.*bar/u1/try1
    expect R.*u1.*bar/u1/try1

    name "combo of previous 2"
    printf "R @devs\nRW @leads\n" | runlocal ssh u1 setperms bar/u1/try1
    expect "READERS @devs"
    expect "WRITERS @leads"
    runlocal ssh u1 expand
    expect R.*W.*u1.*bar/u1/try1
    runlocal ssh u2 expand
    expect R.*W.*u1.*bar/u1/try1
    runlocal ssh u4 expand
    notexpect R.*W.*u1.*bar/u1/try1
    expect R.*u1.*bar/u1/try1

    name "INTERNAL"

done