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

Source Code for Module moap.test.test_vcs_bzr

  1  # -*- Mode: Python; test-case-name: moap.test.test_vcs_bzr -*- 
  2  # vi:si:et:sw=4:sts=4:ts=4 
  3   
  4  from common import unittest 
  5   
  6  import os 
  7  import commands 
  8  import tempfile 
  9   
 10  from moap.vcs import bzr 
 11   
12 -class BzrTestCase(unittest.TestCase):
13 if os.system('bzr --version > /dev/null 2>&1') != 0: 14 skip = "No 'bzr' binary, skipping test." 15
16 - def setUp(self):
17 self.repository = tempfile.mkdtemp(prefix="moap.test.repo.") 18 os.system('bzr init %s' % self.repository) 19 self.checkout = tempfile.mkdtemp(prefix="moap.test.checkout.") 20 os.rmdir(self.checkout) 21 cmd = 'bzr get %s %s' % (self.repository, self.checkout) 22 (status, output) = commands.getstatusoutput(cmd) 23 self.failIf(status, "Non-null status %r" % status)
24
25 - def tearDown(self):
26 os.system('rm -rf %s' % self.checkout) 27 os.system('rm -rf %s' % self.repository)
28
29 -class TestDetect(BzrTestCase):
30 - def testDetectRepository(self):
31 # In Bzr-o world, the repository is a branch too 32 self.failUnless(bzr.detect(self.repository))
33
34 - def testDetectCheckout(self):
35 # should succeed 36 self.failUnless(bzr.detect(self.checkout))
37
38 - def testHalfCheckout(self):
39 # should fail 40 checkout = tempfile.mkdtemp(prefix="moap.test.") 41 os.mkdir(os.path.join(checkout, '_bzr')) 42 self.failIf(bzr.detect(checkout)) 43 os.system('rm -rf %s' % checkout)
44
45 -class TestTree(BzrTestCase):
46 - def testBzr(self):
47 v = bzr.VCSClass(self.checkout) 48 self.failUnless(v) 49 50 paths = ['test/test1.py', 'test/test2.py', 'test/test3/test4.py', 51 'test5.py', 'test6/', 'test/test7/'] 52 tree = v.createTree(paths) 53 keys = tree.keys() 54 keys.sort() 55 self.assertEquals(keys, ['', 'test', 'test/test3']) 56 self.failUnless('test1.py' in tree['test']) 57 self.failUnless('test2.py' in tree['test']) 58 self.failUnless('test7' in tree['test']) 59 self.failUnless('test4.py' in tree['test/test3']) 60 self.failUnless('test5.py' in tree[''], tree['']) 61 self.failUnless('test6' in tree[''], tree[''])
62
63 -class TestIgnore(BzrTestCase):
64 - def testGetUnignored(self):
65 v = bzr.VCSClass(self.checkout) 66 self.failUnless(v) 67 68 self.assertEquals(v.getNotIgnored(), []) 69 70 path = os.path.join(self.checkout, 'test') 71 handle = open(path, 'w') 72 handle.write('test') 73 handle.close() 74 75 self.assertEquals(v.getNotIgnored(), ['test']) 76 77 v.ignore(['test', ]) 78 79 self.assertEquals(v.getNotIgnored(), [])
80
81 -class TestEmptyDiff(BzrTestCase):
82 - def testDiff(self):
83 v = bzr.VCSClass(self.checkout) 84 self.failUnless(v) 85 86 self.assertEquals(v.diff(self.checkout), "")
87
88 -class TestDiff(BzrTestCase):
89 - def setUp(self):
90 BzrTestCase.setUp(self) 91 92 filename = os.path.join(self.checkout, 'one_line_file.txt') 93 open(filename, 'w').write('This is one line file.\n') 94 cmd = 'bzr add %s' % filename 95 (status, output) = commands.getstatusoutput(cmd) 96 self.failIf(status, "Non-null status %r" % status) 97 98 dirname = os.path.join(self.checkout, 'dir') 99 cmd = 'bzr mkdir %s' % dirname 100 (status, output) = commands.getstatusoutput(cmd) 101 self.failIf(status, "Non-null status %r" % status) 102 103 filename = os.path.join(self.checkout, 'dir', 'two_line_file.txt') 104 open(filename, 'w').write('This is\ntwo line file.\n') 105 cmd = 'bzr add %s' % filename 106 (status, output) = commands.getstatusoutput(cmd) 107 self.failIf(status, "Non-null status %r" % status)
108
109 - def testNonemptyDiff(self):
110 v = bzr.VCSClass(self.checkout) 111 self.failUnless(v) 112 113 self.failIfEquals(v.diff(self.checkout), '')
114
115 - def testTopLevelDiff(self):
116 v = bzr.VCSClass(self.checkout) 117 self.failUnless(v) 118 119 diffs = v.getChanges(self.checkout) 120 self.assertEquals(diffs, {'one_line_file.txt': [(0, 0, 1, 1)], 121 'dir/two_line_file.txt': [(0, 0, 1, 2)]})
122
123 - def testSubDirDiff(self):
124 v = bzr.VCSClass(self.checkout) 125 self.failUnless(v) 126 127 dirname = os.path.join(self.checkout, 'dir') 128 diffs = v.getChanges(dirname) 129 self.assertEquals(diffs, {'dir/two_line_file.txt': [(0, 0, 1, 2)]})
130
131 - def testFileDiff(self):
132 v = bzr.VCSClass(self.checkout) 133 self.failUnless(v) 134 135 filename = os.path.join(self.checkout, 'one_line_file.txt') 136 diffs = v.getChanges(filename) 137 self.assertEquals(diffs, {'one_line_file.txt': [(0, 0, 1, 1)]})
138