1
2
3
4 import os
5 import commands
6 import tempfile
7
8 from moap.vcs import git
9
10 from moap.test import common
11
13 if os.system('git --version > /dev/null 2>&1') != 0:
14 skip = "No 'git' binary, skipping test."
15
17 self.repository = tempfile.mkdtemp(prefix="moap.test.repo.")
18 self.oldPath = os.getcwd()
19 os.chdir(self.repository)
20 os.system('git init > /dev/null')
21
22 h = open('README', 'w')
23 h.write('README')
24 h.close()
25
26 os.system('git add README > /dev/null')
27 os.system('git commit -a -m "readme" > /dev/null')
28
29 os.chdir(self.oldPath)
30 self.checkout = tempfile.mkdtemp(prefix="moap.test.checkout.")
31 os.rmdir(self.checkout)
32 cmd = 'git clone %s %s > /dev/null' % (self.repository, self.checkout)
33 (status, output) = commands.getstatusoutput(cmd)
34 print output
35 self.failIf(status, "Non-null status %r" % status)
36
38 os.chdir(self.oldPath)
39 os.system('rm -rf %s' % self.checkout)
40 os.system('rm -rf %s' % self.repository)
41
44
45 self.failUnless(git.detect(self.repository))
46
48
49 self.failUnless(git.detect(self.checkout))
50
52
53 checkout = tempfile.mkdtemp(prefix="moap.test.")
54 os.mkdir(os.path.join(checkout, '.git'))
55 self.failIf(git.detect(checkout))
56 os.system('rm -rf %s' % checkout)
57
60 filename = os.path.join(self.checkout, 'one_line_file.txt')
61 open(filename, 'w').write('This is one line file.\n')
62 os.chdir(self.checkout)
63 cmd = 'git add one_line_file.txt'
64 (status, output) = commands.getstatusoutput(cmd)
65 self.failIf(status, "Non-null status %r, output %r" % (status, output))
66
67 v = git.VCSClass(self.checkout)
68 self.failUnless(v)
69 v.commit(['one_line_file.txt', ], "I contain quotes like ' and \"")
70
73 v = git.VCSClass(self.checkout)
74 self.failUnless(v)
75
76 paths = ['test/test1.py', 'test/test2.py', 'test/test3/test4.py',
77 'test5.py', 'test6/', 'test/test7/']
78 tree = v.createTree(paths)
79 keys = tree.keys()
80 keys.sort()
81 self.assertEquals(keys, ['', 'test', 'test/test3'])
82 self.failUnless('test1.py' in tree['test'])
83 self.failUnless('test2.py' in tree['test'])
84 self.failUnless('test7' in tree['test'])
85 self.failUnless('test4.py' in tree['test/test3'])
86 self.failUnless('test5.py' in tree[''], tree[''])
87 self.failUnless('test6' in tree[''], tree[''])
88
91 v = git.VCSClass(self.checkout)
92 self.failUnless(v)
93
94 self.assertEquals(v.getUnknown(v.path), [])
95
96 path = os.path.join(self.checkout, 'test')
97 handle = open(path, 'w')
98 handle.write('test')
99 handle.close()
100
101 self.assertEquals(v.getUnknown(v.path), ['test'])
102
103 v.ignore(['test', ])
104
105 self.assertEquals(v.getUnknown(v.path), [])
106