Package moap :: Package test :: Module test_vcs_svn
[hide private]
[frames] | no frames]

Source Code for Module moap.test.test_vcs_svn

  1  # -*- Mode: Python; test-case-name: moap.test.test_vcs_svn -*- 
  2  # vi:si:et:sw=4:sts=4:ts=4 
  3   
  4  import common 
  5   
  6  import os 
  7  import commands 
  8  import tempfile 
  9   
 10  from moap.vcs import svn 
 11   
12 -class SVNTestCase(common.SVNTestCase):
13 if os.system('svn --version > /dev/null 2>&1') != 0: 14 skip = "No 'svn' binary, skipping test." 15
16 - def setUp(self):
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
23 - def tearDown(self):
24 os.system('rm -rf %s' % self.livedir) 25 os.system('rm -rf %s' % self.repository)
26
27 -class TestDetect(SVNTestCase):
28 - def testDetectRepository(self):
29 # should fail 30 self.failIf(svn.detect(self.repository))
31
32 - def testDetectCheckout(self):
33 # should succeed 34 self.failUnless(svn.detect(self.livedir))
35
36 - def testHalfCheckout(self):
37 # should fail 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
43 -class TestTree(SVNTestCase):
44 - def testSVN(self):
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
61 -class TestIgnore(SVNTestCase):
62 - def testGetUnignored(self):
63 v = svn.VCSClass(self.livedir) 64 self.failUnless(v) 65 66 self.assertEquals(v.getNotIgnored(), []) 67 68 path = self.liveWriteFile('test', 'test') 69 70 self.assertEquals(v.getNotIgnored(), ['test']) 71 72 v.ignore([path, ]) 73 74 self.assertEquals(v.getNotIgnored(), [])
75
76 -class TestDiff(SVNTestCase):
77 - def testDiff(self):
78 v = svn.VCSClass(self.livedir) 79 self.failUnless(v) 80 81 self.assertEquals(v.diff(self.livedir), "")
82
83 - def testGetChanges(self):
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 # one line added in moap/vcs/svn.py at 105 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
96 - def testGetChangesMultiple(self):
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 # three files changed 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 131
132 - def testAddFirstLast(self):
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 # one file changed 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 # property changes used to break the diff; see #252 152 # only breaks when there's a second file after a first file's 153 # property changes 154 v = svn.VCSClass(self.livedir) 155 self.failUnless(v) 156 157 # create a file 158 path = self.liveWriteFile('test', "test\n") 159 path2 = self.liveWriteFile('test2', "test\n") 160 161 # add it 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 # change the files 167 self.liveWriteFile('test', "test change\n") 168 self.liveWriteFile('test2', "test 2 change\n") 169 170 # change property on it 171 os.system('svn ps property value %s' % path) 172 173 # now get changes 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
182 -class TestChangeProperties(SVNTestCase):
183 - def testGetPropertyChanges(self):
184 v = svn.VCSClass(self.livedir) 185 self.failUnless(v) 186 187 # create a file 188 path = self.liveWriteFile('test', "test\n") 189 path2 = self.liveWriteFile('test2', "test\n") 190 191 # add it 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 # change property on it 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 # now get changes 202 c = v.getPropertyChanges(self.livedir) 203 self.assertEquals(c, { 204 path: ['svn:property', ], 205 path2: ['svn:property', 'svn:property2'], 206 })
207
208 -class TestAddDelete(SVNTestCase):
209 - def testGetAddedDeleted(self):
210 v = svn.VCSClass(self.livedir) 211 self.failUnless(v) 212 213 # create a file 214 path = self.liveWriteFile('test', "test\n") 215 216 # add it without committing 217 os.system('svn add %s' % path) 218 219 paths = v.getAdded(self.livedir) 220 self.assertEquals(paths, [path, ]) 221 222 # now commit 223 os.system('svn commit -m "test" %s' % self.livedir) 224 225 paths = v.getAdded(self.livedir) 226 self.failIf(paths) 227 228 # now delete 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 # now commit 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