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

Source Code for Module moap.test.test_vcs_git

 1  # -*- Mode: Python; test-case-name: moap.test.test_vcs_git -*- 
 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 git 
11   
12 -class GitTestCase(unittest.TestCase):
13 if os.system('git --version > /dev/null 2>&1') != 0: 14 skip = "No 'git' binary, skipping test." 15
16 - def setUp(self):
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 # we actually need to have something in there before we can clone 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
37 - def tearDown(self):
38 os.system('rm -rf %s' % self.checkout) 39 os.system('rm -rf %s' % self.repository)
40
41 -class TestDetect(GitTestCase):
42 - def testDetectRepository(self):
43 # the repository is equal to a checkout 44 self.failUnless(git.detect(self.repository))
45
46 - def testDetectCheckout(self):
47 # should succeed 48 self.failUnless(git.detect(self.checkout))
49
50 - def testHalfCheckout(self):
51 # should fail 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
57 -class TestTree(GitTestCase):
58 - def testGit(self):
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
75 -class TestIgnore(GitTestCase):
76 - def testGetUnignored(self):
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