]>
Commit | Line | Data |
---|---|---|
6111b934 EW |
1 | #!/bin/sh |
2 | # | |
3 | # Copyright (c) 2009 Eric Wong | |
4 | ||
5 | test_description='git svn creates empty directories' | |
7a98d9ab ÆAB |
6 | |
7 | TEST_FAILS_SANITIZE_LEAK=true | |
6111b934 EW |
8 | . ./lib-git-svn.sh |
9 | ||
10 | test_expect_success 'initialize repo' ' | |
11 | for i in a b c d d/e d/e/f "weird file name" | |
12 | do | |
0c51d6b4 | 13 | svn_cmd mkdir -m "mkdir $i" "$svnrepo"/"$i" || return 1 |
6111b934 EW |
14 | done |
15 | ' | |
16 | ||
17 | test_expect_success 'clone' 'git svn clone "$svnrepo" cloned' | |
18 | ||
19 | test_expect_success 'empty directories exist' ' | |
20 | ( | |
21 | cd cloned && | |
22 | for i in a b c d d/e d/e/f "weird file name" | |
23 | do | |
24 | if ! test -d "$i" | |
25 | then | |
cff4243d | 26 | echo >&2 "$i does not exist" && |
6111b934 EW |
27 | exit 1 |
28 | fi | |
29 | done | |
30 | ) | |
31 | ' | |
32 | ||
55f9d7a7 MH |
33 | test_expect_success 'option automkdirs set to false' ' |
34 | ( | |
35 | git svn init "$svnrepo" cloned-no-mkdirs && | |
36 | cd cloned-no-mkdirs && | |
37 | git config svn-remote.svn.automkdirs false && | |
38 | git svn fetch && | |
39 | for i in a b c d d/e d/e/f "weird file name" | |
40 | do | |
41 | if test -d "$i" | |
42 | then | |
cff4243d | 43 | echo >&2 "$i exists" && |
55f9d7a7 MH |
44 | exit 1 |
45 | fi | |
46 | done | |
47 | ) | |
48 | ' | |
49 | ||
6111b934 EW |
50 | test_expect_success 'more emptiness' ' |
51 | svn_cmd mkdir -m "bang bang" "$svnrepo"/"! !" | |
52 | ' | |
53 | ||
54 | test_expect_success 'git svn rebase creates empty directory' ' | |
2dec68cf | 55 | ( cd cloned && git svn rebase ) && |
6111b934 EW |
56 | test -d cloned/"! !" |
57 | ' | |
58 | ||
59 | test_expect_success 'git svn mkdirs recreates empty directories' ' | |
60 | ( | |
61 | cd cloned && | |
62 | rm -r * && | |
63 | git svn mkdirs && | |
64 | for i in a b c d d/e d/e/f "weird file name" "! !" | |
65 | do | |
66 | if ! test -d "$i" | |
67 | then | |
cff4243d | 68 | echo >&2 "$i does not exist" && |
6111b934 EW |
69 | exit 1 |
70 | fi | |
71 | done | |
72 | ) | |
73 | ' | |
74 | ||
75 | test_expect_success 'git svn mkdirs -r works' ' | |
76 | ( | |
77 | cd cloned && | |
78 | rm -r * && | |
79 | git svn mkdirs -r7 && | |
80 | for i in a b c d d/e d/e/f "weird file name" | |
81 | do | |
82 | if ! test -d "$i" | |
83 | then | |
cff4243d | 84 | echo >&2 "$i does not exist" && |
6111b934 EW |
85 | exit 1 |
86 | fi | |
cff4243d | 87 | done && |
6111b934 EW |
88 | |
89 | if test -d "! !" | |
90 | then | |
cff4243d | 91 | echo >&2 "$i should not exist" && |
6111b934 | 92 | exit 1 |
cff4243d | 93 | fi && |
6111b934 EW |
94 | |
95 | git svn mkdirs -r8 && | |
96 | if ! test -d "! !" | |
97 | then | |
cff4243d | 98 | echo >&2 "$i not exist" && |
6111b934 EW |
99 | exit 1 |
100 | fi | |
101 | ) | |
102 | ' | |
103 | ||
9be30eed EW |
104 | test_expect_success 'initialize trunk' ' |
105 | for i in trunk trunk/a trunk/"weird file name" | |
106 | do | |
0c51d6b4 | 107 | svn_cmd mkdir -m "mkdir $i" "$svnrepo"/"$i" || return 1 |
9be30eed EW |
108 | done |
109 | ' | |
110 | ||
111 | test_expect_success 'clone trunk' 'git svn clone -s "$svnrepo" trunk' | |
112 | ||
113 | test_expect_success 'empty directories in trunk exist' ' | |
114 | ( | |
115 | cd trunk && | |
116 | for i in a "weird file name" | |
117 | do | |
118 | if ! test -d "$i" | |
119 | then | |
cff4243d | 120 | echo >&2 "$i does not exist" && |
9be30eed EW |
121 | exit 1 |
122 | fi | |
123 | done | |
124 | ) | |
125 | ' | |
126 | ||
f9ad77a7 EW |
127 | test_expect_success 'remove a top-level directory from svn' ' |
128 | svn_cmd rm -m "remove d" "$svnrepo"/d | |
129 | ' | |
130 | ||
131 | test_expect_success 'removed top-level directory does not exist' ' | |
132 | git svn clone "$svnrepo" removed && | |
133 | test ! -e removed/d | |
134 | ||
135 | ' | |
a5b80d92 EW |
136 | unhandled=.git/svn/refs/remotes/git-svn/unhandled.log |
137 | test_expect_success 'git svn gc-ed files work' ' | |
138 | ( | |
139 | cd removed && | |
140 | git svn gc && | |
141 | : Compress::Zlib may not be available && | |
142 | if test -f "$unhandled".gz | |
143 | then | |
8eca03c8 | 144 | svn_cmd mkdir -m gz "$svnrepo"/gz && |
a5b80d92 EW |
145 | git reset --hard $(git rev-list HEAD | tail -1) && |
146 | git svn rebase && | |
147 | test -f "$unhandled".gz && | |
148 | test -f "$unhandled" && | |
149 | for i in a b c "weird file name" gz "! !" | |
150 | do | |
151 | if ! test -d "$i" | |
152 | then | |
cff4243d | 153 | echo >&2 "$i does not exist" && |
a5b80d92 EW |
154 | exit 1 |
155 | fi | |
156 | done | |
157 | fi | |
158 | ) | |
159 | ' | |
f9ad77a7 | 160 | |
6111b934 | 161 | test_done |