Mercurial > hg
comparison tests/test-audit-subrepo.t @ 34983:80d7dbda9294 stable
tests: show symlink traversal across subrepo mount point (SEC)
Also adds a couple of tests where the auditor does work as expected.
author | Yuya Nishihara <yuya@tcha.org> |
---|---|
date | Fri, 03 Nov 2017 19:17:25 +0900 |
parents | |
children | 071cbeba4212 |
comparison
equal
deleted
inserted
replaced
34965:f445b10dc7fb | 34983:80d7dbda9294 |
---|---|
1 Test illegal name | |
2 ----------------- | |
3 | |
4 on commit: | |
5 | |
6 $ hg init hgname | |
7 $ cd hgname | |
8 $ mkdir sub | |
9 $ hg init sub/.hg | |
10 $ echo 'sub/.hg = sub/.hg' >> .hgsub | |
11 $ hg ci -qAm 'add subrepo "sub/.hg"' | |
12 abort: path 'sub/.hg' is inside nested repo 'sub' | |
13 [255] | |
14 | |
15 prepare tampered repo (including the commit above): | |
16 | |
17 $ hg import --bypass -qm 'add subrepo "sub/.hg"' - <<'EOF' | |
18 > diff --git a/.hgsub b/.hgsub | |
19 > new file mode 100644 | |
20 > --- /dev/null | |
21 > +++ b/.hgsub | |
22 > @@ -0,0 +1,1 @@ | |
23 > +sub/.hg = sub/.hg | |
24 > diff --git a/.hgsubstate b/.hgsubstate | |
25 > new file mode 100644 | |
26 > --- /dev/null | |
27 > +++ b/.hgsubstate | |
28 > @@ -0,0 +1,1 @@ | |
29 > +0000000000000000000000000000000000000000 sub/.hg | |
30 > EOF | |
31 $ cd .. | |
32 | |
33 on clone (and update): | |
34 | |
35 $ hg clone -q hgname hgname2 | |
36 abort: path 'sub/.hg' is inside nested repo 'sub' | |
37 [255] | |
38 | |
39 Test direct symlink traversal | |
40 ----------------------------- | |
41 | |
42 #if symlink | |
43 | |
44 on commit: | |
45 | |
46 $ mkdir hgsymdir | |
47 $ hg init hgsymdir/root | |
48 $ cd hgsymdir/root | |
49 $ ln -s ../out | |
50 $ hg ci -qAm 'add symlink "out"' | |
51 $ hg init ../out | |
52 $ echo 'out = out' >> .hgsub | |
53 BROKEN: should fail | |
54 $ hg ci -qAm 'add subrepo "out"' | |
55 $ cd ../.. | |
56 | |
57 on clone (and update): | |
58 | |
59 $ mkdir hgsymdir2 | |
60 BROKEN: should fail to update | |
61 $ hg clone -q hgsymdir/root hgsymdir2/root | |
62 $ ls hgsymdir2 | |
63 out | |
64 root | |
65 | |
66 #endif | |
67 | |
68 Test indirect symlink traversal | |
69 ------------------------------- | |
70 | |
71 #if symlink | |
72 | |
73 on commit: | |
74 | |
75 $ mkdir hgsymin | |
76 $ hg init hgsymin/root | |
77 $ cd hgsymin/root | |
78 $ ln -s ../out | |
79 $ hg ci -qAm 'add symlink "out"' | |
80 $ mkdir ../out | |
81 $ hg init ../out/sub | |
82 $ echo 'out/sub = out/sub' >> .hgsub | |
83 $ hg ci -qAm 'add subrepo "out/sub"' | |
84 abort: path 'out/sub' traverses symbolic link 'out' | |
85 [255] | |
86 | |
87 prepare tampered repo (including the commit above): | |
88 | |
89 $ hg import --bypass -qm 'add subrepo "out/sub"' - <<'EOF' | |
90 > diff --git a/.hgsub b/.hgsub | |
91 > new file mode 100644 | |
92 > --- /dev/null | |
93 > +++ b/.hgsub | |
94 > @@ -0,0 +1,1 @@ | |
95 > +out/sub = out/sub | |
96 > diff --git a/.hgsubstate b/.hgsubstate | |
97 > new file mode 100644 | |
98 > --- /dev/null | |
99 > +++ b/.hgsubstate | |
100 > @@ -0,0 +1,1 @@ | |
101 > +0000000000000000000000000000000000000000 out/sub | |
102 > EOF | |
103 $ cd ../.. | |
104 | |
105 on clone (and update): | |
106 | |
107 $ mkdir hgsymin2 | |
108 $ hg clone -q hgsymin/root hgsymin2/root | |
109 abort: path 'out/sub' traverses symbolic link 'out' | |
110 [255] | |
111 $ ls hgsymin2 | |
112 root | |
113 | |
114 #endif |