create command: remove race condition...
[gitolite.git] / t / 0-me-first.t
blob8c9d12b7903859b2911780a2db6428965e8dd9b0
1 #!/usr/bin/perl
2 use strict;
3 use warnings;
5 # this is hardcoded; change it if needed
6 use lib "src/lib";
7 use Gitolite::Test;
9 my $rb = `gitolite query-rc -n GL_REPO_BASE`;
11 # initial smoke tests
12 # ----------------------------------------------------------------------
14 try "plan 71";
16 # basic push admin repo
17 confreset;confadd '
18 repo aa
19 RW+ = u1
20 RW = u2 u3
22 repo cc/..*
23 C = u4
24 RW+ = CREATOR u5
25 R = READERS
28 try "ADMIN_PUSH set1; !/FATAL/" or die text();
30 try "
31 /Initialized empty Git repository in .*/aa.git//
33 # basic clone
34 cd ..
35 glt clone u1 file:///aa u1aa; ok; /Cloning into 'u1aa'.../
36 /warning: You appear to have cloned an empty repository/
37 [ -d u1aa ]; ok
39 # basic clone deny
40 glt clone u4 file:///aa u4aa; !ok; /R any aa u4 DENIED by fallthru/
41 [ -d u4aa ]; !ok
43 # basic push
44 cd u1aa; ok
45 tc z-507; ok; /master .root-commit. 7cf7624. z-507/
46 glt push u1 origin HEAD; ok; /To file:///aa/
47 /\\[new branch\\] *HEAD -> master/
49 # basic rewind
50 tc o-866 o-867 o-868; ok; /master 2d066fb. o-868/
51 glt push u1 origin HEAD; ok; /7cf7624..2d066fb HEAD -> master/
52 git reset --hard HEAD^; ok; /HEAD is now at 8b1456b o-867/
53 tc x-967; ok; /master 284951d. x-967/
54 glt push u1 -f origin HEAD; ok; /\\+ 2d066fb...284951d HEAD -> master \\(forced update\\)/
56 # log file
57 cat \$(gitolite query-rc GL_LOGFILE);
58 ok; /\tupdate\t/
59 /aa\tu1\t\\+\trefs/heads/master/
60 /2d066fb4860c29cf321170c17695c6883f3d50e8/
61 /284951dfa11d58f99ab76b9f4e4c1ad2f2461236/
63 # basic rewind deny
64 cd ..
65 glt clone u2 file:///aa u2aa; ok; /Cloning into 'u2aa'.../
66 cd u2aa; ok
67 tc g-776 g-777 g-778; ok; /master 9cbc181. g-778/
68 glt push u2 origin HEAD; ok; /284951d..9cbc181 HEAD -> master/
69 git reset --hard HEAD^; ok; /HEAD is now at 2edf7fc g-777/
70 tc d-485; ok; /master 1c01d32. d-485/
71 glt push u2 -f origin HEAD; !ok; reject
72 /\\+ refs/heads/master aa u2 DENIED by fallthru/
74 # non-existent repos etc
75 glt ls-remote u4 file:///bb; !ok; /DENIED by fallthru/
76 glt ls-remote u4 file:///cc/1; ok; /Initialized empty/
77 glt ls-remote u5 file:///cc/1; ok; perl s/TRACE.*//g; !/\\S/
78 glt ls-remote u5 file:///cc/2; !ok; /DENIED by fallthru/
79 glt ls-remote u6 file:///cc/2; !ok; /DENIED by fallthru/
81 # command
82 glt perms u4 -c cc/bar/baz/frob + READERS u2;
83 ok; /Initialized empty .*cc/bar/baz/frob.git/
85 # path traversal
86 glt ls-remote u4 file:///cc/dd/../ee
87 !ok; /FATAL: 'cc/dd/\\.\\./ee' contains '\\.\\.'/
88 glt ls-remote u5 file:///cc/../../../../../..$rb/gitolite-admin
89 !ok; /FATAL: 'cc/../../../../../..$rb/gitolite-admin' contains '\\.\\.'/
91 glt perms u4 -c cc/bar/baz/../frob + READERS u2
92 !ok; /FATAL: no relative paths allowed anywhere!/