1
2
3
4 from common import unittest
5
6 import os
7 import commands
8 import tempfile
9
10 from moap.vcs import bzr
11
13 if os.system('bzr --version > /dev/null 2>&1') != 0:
14 skip = "No 'bzr' binary, skipping test."
15
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
26 os.system('rm -rf %s' % self.checkout)
27 os.system('rm -rf %s' % self.repository)
28
31
32 self.failUnless(bzr.detect(self.repository))
33
35
36 self.failUnless(bzr.detect(self.checkout))
37
39
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
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
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
83 v = bzr.VCSClass(self.checkout)
84 self.failUnless(v)
85
86 self.assertEquals(v.diff(self.checkout), "")
87
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
110 v = bzr.VCSClass(self.checkout)
111 self.failUnless(v)
112
113 self.failIfEquals(v.diff(self.checkout), '')
114
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
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
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