1
2
3
4 import os
5 import commands
6 import tempfile
7
8 from moap.vcs import bzr
9
10 from moap.test import common
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 filename = os.path.join(self.checkout, 'one_line_file.txt')
48 open(filename, 'w').write('This is one line file.\n')
49 cmd = 'bzr add %s' % filename
50 (status, output) = commands.getstatusoutput(cmd)
51 self.failIf(status, "Non-null status %r" % status)
52
53 v = bzr.VCSClass(self.checkout)
54 self.failUnless(v)
55 v.commit(['one_line_file.txt', ], "I contain quotes like ' and \"")
56
57
60 v = bzr.VCSClass(self.checkout)
61 self.failUnless(v)
62
63 paths = ['test/test1.py', 'test/test2.py', 'test/test3/test4.py',
64 'test5.py', 'test6/', 'test/test7/']
65 tree = v.createTree(paths)
66 keys = tree.keys()
67 keys.sort()
68 self.assertEquals(keys, ['', 'test', 'test/test3'])
69 self.failUnless('test1.py' in tree['test'])
70 self.failUnless('test2.py' in tree['test'])
71 self.failUnless('test7' in tree['test'])
72 self.failUnless('test4.py' in tree['test/test3'])
73 self.failUnless('test5.py' in tree[''], tree[''])
74 self.failUnless('test6' in tree[''], tree[''])
75
78 v = bzr.VCSClass(self.checkout)
79 self.failUnless(v)
80
81 self.assertEquals(v.getUnknown(v.path), [])
82
83 path = os.path.join(self.checkout, 'test')
84 handle = open(path, 'w')
85 handle.write('test')
86 handle.close()
87
88 self.assertEquals(v.getUnknown(v.path), ['test'])
89
90 v.ignore(['test', ])
91
92 self.assertEquals(v.getUnknown(v.path), [])
93
96 v = bzr.VCSClass(self.checkout)
97 self.failUnless(v)
98
99 self.assertEquals(v.diff(self.checkout), "")
100
103 BzrTestCase.setUp(self)
104
105 filename = os.path.join(self.checkout, 'one_line_file.txt')
106 open(filename, 'w').write('This is one line file.\n')
107 cmd = 'bzr add %s' % filename
108 (status, output) = commands.getstatusoutput(cmd)
109 self.failIf(status, "Non-null status %r" % status)
110
111 dirname = os.path.join(self.checkout, 'dir')
112 cmd = 'bzr mkdir %s' % dirname
113 (status, output) = commands.getstatusoutput(cmd)
114 self.failIf(status, "Non-null status %r" % status)
115
116 filename = os.path.join(self.checkout, 'dir', 'two_line_file.txt')
117 open(filename, 'w').write('This is\ntwo line file.\n')
118 cmd = 'bzr add %s' % filename
119 (status, output) = commands.getstatusoutput(cmd)
120 self.failIf(status, "Non-null status %r" % status)
121
123 v = bzr.VCSClass(self.checkout)
124 self.failUnless(v)
125
126 self.failIfEquals(v.diff(self.checkout), '')
127
129 v = bzr.VCSClass(self.checkout)
130 self.failUnless(v)
131
132 diffs = v.getChanges(self.checkout)
133 self.assertEquals(diffs, {'one_line_file.txt': [(0, 0, 1, 1)],
134 'dir/two_line_file.txt': [(0, 0, 1, 2)]})
135
137 v = bzr.VCSClass(self.checkout)
138 self.failUnless(v)
139
140 dirname = os.path.join(self.checkout, 'dir')
141 diffs = v.getChanges(dirname)
142 self.assertEquals(diffs, {'dir/two_line_file.txt': [(0, 0, 1, 2)]})
143
145 v = bzr.VCSClass(self.checkout)
146 self.failUnless(v)
147
148 filename = os.path.join(self.checkout, 'one_line_file.txt')
149 diffs = v.getChanges(filename)
150 self.assertEquals(diffs, {'one_line_file.txt': [(0, 0, 1, 1)]})
151