comparison svnwrap/tests/test_svnwrap.py @ 7:79b0e059319d

Reorganized the testing infrastructure a bit so that svnwrap is really separate from the rest of the project. Also made it easier to add more tests in the future without making the directory full of annoying files.
author Augie Fackler <durin42@gmail.com>
date Fri, 03 Oct 2008 09:41:25 -0500
parents test_svnwrap.py@f2636cfed115
children bfbce70a9a57
comparison
equal deleted inserted replaced
6:1a5bb173170b 7:79b0e059319d
1 import os
2 import shutil
3 import tempfile
4 import unittest
5
6 from nose import tools
7
8 import svnwrap
9
10 class TestBasicRepoLayout(unittest.TestCase):
11 def setUp(self):
12 self.oldwd = os.getcwd()
13 self.tmpdir = tempfile.mkdtemp('svnwrap_test')
14 self.repo_path = '%s/testrepo' % self.tmpdir
15 wc_path = '%s/testrepo_wc' % self.tmpdir
16 os.spawnvp(os.P_WAIT, 'svnadmin', ['svnadmin', 'create',
17 self.repo_path,])
18 os.spawnvp(os.P_WAIT, 'svn', ['svn', 'checkout',
19 'file://%s' % self.repo_path,
20 wc_path,])
21 os.chdir(wc_path)
22 for d in ['branches', 'tags', 'trunk']:
23 os.mkdir(os.path.join(wc_path, d))
24 #r1
25 os.spawnvp(os.P_WAIT, 'svn', ['svn', 'add', 'branches', 'tags', 'trunk'])
26 os.spawnvp(os.P_WAIT, 'svn', ['svn', 'ci', '-m', 'Empty dirs.'])
27 #r2
28 files = ['alpha', 'beta', 'delta']
29 for f in files:
30 open(os.path.join(wc_path, 'trunk', f), 'w').write('This is %s.\n' % f)
31 os.chdir('trunk')
32 os.spawnvp(os.P_WAIT, 'svn', ['svn', 'add']+files)
33 os.spawnvp(os.P_WAIT, 'svn', ['svn', 'ci', '-m', 'Initial Files.'])
34 os.chdir('..')
35 #r3
36 os.spawnvp(os.P_WAIT, 'svn', ['svn', 'cp', 'trunk', 'tags/rev1'])
37 os.spawnvp(os.P_WAIT, 'svn', ['svn', 'ci', '-m', 'Tag rev 1.'])
38 #r4
39 os.spawnvp(os.P_WAIT, 'svn', ['svn', 'cp', 'trunk', 'branches/crazy'])
40 os.spawnvp(os.P_WAIT, 'svn', ['svn', 'ci', '-m', 'Branch to crazy.'])
41
42 #r5
43 open(os.path.join(wc_path, 'trunk', 'gamma'), 'w').write('This is %s.\n'
44 % 'gamma')
45 os.spawnvp(os.P_WAIT, 'svn', ['svn', 'add', 'trunk/gamma', ])
46 os.spawnvp(os.P_WAIT, 'svn', ['svn', 'ci', '-m', 'Add gamma'])
47
48 #r6
49 open(os.path.join(wc_path, 'branches', 'crazy', 'omega'),
50 'w').write('This is %s.\n' % 'omega')
51 os.spawnvp(os.P_WAIT, 'svn', ['svn', 'add', 'branches/crazy/omega', ])
52 os.spawnvp(os.P_WAIT, 'svn', ['svn', 'ci', '-m', 'Add omega'])
53
54 #r7
55 os.spawnvp(os.P_WAIT, 'svn', ['svn', 'cp', 'trunk', 'branches/more_crazy'])
56 os.spawnvp(os.P_WAIT, 'svn', ['svn', 'ci', '-m', 'Branch to more_crazy.'])
57
58 self.repo = svnwrap.SubversionRepo('file://%s' % self.repo_path)
59
60 def tearDown(self):
61 shutil.rmtree(self.tmpdir)
62 os.chdir(self.oldwd)
63
64
65 def test_num_revs(self):
66 revs = list(self.repo.revisions())
67 tools.eq_(len(revs), 7)
68 r = revs[1]
69 tools.eq_(r.revnum, 2)
70 tools.eq_(sorted(r.paths.keys()),
71 ['trunk/alpha', 'trunk/beta', 'trunk/delta'])
72 for r in revs:
73 for p in r.paths:
74 # make sure these paths are always non-absolute for sanity
75 if p:
76 assert p[0] != '/'
77 revs = list(self.repo.revisions(start=3))
78 tools.eq_(len(revs), 4)
79
80
81 def test_branches(self):
82 tools.eq_(self.repo.branches.keys(), ['crazy', 'more_crazy'])
83 tools.eq_(self.repo.branches['crazy'], ('trunk', 2, 4))
84 tools.eq_(self.repo.branches['more_crazy'], ('trunk', 5, 7))
85
86
87 def test_tags(self):
88 tags = self.repo.tags
89 tools.eq_(tags.keys(), ['rev1'])
90 tools.eq_(tags['rev1'], ('trunk', 2))
91
92 class TestRootAsSubdirOfRepo(TestBasicRepoLayout):
93 def setUp(self):
94 self.oldwd = os.getcwd()
95 self.tmpdir = tempfile.mkdtemp('svnwrap_test')
96 self.repo_path = '%s/testrepo' % self.tmpdir
97 wc_path = '%s/testrepo_wc' % self.tmpdir
98 os.spawnvp(os.P_WAIT, 'svnadmin', ['svnadmin', 'create',
99 self.repo_path,])
100 os.spawnvp(os.P_WAIT, 'svn', ['svn', 'checkout',
101 'file://%s' % self.repo_path,
102 wc_path,])
103 self.repo_path += '/dummyproj'
104 os.chdir(wc_path)
105 os.mkdir('dummyproj')
106 os.chdir('dummyproj')
107 wc_path += '/dummyproj'
108 for d in ['branches', 'tags', 'trunk']:
109 os.mkdir(os.path.join(wc_path, d))
110 #r1
111 os.chdir('..')
112 os.spawnvp(os.P_WAIT, 'svn', ['svn', 'add', 'dummyproj'])
113 os.spawnvp(os.P_WAIT, 'svn', ['svn', 'ci', '-m', 'Empty dirs.'])
114 os.chdir('dummyproj')
115 #r2
116 files = ['alpha', 'beta', 'delta']
117 for f in files:
118 open(os.path.join(wc_path, 'trunk', f), 'w').write('This is %s.\n' % f)
119 os.chdir('trunk')
120 os.spawnvp(os.P_WAIT, 'svn', ['svn', 'add']+files)
121 os.spawnvp(os.P_WAIT, 'svn', ['svn', 'ci', '-m', 'Initial Files.'])
122 os.chdir('..')
123 #r3
124 os.spawnvp(os.P_WAIT, 'svn', ['svn', 'cp', 'trunk', 'tags/rev1'])
125 os.spawnvp(os.P_WAIT, 'svn', ['svn', 'ci', '-m', 'Tag rev 1.'])
126 #r4
127 os.spawnvp(os.P_WAIT, 'svn', ['svn', 'cp', 'trunk', 'branches/crazy'])
128 os.spawnvp(os.P_WAIT, 'svn', ['svn', 'ci', '-m', 'Branch to crazy.'])
129
130 #r5
131 open(os.path.join(wc_path, 'trunk', 'gamma'), 'w').write('This is %s.\n'
132 % 'gamma')
133 os.spawnvp(os.P_WAIT, 'svn', ['svn', 'add', 'trunk/gamma', ])
134 os.spawnvp(os.P_WAIT, 'svn', ['svn', 'ci', '-m', 'Add gamma'])
135
136 #r6
137 open(os.path.join(wc_path, 'branches', 'crazy', 'omega'),
138 'w').write('This is %s.\n' % 'omega')
139 os.spawnvp(os.P_WAIT, 'svn', ['svn', 'add', 'branches/crazy/omega', ])
140 os.spawnvp(os.P_WAIT, 'svn', ['svn', 'ci', '-m', 'Add omega'])
141
142 #r7
143 os.spawnvp(os.P_WAIT, 'svn', ['svn', 'cp', 'trunk', 'branches/more_crazy'])
144 os.spawnvp(os.P_WAIT, 'svn', ['svn', 'ci', '-m', 'Branch to more_crazy.'])
145
146 self.repo = svnwrap.SubversionRepo('file://%s' % (self.repo_path))