1
2
3
4 from common import unittest
5
6 import os
7 import commands
8 import tempfile
9
10 from moap.vcs import git
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 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(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.system('rm -rf %s' % self.checkout)
39 os.system('rm -rf %s' % self.repository)
40
43
44 self.failUnless(git.detect(self.repository))
45
47
48 self.failUnless(git.detect(self.checkout))
49
51
52 checkout = tempfile.mkdtemp(prefix="moap.test.")
53 os.mkdir(os.path.join(checkout, '.git'))
54 self.failIf(git.detect(checkout))
55 os.system('rm -rf %s' % checkout)
56
59 v = git.VCSClass(self.checkout)
60 self.failUnless(v)
61
62 paths = ['test/test1.py', 'test/test2.py', 'test/test3/test4.py',
63 'test5.py', 'test6/', 'test/test7/']
64 tree = v.createTree(paths)
65 keys = tree.keys()
66 keys.sort()
67 self.assertEquals(keys, ['', 'test', 'test/test3'])
68 self.failUnless('test1.py' in tree['test'])
69 self.failUnless('test2.py' in tree['test'])
70 self.failUnless('test7' in tree['test'])
71 self.failUnless('test4.py' in tree['test/test3'])
72 self.failUnless('test5.py' in tree[''], tree[''])
73 self.failUnless('test6' in tree[''], tree[''])
74
77 v = git.VCSClass(self.checkout)
78 self.failUnless(v)
79
80 self.assertEquals(v.getNotIgnored(), [])
81
82 path = os.path.join(self.checkout, 'test')
83 handle = open(path, 'w')
84 handle.write('test')
85 handle.close()
86
87 self.assertEquals(v.getNotIgnored(), ['test'])
88
89 v.ignore(['test', ])
90
91 self.assertEquals(v.getNotIgnored(), [])
92