]> git.ipfire.org Git - thirdparty/git.git/blame - t/t9146-git-svn-empty-dirs.sh
revisions API: have release_revisions() release "cmdline"
[thirdparty/git.git] / t / t9146-git-svn-empty-dirs.sh
CommitLineData
6111b934
EW
1#!/bin/sh
2#
3# Copyright (c) 2009 Eric Wong
4
5test_description='git svn creates empty directories'
7a98d9ab
ÆAB
6
7TEST_FAILS_SANITIZE_LEAK=true
6111b934
EW
8. ./lib-git-svn.sh
9
10test_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
17test_expect_success 'clone' 'git svn clone "$svnrepo" cloned'
18
19test_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
33test_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
50test_expect_success 'more emptiness' '
51 svn_cmd mkdir -m "bang bang" "$svnrepo"/"! !"
52'
53
54test_expect_success 'git svn rebase creates empty directory' '
2dec68cf 55 ( cd cloned && git svn rebase ) &&
6111b934
EW
56 test -d cloned/"! !"
57'
58
59test_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
75test_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
104test_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
111test_expect_success 'clone trunk' 'git svn clone -s "$svnrepo" trunk'
112
113test_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
127test_expect_success 'remove a top-level directory from svn' '
128 svn_cmd rm -m "remove d" "$svnrepo"/d
129'
130
131test_expect_success 'removed top-level directory does not exist' '
132 git svn clone "$svnrepo" removed &&
133 test ! -e removed/d
134
135'
a5b80d92
EW
136unhandled=.git/svn/refs/remotes/git-svn/unhandled.log
137test_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 161test_done