tests/test-acl
author Matt Mackall <mpm@selenic.com>
Tue, 02 Dec 2008 13:05:40 -0600
changeset 7461 2a67430f92f1
parent 4138 85237110c371
child 7512 0d488f7f321d
permissions -rwxr-xr-x
encoding: normalize some silly encoding names
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
3426
bb00a5a92c30 Add a test for the acl extension
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
     1
#!/bin/sh
bb00a5a92c30 Add a test for the acl extension
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
     2
bb00a5a92c30 Add a test for the acl extension
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
     3
do_push()
bb00a5a92c30 Add a test for the acl extension
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
     4
{
bb00a5a92c30 Add a test for the acl extension
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
     5
    user=$1
bb00a5a92c30 Add a test for the acl extension
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
     6
    shift
bb00a5a92c30 Add a test for the acl extension
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
     7
bb00a5a92c30 Add a test for the acl extension
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
     8
    echo "Pushing as user $user"
bb00a5a92c30 Add a test for the acl extension
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
     9
    echo 'hgrc = """'
bb00a5a92c30 Add a test for the acl extension
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
    10
    sed -e 1,2d b/.hg/hgrc
bb00a5a92c30 Add a test for the acl extension
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
    11
    echo '"""'
3469
33b6c8193652 Don't use test -e in tests - sh doesn't like it on Solaris
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 3436
diff changeset
    12
    if test -f acl.config; then
3426
bb00a5a92c30 Add a test for the acl extension
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
    13
	echo 'acl.config = """'
bb00a5a92c30 Add a test for the acl extension
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
    14
	cat acl.config
bb00a5a92c30 Add a test for the acl extension
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
    15
	echo '"""'
bb00a5a92c30 Add a test for the acl extension
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
    16
    fi
bb00a5a92c30 Add a test for the acl extension
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
    17
    LOGNAME=$user hg --cwd a --debug push ../b
bb00a5a92c30 Add a test for the acl extension
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
    18
    hg --cwd b rollback
bb00a5a92c30 Add a test for the acl extension
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
    19
    hg --cwd b --quiet tip
bb00a5a92c30 Add a test for the acl extension
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
    20
    echo
bb00a5a92c30 Add a test for the acl extension
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
    21
}
bb00a5a92c30 Add a test for the acl extension
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
    22
bb00a5a92c30 Add a test for the acl extension
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
    23
hg init a
bb00a5a92c30 Add a test for the acl extension
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
    24
cd a
bb00a5a92c30 Add a test for the acl extension
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
    25
mkdir foo foo/Bar quux
bb00a5a92c30 Add a test for the acl extension
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
    26
echo 'in foo' > foo/file.txt
bb00a5a92c30 Add a test for the acl extension
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
    27
echo 'in foo/Bar' > foo/Bar/file.txt
bb00a5a92c30 Add a test for the acl extension
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
    28
echo 'in quux' > quux/file.py
4138
85237110c371 make test-acl a bit more digestable for windows
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 3469
diff changeset
    29
hg add -q
3426
bb00a5a92c30 Add a test for the acl extension
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
    30
hg ci -m 'add files' -d '1000000 0'
bb00a5a92c30 Add a test for the acl extension
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
    31
echo >> foo/file.txt
bb00a5a92c30 Add a test for the acl extension
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
    32
hg ci -m 'change foo/file' -d '1000001 0'
bb00a5a92c30 Add a test for the acl extension
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
    33
echo >> foo/Bar/file.txt
bb00a5a92c30 Add a test for the acl extension
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
    34
hg ci -m 'change foo/Bar/file' -d '1000002 0'
bb00a5a92c30 Add a test for the acl extension
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
    35
echo >> quux/file.py
bb00a5a92c30 Add a test for the acl extension
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
    36
hg ci -m 'change quux/file' -d '1000003 0'
bb00a5a92c30 Add a test for the acl extension
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
    37
hg tip --quiet
bb00a5a92c30 Add a test for the acl extension
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
    38
bb00a5a92c30 Add a test for the acl extension
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
    39
cd ..
bb00a5a92c30 Add a test for the acl extension
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
    40
hg clone -r 0 a b
bb00a5a92c30 Add a test for the acl extension
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
    41
bb00a5a92c30 Add a test for the acl extension
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
    42
echo '[extensions]' >> $HGRCPATH
bb00a5a92c30 Add a test for the acl extension
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
    43
echo 'hgext.acl =' >> $HGRCPATH
bb00a5a92c30 Add a test for the acl extension
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
    44
bb00a5a92c30 Add a test for the acl extension
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
    45
config=b/.hg/hgrc
bb00a5a92c30 Add a test for the acl extension
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
    46
bb00a5a92c30 Add a test for the acl extension
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
    47
echo
bb00a5a92c30 Add a test for the acl extension
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
    48
bb00a5a92c30 Add a test for the acl extension
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
    49
echo 'Extension disabled for lack of a hook'
bb00a5a92c30 Add a test for the acl extension
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
    50
do_push fred
bb00a5a92c30 Add a test for the acl extension
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
    51
bb00a5a92c30 Add a test for the acl extension
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
    52
echo '[hooks]' >> $config
bb00a5a92c30 Add a test for the acl extension
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
    53
echo 'pretxnchangegroup.acl = python:hgext.acl.hook' >> $config
bb00a5a92c30 Add a test for the acl extension
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
    54
bb00a5a92c30 Add a test for the acl extension
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
    55
echo 'Extension disabled for lack of acl.sources'
bb00a5a92c30 Add a test for the acl extension
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
    56
do_push fred
bb00a5a92c30 Add a test for the acl extension
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
    57
bb00a5a92c30 Add a test for the acl extension
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
    58
echo 'No [acl.allow]/[acl.deny]'
bb00a5a92c30 Add a test for the acl extension
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
    59
echo '[acl]' >> $config
bb00a5a92c30 Add a test for the acl extension
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
    60
echo 'sources = push' >> $config
bb00a5a92c30 Add a test for the acl extension
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
    61
do_push fred
bb00a5a92c30 Add a test for the acl extension
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
    62
bb00a5a92c30 Add a test for the acl extension
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
    63
echo 'Empty [acl.allow]'
bb00a5a92c30 Add a test for the acl extension
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
    64
echo '[acl.allow]' >> $config
bb00a5a92c30 Add a test for the acl extension
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
    65
do_push fred
bb00a5a92c30 Add a test for the acl extension
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
    66
bb00a5a92c30 Add a test for the acl extension
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
    67
echo 'fred is allowed inside foo/'
bb00a5a92c30 Add a test for the acl extension
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
    68
echo 'foo/** = fred' >> $config
bb00a5a92c30 Add a test for the acl extension
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
    69
do_push fred
bb00a5a92c30 Add a test for the acl extension
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
    70
bb00a5a92c30 Add a test for the acl extension
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
    71
echo 'Empty [acl.deny]'
bb00a5a92c30 Add a test for the acl extension
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
    72
echo '[acl.deny]' >> $config
bb00a5a92c30 Add a test for the acl extension
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
    73
do_push barney
bb00a5a92c30 Add a test for the acl extension
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
    74
bb00a5a92c30 Add a test for the acl extension
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
    75
echo 'fred is allowed inside foo/, but not foo/bar/ (case matters)'
bb00a5a92c30 Add a test for the acl extension
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
    76
echo 'foo/bar/** = fred' >> $config
bb00a5a92c30 Add a test for the acl extension
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
    77
do_push fred
bb00a5a92c30 Add a test for the acl extension
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
    78
bb00a5a92c30 Add a test for the acl extension
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
    79
echo 'fred is allowed inside foo/, but not foo/Bar/'
bb00a5a92c30 Add a test for the acl extension
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
    80
echo 'foo/Bar/** = fred' >> $config
bb00a5a92c30 Add a test for the acl extension
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
    81
do_push fred
bb00a5a92c30 Add a test for the acl extension
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
    82
bb00a5a92c30 Add a test for the acl extension
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
    83
echo 'barney is not mentioned => not allowed anywhere'
bb00a5a92c30 Add a test for the acl extension
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
    84
do_push barney
bb00a5a92c30 Add a test for the acl extension
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
    85
bb00a5a92c30 Add a test for the acl extension
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
    86
echo 'barney is allowed everywhere'
bb00a5a92c30 Add a test for the acl extension
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
    87
echo '[acl.allow]' >> $config
bb00a5a92c30 Add a test for the acl extension
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
    88
echo '** = barney' >> $config
bb00a5a92c30 Add a test for the acl extension
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
    89
do_push barney
bb00a5a92c30 Add a test for the acl extension
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
    90
bb00a5a92c30 Add a test for the acl extension
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
    91
echo 'wilma can change files with a .txt extension'
bb00a5a92c30 Add a test for the acl extension
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
    92
echo '**/*.txt = wilma' >> $config
bb00a5a92c30 Add a test for the acl extension
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
    93
do_push wilma
bb00a5a92c30 Add a test for the acl extension
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
    94
bb00a5a92c30 Add a test for the acl extension
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
    95
echo 'file specified by acl.config does not exist'
bb00a5a92c30 Add a test for the acl extension
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
    96
echo '[acl]' >> $config
bb00a5a92c30 Add a test for the acl extension
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
    97
echo 'config = ../acl.config' >> $config
bb00a5a92c30 Add a test for the acl extension
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
    98
do_push barney
bb00a5a92c30 Add a test for the acl extension
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
    99
bb00a5a92c30 Add a test for the acl extension
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
   100
echo 'betty is allowed inside foo/ by a acl.config file'
bb00a5a92c30 Add a test for the acl extension
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
   101
echo '[acl.allow]' >> acl.config
bb00a5a92c30 Add a test for the acl extension
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
   102
echo 'foo/** = betty' >> acl.config
bb00a5a92c30 Add a test for the acl extension
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
   103
do_push betty
bb00a5a92c30 Add a test for the acl extension
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff changeset
   104
3436
f29989e9746e use ui.readsections in the acl extension
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 3426
diff changeset
   105
echo 'acl.config can set only [acl.allow]/[acl.deny]'
f29989e9746e use ui.readsections in the acl extension
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 3426
diff changeset
   106
echo '[hooks]' >> acl.config
f29989e9746e use ui.readsections in the acl extension
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 3426
diff changeset
   107
echo 'changegroup.acl = false' >> acl.config
f29989e9746e use ui.readsections in the acl extension
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 3426
diff changeset
   108
do_push barney
f29989e9746e use ui.readsections in the acl extension
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents: 3426
diff changeset
   109