annotate examples/trac/trac/versioncontrol/tests/svn_fs.py @ 39:93b4dcbafd7b trunk

Copy Trac to main branch.
author cmlenz
date Mon, 03 Jul 2006 18:53:27 +0000
parents
children
rev   line source
39
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
1 # -*- coding: utf-8 -*-
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
2 #
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
3 # Copyright (C) 2005 Edgewall Software
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
4 # Copyright (C) 2005 Christopher Lenz <cmlenz@gmx.de>
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
5 # All rights reserved.
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
6 #
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
7 # This software is licensed as described in the file COPYING, which
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
8 # you should have received as part of this distribution. The terms
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
9 # are also available at http://trac.edgewall.com/license.html.
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
10 #
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
11 # This software consists of voluntary contributions made by many
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
12 # individuals. For the exact contribution history, see the revision
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
13 # history and logs, available at http://projects.edgewall.com/trac/.
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
14 #
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
15 # Author: Christopher Lenz <cmlenz@gmx.de>
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
16
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
17 import os.path
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
18 import stat
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
19 import shutil
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
20 import sys
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
21 import tempfile
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
22 import unittest
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
23
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
24 from StringIO import StringIO
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
25
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
26 try:
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
27 from svn import core, repos
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
28 has_svn = True
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
29 except:
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
30 has_svn = False
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
31
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
32 from trac.log import logger_factory
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
33 from trac.test import TestSetup
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
34 from trac.core import TracError
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
35 from trac.versioncontrol import Changeset, Node
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
36 from trac.versioncontrol.svn_fs import SubversionRepository
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
37
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
38 REPOS_PATH = os.path.join(tempfile.gettempdir(), 'trac-svnrepos')
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
39
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
40
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
41 class SubversionRepositoryTestSetup(TestSetup):
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
42
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
43 def setUp(self):
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
44 dumpfile = open(os.path.join(os.path.split(__file__)[0],
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
45 'svnrepos.dump'))
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
46
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
47 core.apr_initialize()
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
48 pool = core.svn_pool_create(None)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
49 dumpstream = None
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
50 try:
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
51 r = repos.svn_repos_create(REPOS_PATH, '', '', None, None, pool)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
52 if hasattr(repos, 'svn_repos_load_fs2'):
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
53 repos.svn_repos_load_fs2(r, dumpfile, StringIO(),
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
54 repos.svn_repos_load_uuid_default, '',
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
55 0, 0, None, pool)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
56 else:
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
57 dumpstream = core.svn_stream_from_aprfile(dumpfile, pool)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
58 repos.svn_repos_load_fs(r, dumpstream, None,
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
59 repos.svn_repos_load_uuid_default, '',
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
60 None, None, pool)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
61 finally:
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
62 if dumpstream:
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
63 core.svn_stream_close(dumpstream)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
64 core.svn_pool_destroy(pool)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
65 core.apr_terminate()
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
66
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
67 def tearDown(self):
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
68 if os.name == 'nt':
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
69 # The Windows version of 'shutil.rmtree' doesn't override the
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
70 # permissions of read-only files, so we have to do it ourselves:
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
71 format_file = os.path.join(REPOS_PATH, 'db', 'format')
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
72 if os.path.isfile(format_file):
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
73 os.chmod(format_file, stat.S_IRWXU)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
74 os.chmod(os.path.join(REPOS_PATH, 'format'), stat.S_IRWXU)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
75 shutil.rmtree(REPOS_PATH)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
76
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
77
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
78 class SubversionRepositoryTestCase(unittest.TestCase):
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
79
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
80 def setUp(self):
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
81 self.repos = SubversionRepository(REPOS_PATH, None,
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
82 logger_factory('test'))
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
83
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
84 def tearDown(self):
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
85 self.repos = None
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
86
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
87 def test_repos_normalize_path(self):
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
88 self.assertEqual('/', self.repos.normalize_path('/'))
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
89 self.assertEqual('/', self.repos.normalize_path(''))
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
90 self.assertEqual('/', self.repos.normalize_path(None))
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
91 self.assertEqual('trunk', self.repos.normalize_path('trunk'))
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
92 self.assertEqual('trunk', self.repos.normalize_path('/trunk'))
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
93 self.assertEqual('trunk', self.repos.normalize_path('trunk/'))
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
94 self.assertEqual('trunk', self.repos.normalize_path('/trunk/'))
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
95
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
96 def test_repos_normalize_rev(self):
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
97 self.assertEqual(17, self.repos.normalize_rev('latest'))
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
98 self.assertEqual(17, self.repos.normalize_rev('head'))
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
99 self.assertEqual(17, self.repos.normalize_rev(''))
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
100 self.assertEqual(17, self.repos.normalize_rev(None))
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
101 self.assertEqual(11, self.repos.normalize_rev('11'))
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
102 self.assertEqual(11, self.repos.normalize_rev(11))
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
103
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
104 def test_rev_navigation(self):
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
105 self.assertEqual(1, self.repos.oldest_rev)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
106 self.assertEqual(None, self.repos.previous_rev(0))
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
107 self.assertEqual(None, self.repos.previous_rev(1))
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
108 self.assertEqual(17, self.repos.youngest_rev)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
109 self.assertEqual(6, self.repos.next_rev(5))
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
110 self.assertEqual(7, self.repos.next_rev(6))
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
111 # ...
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
112 self.assertEqual(None, self.repos.next_rev(17))
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
113
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
114 def test_rev_path_navigation(self):
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
115 self.assertEqual(1, self.repos.oldest_rev)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
116 self.assertEqual(None, self.repos.previous_rev(0, 'trunk'))
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
117 self.assertEqual(None, self.repos.previous_rev(1, 'trunk'))
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
118 self.assertEqual(17, self.repos.youngest_rev)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
119 self.assertEqual(6, self.repos.next_rev(5, 'trunk'))
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
120 self.assertEqual(13, self.repos.next_rev(6, 'trunk'))
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
121 # ...
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
122 self.assertEqual(None, self.repos.next_rev(17, 'trunk'))
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
123 # test accentuated characters
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
124 self.assertEqual(None, self.repos.previous_rev(17, u'trunk/R\xe9sum\xe9.txt'))
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
125 self.assertEqual(17, self.repos.next_rev(16, u'trunk/R\xe9sum\xe9.txt'))
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
126
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
127 def test_has_node(self):
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
128 self.assertEqual(False, self.repos.has_node('/trunk/dir1', 3))
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
129 self.assertEqual(True, self.repos.has_node('/trunk/dir1', 4))
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
130
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
131 def test_get_node(self):
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
132 node = self.repos.get_node('/trunk')
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
133 self.assertEqual('trunk', node.name)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
134 self.assertEqual('/trunk', node.path)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
135 self.assertEqual(Node.DIRECTORY, node.kind)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
136 self.assertEqual(17, node.rev)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
137 self.assertEqual(1143808225L, node.last_modified)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
138 node = self.repos.get_node('/trunk/README.txt')
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
139 self.assertEqual('README.txt', node.name)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
140 self.assertEqual('/trunk/README.txt', node.path)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
141 self.assertEqual(Node.FILE, node.kind)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
142 self.assertEqual(3, node.rev)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
143 self.assertEqual(1112361898, node.last_modified)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
144
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
145 def test_get_node_specific_rev(self):
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
146 node = self.repos.get_node('/trunk', 1)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
147 self.assertEqual('trunk', node.name)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
148 self.assertEqual('/trunk', node.path)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
149 self.assertEqual(Node.DIRECTORY, node.kind)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
150 self.assertEqual(1, node.rev)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
151 self.assertEqual(1112349652, node.last_modified)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
152 node = self.repos.get_node('/trunk/README.txt', 2)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
153 self.assertEqual('README.txt', node.name)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
154 self.assertEqual('/trunk/README.txt', node.path)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
155 self.assertEqual(Node.FILE, node.kind)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
156 self.assertEqual(2, node.rev)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
157 self.assertEqual(1112361138, node.last_modified)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
158
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
159 def test_get_dir_entries(self):
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
160 node = self.repos.get_node('/trunk')
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
161 entries = node.get_entries()
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
162 self.assertEqual(u'R\xe9sum\xe9.txt', entries.next().name)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
163 self.assertEqual('dir1', entries.next().name)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
164 self.assertEqual('README3.txt', entries.next().name)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
165 self.assertEqual('README.txt', entries.next().name)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
166 self.assertRaises(StopIteration, entries.next)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
167
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
168 def test_get_file_entries(self):
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
169 node = self.repos.get_node('/trunk/README.txt')
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
170 entries = node.get_entries()
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
171 self.assertRaises(StopIteration, entries.next)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
172
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
173 def test_get_dir_content(self):
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
174 node = self.repos.get_node('/trunk')
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
175 self.assertEqual(None, node.content_length)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
176 self.assertEqual(None, node.content_type)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
177 self.assertEqual(None, node.get_content())
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
178
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
179 def test_get_file_content(self):
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
180 node = self.repos.get_node('/trunk/README.txt')
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
181 self.assertEqual(8, node.content_length)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
182 self.assertEqual('text/plain', node.content_type)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
183 self.assertEqual('A test.\n', node.get_content().read())
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
184
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
185 def test_get_dir_properties(self):
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
186 f = self.repos.get_node('/trunk')
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
187 props = f.get_properties()
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
188 self.assertEqual(1, len(props))
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
189
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
190 def test_get_file_properties(self):
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
191 f = self.repos.get_node('/trunk/README.txt')
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
192 props = f.get_properties()
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
193 self.assertEqual('native', props['svn:eol-style'])
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
194 self.assertEqual('text/plain', props['svn:mime-type'])
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
195
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
196 def test_created_path_rev(self):
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
197 node = self.repos.get_node('/trunk/README3.txt', 15)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
198 self.assertEqual(14, node.rev)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
199 self.assertEqual('/trunk/README3.txt', node.path)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
200 self.assertEqual(14, node.created_rev)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
201 self.assertEqual('trunk/README3.txt', node.created_path)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
202
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
203 def test_created_path_rev_parent_copy(self):
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
204 node = self.repos.get_node('/tags/v1/README.txt', 15)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
205 self.assertEqual(3, node.rev)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
206 self.assertEqual('/tags/v1/README.txt', node.path)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
207 self.assertEqual(3, node.created_rev)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
208 self.assertEqual('trunk/README.txt', node.created_path)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
209
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
210 # Revision Log / node history
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
211
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
212 def test_get_node_history(self):
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
213 node = self.repos.get_node('/trunk/README3.txt')
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
214 history = node.get_history()
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
215 self.assertEqual(('trunk/README3.txt', 14, 'copy'), history.next())
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
216 self.assertEqual(('trunk/README2.txt', 6, 'copy'), history.next())
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
217 self.assertEqual(('trunk/README.txt', 3, 'edit'), history.next())
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
218 self.assertEqual(('trunk/README.txt', 2, 'add'), history.next())
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
219 self.assertRaises(StopIteration, history.next)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
220
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
221 def test_get_node_history_follow_copy(self):
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
222 node = self.repos.get_node('/tags/v1/README.txt')
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
223 history = node.get_history()
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
224 self.assertEqual(('tags/v1/README.txt', 7, 'copy'), history.next())
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
225 self.assertEqual(('trunk/README.txt', 3, 'edit'), history.next())
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
226 self.assertEqual(('trunk/README.txt', 2, 'add'), history.next())
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
227 self.assertRaises(StopIteration, history.next)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
228
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
229 # Revision Log / path history
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
230
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
231 def test_get_path_history(self):
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
232 history = self.repos.get_path_history('/trunk/README2.txt', None)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
233 self.assertEqual(('trunk/README2.txt', 14, 'delete'), history.next())
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
234 self.assertEqual(('trunk/README2.txt', 6, 'copy'), history.next())
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
235 self.assertEqual(('trunk/README.txt', 3, 'unknown'), history.next())
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
236 self.assertRaises(StopIteration, history.next)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
237
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
238 def test_get_path_history_copied_file(self):
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
239 history = self.repos.get_path_history('/tags/v1/README.txt', None)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
240 self.assertEqual(('tags/v1/README.txt', 7, 'copy'), history.next())
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
241 self.assertEqual(('trunk/README.txt', 3, 'unknown'), history.next())
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
242 self.assertRaises(StopIteration, history.next)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
243
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
244 def test_get_path_history_copied_dir(self):
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
245 history = self.repos.get_path_history('/branches/v1x', None)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
246 self.assertEqual(('branches/v1x', 12, 'copy'), history.next())
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
247 self.assertEqual(('tags/v1.1', 10, 'unknown'), history.next())
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
248 self.assertEqual(('branches/v1x', 11, 'delete'), history.next())
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
249 self.assertEqual(('branches/v1x', 9, 'edit'), history.next())
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
250 self.assertEqual(('branches/v1x', 8, 'copy'), history.next())
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
251 self.assertEqual(('tags/v1', 7, 'unknown'), history.next())
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
252 self.assertRaises(StopIteration, history.next)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
253
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
254 # Diffs
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
255
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
256 def _cmp_diff(self, expected, got):
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
257 if expected[0]:
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
258 old = self.repos.get_node(*expected[0])
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
259 self.assertEqual((old.path, old.rev), (got[0].path, got[0].rev))
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
260 if expected[1]:
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
261 new = self.repos.get_node(*expected[1])
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
262 self.assertEqual((new.path, new.rev), (got[1].path, got[1].rev))
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
263 self.assertEqual(expected[2], (got[2], got[3]))
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
264
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
265 def test_diff_file_different_revs(self):
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
266 diffs = self.repos.get_changes('trunk/README.txt', 2, 'trunk/README.txt', 3)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
267 self._cmp_diff((('trunk/README.txt', 2),
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
268 ('trunk/README.txt', 3),
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
269 (Node.FILE, Changeset.EDIT)), diffs.next())
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
270 self.assertRaises(StopIteration, diffs.next)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
271
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
272 def test_diff_file_different_files(self):
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
273 diffs = self.repos.get_changes('branches/v1x/README.txt', 12,
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
274 'branches/v1x/README2.txt', 12)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
275 self._cmp_diff((('branches/v1x/README.txt', 12),
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
276 ('branches/v1x/README2.txt', 12),
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
277 (Node.FILE, Changeset.EDIT)), diffs.next())
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
278 self.assertRaises(StopIteration, diffs.next)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
279
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
280 def test_diff_file_no_change(self):
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
281 diffs = self.repos.get_changes('trunk/README.txt', 7,
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
282 'tags/v1/README.txt', 7)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
283 self.assertRaises(StopIteration, diffs.next)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
284
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
285 def test_diff_dir_different_revs(self):
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
286 diffs = self.repos.get_changes('trunk', 4, 'trunk', 8)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
287 self._cmp_diff((None, ('trunk/dir1/dir2', 8),
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
288 (Node.DIRECTORY, Changeset.ADD)), diffs.next())
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
289 self._cmp_diff((None, ('trunk/dir1/dir3', 8),
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
290 (Node.DIRECTORY, Changeset.ADD)), diffs.next())
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
291 self._cmp_diff((None, ('trunk/README2.txt', 6),
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
292 (Node.FILE, Changeset.ADD)), diffs.next())
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
293 self._cmp_diff((('trunk/dir2', 4), None,
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
294 (Node.DIRECTORY, Changeset.DELETE)), diffs.next())
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
295 self._cmp_diff((('trunk/dir3', 4), None,
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
296 (Node.DIRECTORY, Changeset.DELETE)), diffs.next())
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
297 self.assertRaises(StopIteration, diffs.next)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
298
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
299 def test_diff_dir_different_dirs(self):
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
300 diffs = self.repos.get_changes('trunk', 1, 'branches/v1x', 12)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
301 self._cmp_diff((None, ('branches/v1x/dir1', 12),
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
302 (Node.DIRECTORY, Changeset.ADD)), diffs.next())
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
303 self._cmp_diff((None, ('branches/v1x/dir1/dir2', 12),
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
304 (Node.DIRECTORY, Changeset.ADD)), diffs.next())
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
305 self._cmp_diff((None, ('branches/v1x/dir1/dir3', 12),
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
306 (Node.DIRECTORY, Changeset.ADD)), diffs.next())
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
307 self._cmp_diff((None, ('branches/v1x/README.txt', 12),
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
308 (Node.FILE, Changeset.ADD)), diffs.next())
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
309 self._cmp_diff((None, ('branches/v1x/README2.txt', 12),
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
310 (Node.FILE, Changeset.ADD)), diffs.next())
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
311 self.assertRaises(StopIteration, diffs.next)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
312
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
313 def test_diff_dir_no_change(self):
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
314 diffs = self.repos.get_changes('trunk', 7,
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
315 'tags/v1', 7)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
316 self.assertRaises(StopIteration, diffs.next)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
317
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
318 # Changesets
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
319
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
320 def test_changeset_repos_creation(self):
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
321 chgset = self.repos.get_changeset(0)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
322 self.assertEqual(0, chgset.rev)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
323 self.assertEqual(None, chgset.message)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
324 self.assertEqual(None, chgset.author)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
325 self.assertEqual(1112349461, chgset.date)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
326 self.assertRaises(StopIteration, chgset.get_changes().next)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
327
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
328 def test_changeset_added_dirs(self):
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
329 chgset = self.repos.get_changeset(1)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
330 self.assertEqual(1, chgset.rev)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
331 self.assertEqual('Initial directory layout.', chgset.message)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
332 self.assertEqual('john', chgset.author)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
333 self.assertEqual(1112349652, chgset.date)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
334
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
335 changes = chgset.get_changes()
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
336 self.assertEqual(('branches', Node.DIRECTORY, Changeset.ADD, None, -1),
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
337 changes.next())
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
338 self.assertEqual(('tags', Node.DIRECTORY, Changeset.ADD, None, -1),
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
339 changes.next())
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
340 self.assertEqual(('trunk', Node.DIRECTORY, Changeset.ADD, None, -1),
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
341 changes.next())
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
342 self.assertRaises(StopIteration, changes.next)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
343
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
344 def test_changeset_file_edit(self):
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
345 chgset = self.repos.get_changeset(3)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
346 self.assertEqual(3, chgset.rev)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
347 self.assertEqual('Fixed README.\n', chgset.message)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
348 self.assertEqual('kate', chgset.author)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
349 self.assertEqual(1112361898, chgset.date)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
350
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
351 changes = chgset.get_changes()
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
352 self.assertEqual(('trunk/README.txt', Node.FILE, Changeset.EDIT,
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
353 'trunk/README.txt', 2), changes.next())
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
354 self.assertRaises(StopIteration, changes.next)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
355
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
356 def test_changeset_dir_moves(self):
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
357 chgset = self.repos.get_changeset(5)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
358 self.assertEqual(5, chgset.rev)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
359 self.assertEqual('Moved directories.', chgset.message)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
360 self.assertEqual('kate', chgset.author)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
361 self.assertEqual(1112372739, chgset.date)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
362
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
363 changes = chgset.get_changes()
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
364 self.assertEqual(('trunk/dir1/dir2', Node.DIRECTORY, Changeset.MOVE,
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
365 'trunk/dir2', 4), changes.next())
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
366 self.assertEqual(('trunk/dir1/dir3', Node.DIRECTORY, Changeset.MOVE,
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
367 'trunk/dir3', 4), changes.next())
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
368 self.assertRaises(StopIteration, changes.next)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
369
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
370 def test_changeset_file_copy(self):
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
371 chgset = self.repos.get_changeset(6)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
372 self.assertEqual(6, chgset.rev)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
373 self.assertEqual('More things to read', chgset.message)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
374 self.assertEqual('john', chgset.author)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
375 self.assertEqual(1112381806, chgset.date)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
376
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
377 changes = chgset.get_changes()
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
378 self.assertEqual(('trunk/README2.txt', Node.FILE, Changeset.COPY,
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
379 'trunk/README.txt', 3), changes.next())
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
380 self.assertRaises(StopIteration, changes.next)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
381
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
382 def test_changeset_root_propset(self):
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
383 chgset = self.repos.get_changeset(13)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
384 self.assertEqual(13, chgset.rev)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
385 self.assertEqual('Setting property on the repository_dir root',
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
386 chgset.message)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
387 changes = chgset.get_changes()
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
388 self.assertEqual(('/', Node.DIRECTORY, Changeset.EDIT, '/', 12),
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
389 changes.next())
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
390 self.assertEqual(('trunk', Node.DIRECTORY, Changeset.EDIT, 'trunk', 6),
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
391 changes.next())
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
392 self.assertRaises(StopIteration, changes.next)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
393
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
394 def test_changeset_base_path_rev(self):
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
395 chgset = self.repos.get_changeset(9)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
396 self.assertEqual(9, chgset.rev)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
397 changes = chgset.get_changes()
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
398 self.assertEqual(('branches/v1x/README.txt', Node.FILE,
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
399 Changeset.EDIT, 'trunk/README.txt', 3),
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
400 changes.next())
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
401 self.assertRaises(StopIteration, changes.next)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
402
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
403 def test_changeset_rename_and_edit(self):
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
404 chgset = self.repos.get_changeset(14)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
405 self.assertEqual(14, chgset.rev)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
406 changes = chgset.get_changes()
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
407 self.assertEqual(('trunk/README3.txt', Node.FILE,
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
408 Changeset.MOVE, 'trunk/README2.txt', 13),
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
409 changes.next())
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
410 self.assertRaises(StopIteration, changes.next)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
411
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
412 def test_changeset_edit_after_wc2wc_copy__original_deleted(self):
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
413 chgset = self.repos.get_changeset(16)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
414 self.assertEqual(16, chgset.rev)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
415 changes = chgset.get_changes()
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
416 self.assertEqual(('branches/v2', Node.DIRECTORY, Changeset.COPY,
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
417 'tags/v1.1', 14),
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
418 changes.next())
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
419 self.assertEqual(('branches/v2/README2.txt', Node.FILE,
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
420 Changeset.EDIT, 'trunk/README2.txt', 6),
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
421 changes.next())
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
422 self.assertRaises(StopIteration, changes.next)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
423
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
424
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
425 class ScopedSubversionRepositoryTestCase(unittest.TestCase):
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
426
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
427 def setUp(self):
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
428 self.repos = SubversionRepository(REPOS_PATH + '/trunk', None,
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
429 logger_factory('test'))
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
430
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
431 def tearDown(self):
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
432 self.repos = None
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
433
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
434 def test_repos_normalize_path(self):
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
435 self.assertEqual('/', self.repos.normalize_path('/'))
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
436 self.assertEqual('/', self.repos.normalize_path(''))
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
437 self.assertEqual('/', self.repos.normalize_path(None))
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
438 self.assertEqual('dir1', self.repos.normalize_path('dir1'))
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
439 self.assertEqual('dir1', self.repos.normalize_path('/dir1'))
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
440 self.assertEqual('dir1', self.repos.normalize_path('dir1/'))
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
441 self.assertEqual('dir1', self.repos.normalize_path('/dir1/'))
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
442
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
443 def test_repos_normalize_rev(self):
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
444 self.assertEqual(17, self.repos.normalize_rev('latest'))
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
445 self.assertEqual(17, self.repos.normalize_rev('head'))
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
446 self.assertEqual(17, self.repos.normalize_rev(''))
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
447 self.assertEqual(17, self.repos.normalize_rev(None))
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
448 self.assertEqual(5, self.repos.normalize_rev('5'))
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
449 self.assertEqual(5, self.repos.normalize_rev(5))
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
450
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
451 def test_rev_navigation(self):
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
452 self.assertEqual(1, self.repos.oldest_rev)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
453 self.assertEqual(None, self.repos.previous_rev(0))
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
454 self.assertEqual(1, self.repos.previous_rev(2))
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
455 self.assertEqual(17, self.repos.youngest_rev)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
456 self.assertEqual(2, self.repos.next_rev(1))
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
457 self.assertEqual(3, self.repos.next_rev(2))
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
458 # ...
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
459 self.assertEqual(None, self.repos.next_rev(17))
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
460
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
461 def test_has_node(self):
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
462 self.assertEqual(False, self.repos.has_node('/dir1', 3))
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
463 self.assertEqual(True, self.repos.has_node('/dir1', 4))
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
464
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
465 def test_get_node(self):
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
466 node = self.repos.get_node('/dir1')
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
467 self.assertEqual('dir1', node.name)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
468 self.assertEqual('/dir1', node.path)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
469 self.assertEqual(Node.DIRECTORY, node.kind)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
470 self.assertEqual(5, node.rev)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
471 self.assertEqual(1112372739, node.last_modified)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
472 node = self.repos.get_node('/README.txt')
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
473 self.assertEqual('README.txt', node.name)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
474 self.assertEqual('/README.txt', node.path)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
475 self.assertEqual(Node.FILE, node.kind)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
476 self.assertEqual(3, node.rev)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
477 self.assertEqual(1112361898, node.last_modified)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
478
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
479 def test_get_node_specific_rev(self):
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
480 node = self.repos.get_node('/dir1', 4)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
481 self.assertEqual('dir1', node.name)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
482 self.assertEqual('/dir1', node.path)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
483 self.assertEqual(Node.DIRECTORY, node.kind)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
484 self.assertEqual(4, node.rev)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
485 self.assertEqual(1112370155, node.last_modified)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
486 node = self.repos.get_node('/README.txt', 2)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
487 self.assertEqual('README.txt', node.name)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
488 self.assertEqual('/README.txt', node.path)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
489 self.assertEqual(Node.FILE, node.kind)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
490 self.assertEqual(2, node.rev)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
491 self.assertEqual(1112361138, node.last_modified)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
492
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
493 def test_get_dir_entries(self):
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
494 node = self.repos.get_node('/')
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
495 entries = node.get_entries()
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
496 self.assertEqual(u'R\xe9sum\xe9.txt', entries.next().name)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
497 self.assertEqual('dir1', entries.next().name)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
498 self.assertEqual('README3.txt', entries.next().name)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
499 self.assertEqual('README.txt', entries.next().name)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
500 self.assertRaises(StopIteration, entries.next)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
501
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
502 def test_get_file_entries(self):
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
503 node = self.repos.get_node('/README.txt')
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
504 entries = node.get_entries()
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
505 self.assertRaises(StopIteration, entries.next)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
506
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
507 def test_get_dir_content(self):
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
508 node = self.repos.get_node('/dir1')
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
509 self.assertEqual(None, node.content_length)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
510 self.assertEqual(None, node.content_type)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
511 self.assertEqual(None, node.get_content())
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
512
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
513 def test_get_file_content(self):
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
514 node = self.repos.get_node('/README.txt')
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
515 self.assertEqual(8, node.content_length)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
516 self.assertEqual('text/plain', node.content_type)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
517 self.assertEqual('A test.\n', node.get_content().read())
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
518
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
519 def test_get_dir_properties(self):
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
520 f = self.repos.get_node('/dir1')
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
521 props = f.get_properties()
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
522 self.assertEqual(0, len(props))
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
523
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
524 def test_get_file_properties(self):
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
525 f = self.repos.get_node('/README.txt')
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
526 props = f.get_properties()
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
527 self.assertEqual('native', props['svn:eol-style'])
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
528 self.assertEqual('text/plain', props['svn:mime-type'])
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
529
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
530 # Revision Log / node history
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
531
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
532 def test_get_node_history(self):
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
533 node = self.repos.get_node('/README3.txt')
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
534 history = node.get_history()
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
535 self.assertEqual(('README3.txt', 14, 'copy'), history.next())
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
536 self.assertEqual(('README2.txt', 6, 'copy'), history.next())
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
537 self.assertEqual(('README.txt', 3, 'edit'), history.next())
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
538 self.assertEqual(('README.txt', 2, 'add'), history.next())
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
539 self.assertRaises(StopIteration, history.next)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
540
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
541 def test_get_node_history_follow_copy(self):
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
542 node = self.repos.get_node('dir1/dir3', )
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
543 history = node.get_history()
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
544 self.assertEqual(('dir1/dir3', 5, 'copy'), history.next())
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
545 self.assertEqual(('dir3', 4, 'add'), history.next())
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
546 self.assertRaises(StopIteration, history.next)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
547
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
548 # Revision Log / path history
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
549
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
550 def test_get_path_history(self):
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
551 history = self.repos.get_path_history('dir3', None)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
552 self.assertEqual(('dir3', 5, 'delete'), history.next())
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
553 self.assertEqual(('dir3', 4, 'add'), history.next())
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
554 self.assertRaises(StopIteration, history.next)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
555
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
556 def test_get_path_history_copied_file(self):
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
557 history = self.repos.get_path_history('README3.txt', None)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
558 self.assertEqual(('README3.txt', 14, 'copy'), history.next())
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
559 self.assertEqual(('README2.txt', 6, 'unknown'), history.next())
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
560 self.assertRaises(StopIteration, history.next)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
561
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
562 def test_get_path_history_copied_dir(self):
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
563 history = self.repos.get_path_history('dir1/dir3', None)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
564 self.assertEqual(('dir1/dir3', 5, 'copy'), history.next())
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
565 self.assertEqual(('dir3', 4, 'unknown'), history.next())
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
566 self.assertRaises(StopIteration, history.next)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
567
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
568 def test_changeset_repos_creation(self):
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
569 chgset = self.repos.get_changeset(0)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
570 self.assertEqual(0, chgset.rev)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
571 self.assertEqual(None, chgset.message)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
572 self.assertEqual(None, chgset.author)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
573 self.assertEqual(1112349461, chgset.date)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
574 self.assertRaises(StopIteration, chgset.get_changes().next)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
575
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
576 def test_changeset_added_dirs(self):
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
577 chgset = self.repos.get_changeset(4)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
578 self.assertEqual(4, chgset.rev)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
579 self.assertEqual('More directories.', chgset.message)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
580 self.assertEqual('john', chgset.author)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
581 self.assertEqual(1112370155, chgset.date)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
582
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
583 changes = chgset.get_changes()
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
584 self.assertEqual(('dir1', Node.DIRECTORY, 'add', None, -1),
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
585 changes.next())
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
586 self.assertEqual(('dir2', Node.DIRECTORY, 'add', None, -1),
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
587 changes.next())
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
588 self.assertEqual(('dir3', Node.DIRECTORY, 'add', None, -1),
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
589 changes.next())
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
590 self.assertRaises(StopIteration, changes.next)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
591
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
592 def test_changeset_file_edit(self):
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
593 chgset = self.repos.get_changeset(3)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
594 self.assertEqual(3, chgset.rev)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
595 self.assertEqual('Fixed README.\n', chgset.message)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
596 self.assertEqual('kate', chgset.author)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
597 self.assertEqual(1112361898, chgset.date)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
598
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
599 changes = chgset.get_changes()
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
600 self.assertEqual(('README.txt', Node.FILE, Changeset.EDIT,
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
601 'README.txt', 2), changes.next())
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
602 self.assertRaises(StopIteration, changes.next)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
603
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
604 def test_changeset_dir_moves(self):
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
605 chgset = self.repos.get_changeset(5)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
606 self.assertEqual(5, chgset.rev)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
607 self.assertEqual('Moved directories.', chgset.message)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
608 self.assertEqual('kate', chgset.author)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
609 self.assertEqual(1112372739, chgset.date)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
610
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
611 changes = chgset.get_changes()
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
612 self.assertEqual(('dir1/dir2', Node.DIRECTORY, Changeset.MOVE,
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
613 'dir2', 4), changes.next())
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
614 self.assertEqual(('dir1/dir3', Node.DIRECTORY, Changeset.MOVE,
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
615 'dir3', 4), changes.next())
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
616 self.assertRaises(StopIteration, changes.next)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
617
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
618 def test_changeset_file_copy(self):
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
619 chgset = self.repos.get_changeset(6)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
620 self.assertEqual(6, chgset.rev)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
621 self.assertEqual('More things to read', chgset.message)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
622 self.assertEqual('john', chgset.author)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
623 self.assertEqual(1112381806, chgset.date)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
624
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
625 changes = chgset.get_changes()
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
626 self.assertEqual(('README2.txt', Node.FILE, Changeset.COPY,
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
627 'README.txt', 3), changes.next())
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
628 self.assertRaises(StopIteration, changes.next)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
629
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
630 def test_changeset_root_propset(self):
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
631 chgset = self.repos.get_changeset(13)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
632 self.assertEqual(13, chgset.rev)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
633 self.assertEqual('Setting property on the repository_dir root',
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
634 chgset.message)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
635 changes = chgset.get_changes()
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
636 self.assertEqual(('/', Node.DIRECTORY, Changeset.EDIT, '/', 6),
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
637 changes.next())
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
638 self.assertRaises(StopIteration, changes.next)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
639
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
640
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
641 class RecentPathScopedRepositoryTestCase(unittest.TestCase):
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
642
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
643 def setUp(self):
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
644 self.repos = SubversionRepository(REPOS_PATH + '/trunk/dir1', None,
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
645 logger_factory('test'))
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
646
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
647 def tearDown(self):
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
648 self.repos = None
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
649
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
650 def test_rev_navigation(self):
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
651 self.assertEqual(False, self.repos.has_node('/', 1))
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
652 self.assertEqual(False, self.repos.has_node('/', 2))
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
653 self.assertEqual(False, self.repos.has_node('/', 3))
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
654 self.assertEqual(True, self.repos.has_node('/', 4))
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
655 self.assertEqual(4, self.repos.oldest_rev)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
656 self.assertEqual(None, self.repos.previous_rev(4))
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
657
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
658
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
659 class NonSelfContainedScopedTestCase(unittest.TestCase):
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
660
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
661 def setUp(self):
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
662 self.repos = SubversionRepository(REPOS_PATH + '/tags/v1', None,
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
663 logger_factory('test'))
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
664
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
665 def tearDown(self):
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
666 self.repos = None
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
667
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
668 def test_mixed_changeset(self):
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
669 chgset = self.repos.get_changeset(7)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
670 self.assertEqual(7, chgset.rev)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
671 changes = chgset.get_changes()
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
672 self.assertEqual(('/', Node.DIRECTORY, Changeset.ADD, None, -1),
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
673 changes.next())
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
674 self.assertRaises(TracError, lambda: self.repos.get_node(None, 6))
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
675
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
676
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
677 class AnotherNonSelfContainedScopedTestCase(unittest.TestCase):
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
678
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
679 def setUp(self):
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
680 self.repos = SubversionRepository(REPOS_PATH + '/branches', None,
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
681 logger_factory('test'))
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
682
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
683 def tearDown(self):
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
684 self.repos = None
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
685
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
686 def test_mixed_changeset_with_edit(self):
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
687 chgset = self.repos.get_changeset(9)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
688 self.assertEqual(9, chgset.rev)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
689 changes = chgset.get_changes()
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
690 self.assertEqual(('v1x/README.txt', Node.FILE, Changeset.EDIT,
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
691 'v1x/README.txt', 8),
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
692 changes.next())
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
693
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
694
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
695 def suite():
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
696 global has_svn
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
697 suite = unittest.TestSuite()
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
698 if has_svn:
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
699 suite.addTest(unittest.makeSuite(SubversionRepositoryTestCase,
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
700 'test', suiteClass=SubversionRepositoryTestSetup))
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
701 suite.addTest(unittest.makeSuite(ScopedSubversionRepositoryTestCase,
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
702 'test', suiteClass=SubversionRepositoryTestSetup))
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
703 suite.addTest(unittest.makeSuite(RecentPathScopedRepositoryTestCase,
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
704 'test', suiteClass=SubversionRepositoryTestSetup))
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
705 suite.addTest(unittest.makeSuite(NonSelfContainedScopedTestCase,
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
706 'test', suiteClass=SubversionRepositoryTestSetup))
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
707 suite.addTest(unittest.makeSuite(AnotherNonSelfContainedScopedTestCase,
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
708 'test', suiteClass=SubversionRepositoryTestSetup))
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
709 return suite
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
710
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
711 if __name__ == '__main__':
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
712 runner = unittest.TextTestRunner()
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
713 runner.run(suite())
Copyright (C) 2012-2017 Edgewall Software