1
2
3
4 import common
5
6 import os
7 import commands
8 import tempfile
9
10 from moap.vcs import svn
11
13 if os.system('svn --version > /dev/null 2>&1') != 0:
14 skip = "No 'svn' binary, skipping test."
15
17 self.repository = self.createRepository()
18 self.livedir = self.createLive()
19 cmd = 'svn checkout file://%s %s' % (self.repository, self.livedir)
20 (status, output) = commands.getstatusoutput(cmd)
21 self.failIf(status)
22
24 os.system('rm -rf %s' % self.livedir)
25 os.system('rm -rf %s' % self.repository)
26
29
30 self.failIf(svn.detect(self.repository))
31
33
34 self.failUnless(svn.detect(self.livedir))
35
37
38 checkout = tempfile.mkdtemp(prefix="moap.test.")
39 os.mkdir(os.path.join(checkout, '.svn'))
40 self.failIf(svn.detect(checkout))
41 os.system('rm -rf %s' % checkout)
42
45 v = svn.VCSClass(self.livedir)
46 self.failUnless(v)
47
48 paths = ['test/test1.py', 'test/test2.py', 'test/test3/test4.py',
49 'test5.py', 'test6/', 'test/test7/']
50 tree = v.createTree(paths)
51 keys = tree.keys()
52 keys.sort()
53 self.assertEquals(keys, ['', 'test', 'test/test3'])
54 self.failUnless('test1.py' in tree['test'])
55 self.failUnless('test2.py' in tree['test'])
56 self.failUnless('test7' in tree['test'])
57 self.failUnless('test4.py' in tree['test/test3'])
58 self.failUnless('test5.py' in tree[''], tree[''])
59 self.failUnless('test6' in tree[''], tree[''])
60
75
78 v = svn.VCSClass(self.livedir)
79 self.failUnless(v)
80
81 self.assertEquals(v.diff(self.livedir), "")
82
84 v = svn.VCSClass(self.livedir)
85 self.failUnless(v)
86
87 file = os.path.join(os.path.dirname(__file__), 'diff',
88 'svn_add_one_line.diff')
89 d = open(file).read()
90 c = v.getChanges(None, d)
91
92 self.assertEquals(len(c.keys()), 1)
93 self.failUnless(c.has_key('moap/vcs/svn.py'))
94 self.assertEquals(c['moap/vcs/svn.py'], [(105, 0, 105, 1)])
95
97 v = svn.VCSClass(self.livedir)
98 self.failUnless(v)
99
100 file = os.path.join(os.path.dirname(__file__), 'diff',
101 'svn_multiple.diff')
102 d = open(file).read()
103 c = v.getChanges(None, d)
104
105
106 self.assertEquals(len(c.keys()), 3)
107
108 self.failUnless(c.has_key('moap/vcs/vcs.py'))
109 self.assertEquals(c['moap/vcs/vcs.py'], [
110 (8, 0, 8, 1),
111 (114, 0, 115, 42),
112 ])
113
115 v = svn.VCSClass(self.livedir)
116 self.failUnless(v)
117
118 file = os.path.join(os.path.dirname(__file__), 'diff',
119 'svn_symlink.diff')
120 d = v.scrubPropertyChanges(open(file).read())
121 c = v.getChanges(None, d)
122
123
124 self.assertEquals(len(c.keys()), 5)
125
126 self.failUnless(c.has_key('buildbot1/Makefile'))
127 self.failUnless(c.has_key('buildbot1/words.cfg'))
128 self.assertEquals(c['buildbot1/Makefile'], [
129 (9, 2, 9, 6),
130 ])
131
133 v = svn.VCSClass(self.livedir)
134 self.failUnless(v)
135
136 file = os.path.join(os.path.dirname(__file__), 'diff',
137 'svn_add_first_last_line.diff')
138 d = open(file).read()
139 c = v.getChanges(None, d)
140
141
142 self.assertEquals(len(c.keys()), 1)
143
144 self.failUnless(c.has_key('moap/vcs/svn.py'))
145 self.assertEquals(c['moap/vcs/svn.py'], [
146 (1, 0, 1, 1),
147 (117, 0, 118, 1),
148 ])
149
151
152
153
154 v = svn.VCSClass(self.livedir)
155 self.failUnless(v)
156
157
158 path = self.liveWriteFile('test', "test\n")
159 path2 = self.liveWriteFile('test2', "test\n")
160
161
162 os.system('svn add %s' % path)
163 os.system('svn add %s' % path2)
164 os.system('svn commit -m "test" %s' % self.livedir)
165
166
167 self.liveWriteFile('test', "test change\n")
168 self.liveWriteFile('test2', "test 2 change\n")
169
170
171 os.system('svn ps property value %s' % path)
172
173
174 c = v.getChanges(self.livedir)
175 self.assertEquals(c[path], [
176 (1, 1, 1, 1),
177 ])
178 self.assertEquals(c[path2], [
179 (1, 1, 1, 1),
180 ])
181
184 v = svn.VCSClass(self.livedir)
185 self.failUnless(v)
186
187
188 path = self.liveWriteFile('test', "test\n")
189 path2 = self.liveWriteFile('test2', "test\n")
190
191
192 os.system('svn add %s' % path)
193 os.system('svn add %s' % path2)
194 os.system('svn commit -m "test" %s' % self.livedir)
195
196
197 os.system('svn ps svn:property value %s' % path)
198 os.system('svn ps svn:property value %s' % path2)
199 os.system('svn ps svn:property2 value %s' % path2)
200
201
202 c = v.getPropertyChanges(self.livedir)
203 self.assertEquals(c, {
204 path: ['svn:property', ],
205 path2: ['svn:property', 'svn:property2'],
206 })
207
210 v = svn.VCSClass(self.livedir)
211 self.failUnless(v)
212
213
214 path = self.liveWriteFile('test', "test\n")
215
216
217 os.system('svn add %s' % path)
218
219 paths = v.getAdded(self.livedir)
220 self.assertEquals(paths, [path, ])
221
222
223 os.system('svn commit -m "test" %s' % self.livedir)
224
225 paths = v.getAdded(self.livedir)
226 self.failIf(paths)
227
228
229 os.system('svn delete %s' % path)
230 paths = v.getDeleted(self.livedir)
231 self.assertEquals(paths, [path, ])
232 paths = v.getAdded(self.livedir)
233 self.failIf(paths)
234
235
236 os.system('svn commit -m "test" %s' % self.livedir)
237
238 paths = v.getAdded(self.livedir)
239 self.failIf(paths)
240 paths = v.getDeleted(self.livedir)
241 self.failIf(paths)
242