##// END OF EJS Templates
some tests fixes for compare view
marcink -
r3379:8171dfaf beta
parent child Browse files
Show More
@@ -1,469 +1,455 b''
1 1 from rhodecode.tests import *
2 2 from rhodecode.model.repo import RepoModel
3 3 from rhodecode.model.meta import Session
4 4 from rhodecode.model.db import Repository
5 5 from rhodecode.model.scm import ScmModel
6 6 from rhodecode.lib.vcs.backends.base import EmptyChangeset
7 7
8 8
9 9 def _fork_repo(fork_name, vcs_type, parent=None):
10 10 if vcs_type =='hg':
11 11 _REPO = HG_REPO
12 12 elif vcs_type == 'git':
13 13 _REPO = GIT_REPO
14 14
15 15 if parent:
16 16 _REPO = parent
17 17
18 18 form_data = dict(
19 19 repo_name=fork_name,
20 20 repo_name_full=fork_name,
21 21 repo_group=None,
22 22 repo_type=vcs_type,
23 23 description='',
24 24 private=False,
25 25 copy_permissions=False,
26 26 landing_rev='tip',
27 27 update_after_clone=False,
28 28 fork_parent_id=Repository.get_by_repo_name(_REPO),
29 29 )
30 30 repo = RepoModel().create_fork(form_data, cur_user=TEST_USER_ADMIN_LOGIN)
31 31
32 32 Session().commit()
33 33 return Repository.get_by_repo_name(fork_name)
34 34
35 35
36 36 def _commit_change(repo, filename, content, message, vcs_type, parent=None, newfile=False):
37 37 repo = Repository.get_by_repo_name(repo)
38 38 _cs = parent
39 39 if not parent:
40 40 _cs = EmptyChangeset(alias=vcs_type)
41 41
42 42 if newfile:
43 43 cs = ScmModel().create_node(
44 44 repo=repo.scm_instance, repo_name=repo.repo_name,
45 45 cs=_cs, user=TEST_USER_ADMIN_LOGIN,
46 46 author=TEST_USER_ADMIN_LOGIN,
47 47 message=message,
48 48 content=content,
49 49 f_path=filename
50 50 )
51 51 else:
52 52 cs = ScmModel().commit_change(
53 53 repo=repo.scm_instance, repo_name=repo.repo_name,
54 54 cs=parent, user=TEST_USER_ADMIN_LOGIN,
55 55 author=TEST_USER_ADMIN_LOGIN,
56 56 message=message,
57 57 content=content,
58 58 f_path=filename
59 59 )
60 60 return cs
61 61
62 62
63 63 class TestCompareController(TestController):
64 64
65 def setUp(self):
66 self.r1_id = None
67 self.r2_id = None
68
69 def tearDown(self):
70 if self.r2_id:
71 RepoModel().delete(self.r2_id)
72 if self.r1_id:
73 RepoModel().delete(self.r1_id)
74 Session().commit()
75 Session.remove()
76
65 77 def test_compare_forks_on_branch_extra_commits_hg(self):
66 78 self.log_user()
67
68 79 repo1 = RepoModel().create_repo(repo_name='one', repo_type='hg',
69 80 description='diff-test',
70 81 owner=TEST_USER_ADMIN_LOGIN)
71 r1_id = repo1.repo_id
72 82 Session().commit()
83 self.r1_id = repo1.repo_id
73 84 #commit something !
74 85 cs0 = _commit_change(repo1.repo_name, filename='file1', content='line1\n',
75 86 message='commit1', vcs_type='hg', parent=None, newfile=True)
76 87
77 88 #fork this repo
78 89 repo2 = _fork_repo('one-fork', 'hg', parent='one')
79 90 Session().commit()
80 r2_id = repo2.repo_id
91 self.r2_id = repo2.repo_id
81 92
82 93 #add two extra commit into fork
83 94 cs1 = _commit_change(repo2.repo_name, filename='file1', content='line1\nline2\n',
84 95 message='commit2', vcs_type='hg', parent=cs0)
85 96
86 97 cs2 = _commit_change(repo2.repo_name, filename='file1', content='line1\nline2\nline3\n',
87 98 message='commit3', vcs_type='hg', parent=cs1)
88 99
89 100 rev1 = 'default'
90 101 rev2 = 'default'
91 102
92
93 try:
94 response = self.app.get(url(controller='compare', action='index',
95 repo_name=repo1.repo_name,
96 org_ref_type="branch",
97 org_ref=rev2,
98 other_repo=repo2.repo_name,
99 other_ref_type="branch",
100 other_ref=rev1,
101 ))
103 response = self.app.get(url(controller='compare', action='index',
104 repo_name=repo1.repo_name,
105 org_ref_type="branch",
106 org_ref=rev2,
107 other_repo=repo2.repo_name,
108 other_ref_type="branch",
109 other_ref=rev1,
110 ))
102 111
103 response.mustcontain('%s@%s -> %s@%s' % (repo1.repo_name, rev2, repo2.repo_name, rev1))
104 response.mustcontain("""Showing 2 commits""")
105 response.mustcontain("""1 file changed with 2 insertions and 0 deletions""")
112 response.mustcontain('%s@%s -> %s@%s' % (repo1.repo_name, rev2, repo2.repo_name, rev1))
113 response.mustcontain("""Showing 2 commits""")
114 response.mustcontain("""1 file changed with 2 insertions and 0 deletions""")
106 115
107 response.mustcontain("""<div class="message tooltip" title="commit2" style="white-space:normal">commit2</div>""")
108 response.mustcontain("""<div class="message tooltip" title="commit3" style="white-space:normal">commit3</div>""")
116 response.mustcontain("""<div class="message tooltip" title="commit2" style="white-space:normal">commit2</div>""")
117 response.mustcontain("""<div class="message tooltip" title="commit3" style="white-space:normal">commit3</div>""")
109 118
110 response.mustcontain("""<a href="/%s/changeset/%s">r1:%s</a>""" % (repo2.repo_name, cs1.raw_id, cs1.short_id))
111 response.mustcontain("""<a href="/%s/changeset/%s">r2:%s</a>""" % (repo2.repo_name, cs2.raw_id, cs2.short_id))
112 ## files
113 response.mustcontain("""<a href="/%s/compare/branch@%s...branch@%s?other_repo=%s#C--826e8142e6ba">file1</a>""" % (repo1.repo_name, rev2, rev1, repo2.repo_name))
114 #swap
115 response.mustcontain("""<a href="/%s/compare/branch@%s...branch@%s?as_form=None&amp;other_repo=%s">[swap]</a>""" % (repo2.repo_name, rev1, rev2, repo1.repo_name))
116 finally:
117 RepoModel().delete(r2_id)
118 RepoModel().delete(r1_id)
119 response.mustcontain("""<a href="/%s/changeset/%s">r1:%s</a>""" % (repo2.repo_name, cs1.raw_id, cs1.short_id))
120 response.mustcontain("""<a href="/%s/changeset/%s">r2:%s</a>""" % (repo2.repo_name, cs2.raw_id, cs2.short_id))
121 ## files
122 response.mustcontain("""<a href="/%s/compare/branch@%s...branch@%s?other_repo=%s#C--826e8142e6ba">file1</a>""" % (repo1.repo_name, rev2, rev1, repo2.repo_name))
123 #swap
124 response.mustcontain("""<a href="/%s/compare/branch@%s...branch@%s?as_form=None&amp;other_repo=%s">[swap]</a>""" % (repo2.repo_name, rev1, rev2, repo1.repo_name))
119 125
120 126 def test_compare_forks_on_branch_extra_commits_origin_has_incomming_hg(self):
121 127 self.log_user()
122 128
123 129 repo1 = RepoModel().create_repo(repo_name='one', repo_type='hg',
124 130 description='diff-test',
125 131 owner=TEST_USER_ADMIN_LOGIN)
126 r1_id = repo1.repo_id
127 132 Session().commit()
133 self.r1_id = repo1.repo_id
134
128 135 #commit something !
129 136 cs0 = _commit_change(repo1.repo_name, filename='file1', content='line1\n',
130 137 message='commit1', vcs_type='hg', parent=None, newfile=True)
131 138
132 139 #fork this repo
133 140 repo2 = _fork_repo('one-fork', 'hg', parent='one')
134 141 Session().commit()
142 self.r2_id = repo2.repo_id
135 143
136 144 #now commit something to origin repo
137 145 cs1_prim = _commit_change(repo1.repo_name, filename='file2', content='line1file2\n',
138 146 message='commit2', vcs_type='hg', parent=cs0, newfile=True)
139 147
140 r2_id = repo2.repo_id
141
142 148 #add two extra commit into fork
143 149 cs1 = _commit_change(repo2.repo_name, filename='file1', content='line1\nline2\n',
144 150 message='commit2', vcs_type='hg', parent=cs0)
145 151
146 152 cs2 = _commit_change(repo2.repo_name, filename='file1', content='line1\nline2\nline3\n',
147 153 message='commit3', vcs_type='hg', parent=cs1)
148 154
149 155 rev1 = 'default'
150 156 rev2 = 'default'
151 157
152 try:
153 response = self.app.get(url(controller='compare', action='index',
154 repo_name=repo1.repo_name,
155 org_ref_type="branch",
156 org_ref=rev2,
157 other_repo=repo2.repo_name,
158 other_ref_type="branch",
159 other_ref=rev1,
160 ))
161 response.mustcontain('%s@%s -&gt; %s@%s' % (repo1.repo_name, rev2, repo2.repo_name, rev1))
162 response.mustcontain("""Showing 2 commits""")
163 response.mustcontain("""1 file changed with 2 insertions and 0 deletions""")
158 response = self.app.get(url(controller='compare', action='index',
159 repo_name=repo1.repo_name,
160 org_ref_type="branch",
161 org_ref=rev2,
162 other_repo=repo2.repo_name,
163 other_ref_type="branch",
164 other_ref=rev1,
165 ))
166 response.mustcontain('%s@%s -&gt; %s@%s' % (repo1.repo_name, rev2, repo2.repo_name, rev1))
167 response.mustcontain("""Showing 2 commits""")
168 response.mustcontain("""1 file changed with 2 insertions and 0 deletions""")
164 169
165 response.mustcontain("""<div class="message tooltip" title="commit2" style="white-space:normal">commit2</div>""")
166 response.mustcontain("""<div class="message tooltip" title="commit3" style="white-space:normal">commit3</div>""")
170 response.mustcontain("""<div class="message tooltip" title="commit2" style="white-space:normal">commit2</div>""")
171 response.mustcontain("""<div class="message tooltip" title="commit3" style="white-space:normal">commit3</div>""")
167 172
168 response.mustcontain("""<a href="/%s/changeset/%s">r1:%s</a>""" % (repo2.repo_name, cs1.raw_id, cs1.short_id))
169 response.mustcontain("""<a href="/%s/changeset/%s">r2:%s</a>""" % (repo2.repo_name, cs2.raw_id, cs2.short_id))
170 ## files
171 response.mustcontain("""<a href="/%s/compare/branch@%s...branch@%s?other_repo=%s#C--826e8142e6ba">file1</a>""" % (repo1.repo_name, rev2, rev1, repo2.repo_name))
172 #swap
173 response.mustcontain("""<a href="/%s/compare/branch@%s...branch@%s?as_form=None&amp;other_repo=%s">[swap]</a>""" % (repo2.repo_name, rev1, rev2, repo1.repo_name))
174 finally:
175 RepoModel().delete(r2_id)
176 RepoModel().delete(r1_id)
173 response.mustcontain("""<a href="/%s/changeset/%s">r1:%s</a>""" % (repo2.repo_name, cs1.raw_id, cs1.short_id))
174 response.mustcontain("""<a href="/%s/changeset/%s">r2:%s</a>""" % (repo2.repo_name, cs2.raw_id, cs2.short_id))
175 ## files
176 response.mustcontain("""<a href="/%s/compare/branch@%s...branch@%s?other_repo=%s#C--826e8142e6ba">file1</a>""" % (repo1.repo_name, rev2, rev1, repo2.repo_name))
177 #swap
178 response.mustcontain("""<a href="/%s/compare/branch@%s...branch@%s?as_form=None&amp;other_repo=%s">[swap]</a>""" % (repo2.repo_name, rev1, rev2, repo1.repo_name))
177 179
178 180 def test_compare_cherry_pick_changesets_from_bottom(self):
179 181 """
180 182 repo1:
181 183 cs1:
182 184 cs2:
183 185 repo1-fork- in which we will cherry pick bottom changesets
184 186 cs1:
185 187 cs2:
186 188 cs3: x
187 189 cs4: x
188 190 cs5: x
189 191 cs6:
190 192 """
191 193 #make repo1, and cs1+cs2
192 194 self.log_user()
193 195
194 196 repo1 = RepoModel().create_repo(repo_name='repo1', repo_type='hg',
195 197 description='diff-test',
196 198 owner=TEST_USER_ADMIN_LOGIN)
197 r1_id = repo1.repo_id
198 199 Session().commit()
200 self.r1_id = repo1.repo_id
201
199 202 #commit something !
200 203 cs1 = _commit_change(repo1.repo_name, filename='file1', content='line1\n',
201 204 message='commit1', vcs_type='hg', parent=None,
202 205 newfile=True)
203 206 cs2 = _commit_change(repo1.repo_name, filename='file1', content='line1\nline2\n',
204 207 message='commit2', vcs_type='hg', parent=cs1)
205 208 #fork this repo
206 209 repo2 = _fork_repo('repo1-fork', 'hg', parent='repo1')
207 210 Session().commit()
208 r2_id = repo1.repo_id
211 self.r2_id = repo2.repo_id
209 212 #now make cs3-6
210 213 cs3 = _commit_change(repo1.repo_name, filename='file1', content='line1\nline2\nline3\n',
211 214 message='commit3', vcs_type='hg', parent=cs2)
212 215 cs4 = _commit_change(repo1.repo_name, filename='file1', content='line1\nline2\nline3\nline4\n',
213 216 message='commit4', vcs_type='hg', parent=cs3)
214 217 cs5 = _commit_change(repo1.repo_name, filename='file1', content='line1\nline2\nline3\nline4\nline5\n',
215 218 message='commit5', vcs_type='hg', parent=cs4)
216 219 cs6 = _commit_change(repo1.repo_name, filename='file1', content='line1\nline2\nline3\nline4\nline5\nline6\n',
217 220 message='commit6', vcs_type='hg', parent=cs5)
218 221
219 222 rev1 = 'tip'
220 223 rev2 = 'tip'
221 224
222 try:
223 response = self.app.get(url(controller='compare', action='index',
224 repo_name=repo2.repo_name,
225 org_ref_type="tag",
226 org_ref=rev1,
227 other_repo=repo1.repo_name,
228 other_ref_type="tag",
229 other_ref=rev2,
230 rev_start=cs3.raw_id,
231 rev_end=cs5.raw_id,
232 ))
233 response.mustcontain('%s@%s -&gt; %s@%s' % (repo2.repo_name, rev1, repo1.repo_name, rev2))
234 response.mustcontain("""Showing 3 commits""")
235 response.mustcontain("""1 file changed with 3 insertions and 0 deletions""")
225 response = self.app.get(url(controller='compare', action='index',
226 repo_name=repo2.repo_name,
227 org_ref_type="tag",
228 org_ref=rev1,
229 other_repo=repo1.repo_name,
230 other_ref_type="tag",
231 other_ref=rev2,
232 rev_start=cs3.raw_id,
233 rev_end=cs5.raw_id,
234 ))
235 response.mustcontain('%s@%s -&gt; %s@%s' % (repo2.repo_name, rev1, repo1.repo_name, rev2))
236 response.mustcontain("""Showing 3 commits""")
237 response.mustcontain("""1 file changed with 3 insertions and 0 deletions""")
236 238
237 response.mustcontain("""<div class="message tooltip" title="commit3" style="white-space:normal">commit3</div>""")
238 response.mustcontain("""<div class="message tooltip" title="commit4" style="white-space:normal">commit4</div>""")
239 response.mustcontain("""<div class="message tooltip" title="commit5" style="white-space:normal">commit5</div>""")
239 response.mustcontain("""<div class="message tooltip" title="commit3" style="white-space:normal">commit3</div>""")
240 response.mustcontain("""<div class="message tooltip" title="commit4" style="white-space:normal">commit4</div>""")
241 response.mustcontain("""<div class="message tooltip" title="commit5" style="white-space:normal">commit5</div>""")
240 242
241 response.mustcontain("""<a href="/%s/changeset/%s">r3:%s</a>""" % (repo2.repo_name, cs3.raw_id, cs3.short_id))
242 response.mustcontain("""<a href="/%s/changeset/%s">r4:%s</a>""" % (repo2.repo_name, cs4.raw_id, cs4.short_id))
243 response.mustcontain("""<a href="/%s/changeset/%s">r5:%s</a>""" % (repo2.repo_name, cs5.raw_id, cs5.short_id))
244 ## files
245 response.mustcontain("""<a href="/%s/compare/tag@%s...tag@%s?other_repo=%s#C--826e8142e6ba">file1</a>""" % (repo2.repo_name, rev1, rev2, repo1.repo_name))
246 #swap
247 response.mustcontain("""<a href="/%s/compare/tag@%s...tag@%s?as_form=None&amp;other_repo=%s">[swap]</a>""" % (repo1.repo_name, rev1, rev2, repo2.repo_name))
248 finally:
249 RepoModel().delete(r2_id)
250 RepoModel().delete(r1_id)
243 response.mustcontain("""<a href="/%s/changeset/%s">r3:%s</a>""" % (repo2.repo_name, cs3.raw_id, cs3.short_id))
244 response.mustcontain("""<a href="/%s/changeset/%s">r4:%s</a>""" % (repo2.repo_name, cs4.raw_id, cs4.short_id))
245 response.mustcontain("""<a href="/%s/changeset/%s">r5:%s</a>""" % (repo2.repo_name, cs5.raw_id, cs5.short_id))
246 ## files
247 response.mustcontain("""<a href="/%s/compare/tag@%s...tag@%s?other_repo=%s#C--826e8142e6ba">file1</a>""" % (repo2.repo_name, rev1, rev2, repo1.repo_name))
248 #swap
249 response.mustcontain("""<a href="/%s/compare/tag@%s...tag@%s?as_form=None&amp;other_repo=%s">[swap]</a>""" % (repo1.repo_name, rev1, rev2, repo2.repo_name))
251 250
252 251 def test_compare_cherry_pick_changesets_from_top(self):
253 252 """
254 253 repo1:
255 254 cs1:
256 255 cs2:
257 256 repo1-fork- in which we will cherry pick bottom changesets
258 257 cs1:
259 258 cs2:
260 259 cs3:
261 260 cs4: x
262 261 cs5: x
263 262 cs6: x
264 263 """
265 264 #make repo1, and cs1+cs2
266 265 self.log_user()
267
268 266 repo1 = RepoModel().create_repo(repo_name='repo1', repo_type='hg',
269 267 description='diff-test',
270 268 owner=TEST_USER_ADMIN_LOGIN)
271 r1_id = repo1.repo_id
272 269 Session().commit()
270 self.r1_id = repo1.repo_id
271
273 272 #commit something !
274 273 cs1 = _commit_change(repo1.repo_name, filename='file1', content='line1\n',
275 274 message='commit1', vcs_type='hg', parent=None,
276 275 newfile=True)
277 276 cs2 = _commit_change(repo1.repo_name, filename='file1', content='line1\nline2\n',
278 277 message='commit2', vcs_type='hg', parent=cs1)
279 278 #fork this repo
280 279 repo2 = _fork_repo('repo1-fork', 'hg', parent='repo1')
281 280 Session().commit()
282 r2_id = repo1.repo_id
281 self.r2_id = repo1.repo_id
283 282 #now make cs3-6
284 283 cs3 = _commit_change(repo1.repo_name, filename='file1', content='line1\nline2\nline3\n',
285 284 message='commit3', vcs_type='hg', parent=cs2)
286 285 cs4 = _commit_change(repo1.repo_name, filename='file1', content='line1\nline2\nline3\nline4\n',
287 286 message='commit4', vcs_type='hg', parent=cs3)
288 287 cs5 = _commit_change(repo1.repo_name, filename='file1', content='line1\nline2\nline3\nline4\nline5\n',
289 288 message='commit5', vcs_type='hg', parent=cs4)
290 289 cs6 = _commit_change(repo1.repo_name, filename='file1', content='line1\nline2\nline3\nline4\nline5\nline6\n',
291 290 message='commit6', vcs_type='hg', parent=cs5)
292
293 291 rev1 = 'tip'
294 292 rev2 = 'tip'
295 293
296 try:
297 response = self.app.get(url(controller='compare', action='index',
298 repo_name=repo2.repo_name,
299 org_ref_type="tag",
300 org_ref=rev1,
301 other_repo=repo1.repo_name,
302 other_ref_type="tag",
303 other_ref=rev2,
304 rev_start=cs4.raw_id,
305 rev_end=cs6.raw_id,
306 ))
294 response = self.app.get(url(controller='compare', action='index',
295 repo_name=repo2.repo_name,
296 org_ref_type="tag",
297 org_ref=rev1,
298 other_repo=repo1.repo_name,
299 other_ref_type="tag",
300 other_ref=rev2,
301 rev_start=cs4.raw_id,
302 rev_end=cs6.raw_id,
303 ))
307 304
308 response.mustcontain('%s@%s -&gt; %s@%s' % (repo2.repo_name, rev1, repo1.repo_name, rev2))
309 response.mustcontain("""Showing 3 commits""")
310 response.mustcontain("""1 file changed with 3 insertions and 0 deletions""")
305 response.mustcontain('%s@%s -&gt; %s@%s' % (repo2.repo_name, rev1, repo1.repo_name, rev2))
306 response.mustcontain("""Showing 3 commits""")
307 response.mustcontain("""1 file changed with 3 insertions and 0 deletions""")
311 308
312 response.mustcontain("""<div class="message tooltip" title="commit3" style="white-space:normal">commit4</div>""")
313 response.mustcontain("""<div class="message tooltip" title="commit4" style="white-space:normal">commit5</div>""")
314 response.mustcontain("""<div class="message tooltip" title="commit5" style="white-space:normal">commit6</div>""")
309 response.mustcontain("""<div class="message tooltip" title="commit3" style="white-space:normal">commit4</div>""")
310 response.mustcontain("""<div class="message tooltip" title="commit4" style="white-space:normal">commit5</div>""")
311 response.mustcontain("""<div class="message tooltip" title="commit5" style="white-space:normal">commit6</div>""")
315 312
316 response.mustcontain("""<a href="/%s/changeset/%s">r4:%s</a>""" % (repo2.repo_name, cs4.raw_id, cs4.short_id))
317 response.mustcontain("""<a href="/%s/changeset/%s">r5:%s</a>""" % (repo2.repo_name, cs5.raw_id, cs5.short_id))
318 response.mustcontain("""<a href="/%s/changeset/%s">r6:%s</a>""" % (repo2.repo_name, cs6.raw_id, cs6.short_id))
319 ## files
320 response.mustcontain("""<a href="/%s/compare/tag@%s...tag@%s?other_repo=%s#C--826e8142e6ba">file1</a>""" % (repo2.repo_name, rev1, rev2, repo1.repo_name))
321 #swap
322 response.mustcontain("""<a href="/%s/compare/tag@%s...tag@%s?as_form=None&amp;other_repo=%s">[swap]</a>""" % (repo1.repo_name, rev1, rev2, repo2.repo_name))
323 finally:
324 RepoModel().delete(r2_id)
325 RepoModel().delete(r1_id)
313 response.mustcontain("""<a href="/%s/changeset/%s">r4:%s</a>""" % (repo2.repo_name, cs4.raw_id, cs4.short_id))
314 response.mustcontain("""<a href="/%s/changeset/%s">r5:%s</a>""" % (repo2.repo_name, cs5.raw_id, cs5.short_id))
315 response.mustcontain("""<a href="/%s/changeset/%s">r6:%s</a>""" % (repo2.repo_name, cs6.raw_id, cs6.short_id))
316 ## files
317 response.mustcontain("""<a href="/%s/compare/tag@%s...tag@%s?other_repo=%s#C--826e8142e6ba">file1</a>""" % (repo2.repo_name, rev1, rev2, repo1.repo_name))
318 #swap
319 response.mustcontain("""<a href="/%s/compare/tag@%s...tag@%s?as_form=None&amp;other_repo=%s">[swap]</a>""" % (repo1.repo_name, rev1, rev2, repo2.repo_name))
326 320
327 321 def test_compare_cherry_pick_changeset_mixed_branches(self):
328 322 """
329 323
330 324 """
331 325 pass
332 326 #TODO write this tastecase
333 327
334 328 def test_compare_remote_branches_hg(self):
335 329 self.log_user()
336 330
337 331 _fork_repo(HG_FORK, 'hg')
338 332
339 333 rev1 = '56349e29c2af'
340 334 rev2 = '7d4bc8ec6be5'
341 335
342 try:
343 response = self.app.get(url(controller='compare', action='index',
344 repo_name=HG_REPO,
345 org_ref_type="rev",
346 org_ref=rev1,
347 other_ref_type="rev",
348 other_ref=rev2,
349 other_repo=HG_FORK,
350 ))
351 response.mustcontain('%s@%s -&gt; %s@%s' % (HG_REPO, rev1, HG_FORK, rev2))
352 ## outgoing changesets between those revisions
336 response = self.app.get(url(controller='compare', action='index',
337 repo_name=HG_REPO,
338 org_ref_type="rev",
339 org_ref=rev1,
340 other_ref_type="rev",
341 other_ref=rev2,
342 other_repo=HG_FORK,
343 ))
344 response.mustcontain('%s@%s -&gt; %s@%s' % (HG_REPO, rev1, HG_FORK, rev2))
345 ## outgoing changesets between those revisions
353 346
354 response.mustcontain("""<a href="/%s/changeset/2dda4e345facb0ccff1a191052dd1606dba6781d">r4:2dda4e345fac</a>""" % (HG_REPO))
355 response.mustcontain("""<a href="/%s/changeset/6fff84722075f1607a30f436523403845f84cd9e">r5:6fff84722075</a>""" % (HG_REPO))
356 response.mustcontain("""<a href="/%s/changeset/7d4bc8ec6be56c0f10425afb40b6fc315a4c25e7">r6:%s</a>""" % (HG_REPO, rev2))
347 response.mustcontain("""<a href="/%s/changeset/2dda4e345facb0ccff1a191052dd1606dba6781d">r4:2dda4e345fac</a>""" % (HG_FORK))
348 response.mustcontain("""<a href="/%s/changeset/6fff84722075f1607a30f436523403845f84cd9e">r5:6fff84722075</a>""" % (HG_FORK))
349 response.mustcontain("""<a href="/%s/changeset/7d4bc8ec6be56c0f10425afb40b6fc315a4c25e7">r6:%s</a>""" % (HG_FORK, rev2))
357 350
358 ## files
359 response.mustcontain("""<a href="/%s/compare/rev@%s...rev@%s#C--9c390eb52cd6">vcs/backends/hg.py</a>""" % (HG_REPO, rev1, rev2))
360 response.mustcontain("""<a href="/%s/compare/rev@%s...rev@%s#C--41b41c1f2796">vcs/backends/__init__.py</a>""" % (HG_REPO, rev1, rev2))
361 response.mustcontain("""<a href="/%s/compare/rev@%s...rev@%s#C--2f574d260608">vcs/backends/base.py</a>""" % (HG_REPO, rev1, rev2))
362 finally:
363 RepoModel().delete(HG_FORK)
351 ## files
352 response.mustcontain("""<a href="/%s/compare/rev@%s...rev@%s?other_repo=%s#C--9c390eb52cd6">vcs/backends/hg.py</a>""" % (HG_REPO, rev1, rev2, HG_FORK))
353 response.mustcontain("""<a href="/%s/compare/rev@%s...rev@%s?other_repo=%s#C--41b41c1f2796">vcs/backends/__init__.py</a>""" % (HG_REPO, rev1, rev2, HG_FORK))
354 response.mustcontain("""<a href="/%s/compare/rev@%s...rev@%s?other_repo=%s#C--2f574d260608">vcs/backends/base.py</a>""" % (HG_REPO, rev1, rev2, HG_FORK))
364 355
365 356 def test_org_repo_new_commits_after_forking_simple_diff(self):
366 357 self.log_user()
367 358
368 359 repo1 = RepoModel().create_repo(repo_name='one', repo_type='hg',
369 360 description='diff-test',
370 361 owner=TEST_USER_ADMIN_LOGIN)
371 362
372 363 Session().commit()
373 r1_id = repo1.repo_id
364 self.r1_id = repo1.repo_id
374 365 r1_name = repo1.repo_name
375 366
376 367 #commit something initially !
377 368 cs0 = ScmModel().create_node(
378 369 repo=repo1.scm_instance, repo_name=r1_name,
379 370 cs=EmptyChangeset(alias='hg'), user=TEST_USER_ADMIN_LOGIN,
380 371 author=TEST_USER_ADMIN_LOGIN,
381 372 message='commit1',
382 373 content='line1',
383 374 f_path='file1'
384 375 )
385 376 Session().commit()
386 377 self.assertEqual(repo1.scm_instance.revisions, [cs0.raw_id])
387 378 #fork the repo1
388 379 repo2 = RepoModel().create_repo(repo_name='one-fork', repo_type='hg',
389 380 description='compare-test',
390 381 clone_uri=repo1.repo_full_path,
391 382 owner=TEST_USER_ADMIN_LOGIN, fork_of='one')
392 383 Session().commit()
393 384 self.assertEqual(repo2.scm_instance.revisions, [cs0.raw_id])
394 r2_id = repo2.repo_id
385 self.r2_id = repo2.repo_id
395 386 r2_name = repo2.repo_name
396 387
397 388 #make 3 new commits in fork
398 389 cs1 = ScmModel().create_node(
399 390 repo=repo2.scm_instance, repo_name=r2_name,
400 391 cs=repo2.scm_instance[-1], user=TEST_USER_ADMIN_LOGIN,
401 392 author=TEST_USER_ADMIN_LOGIN,
402 393 message='commit1-fork',
403 394 content='file1-line1-from-fork',
404 395 f_path='file1-fork'
405 396 )
406 397 cs2 = ScmModel().create_node(
407 398 repo=repo2.scm_instance, repo_name=r2_name,
408 399 cs=cs1, user=TEST_USER_ADMIN_LOGIN,
409 400 author=TEST_USER_ADMIN_LOGIN,
410 401 message='commit2-fork',
411 402 content='file2-line1-from-fork',
412 403 f_path='file2-fork'
413 404 )
414 405 cs3 = ScmModel().create_node(
415 406 repo=repo2.scm_instance, repo_name=r2_name,
416 407 cs=cs2, user=TEST_USER_ADMIN_LOGIN,
417 408 author=TEST_USER_ADMIN_LOGIN,
418 409 message='commit3-fork',
419 410 content='file3-line1-from-fork',
420 411 f_path='file3-fork'
421 412 )
422 413
423 414 #compare !
424 415 rev1 = 'default'
425 416 rev2 = 'default'
426 417
427 try:
428 response = self.app.get(url(controller='compare', action='index',
429 repo_name=r2_name,
430 org_ref_type="branch",
431 org_ref=rev1,
432 other_ref_type="branch",
433 other_ref=rev2,
434 repo=r1_name,
435 ))
436 #response.mustcontain('%s@%s -&gt; %s@%s' % (r2_name, rev1, r1_name, rev2))
418 response = self.app.get(url(controller='compare', action='index',
419 repo_name=r2_name,
420 org_ref_type="branch",
421 org_ref=rev1,
422 other_ref_type="branch",
423 other_ref=rev2,
424 other_repo=r1_name,
425 ))
426 response.mustcontain('%s@%s -&gt; %s@%s' % (r2_name, rev1, r1_name, rev2))
427 response.mustcontain('No files')
428 response.mustcontain('No changesets')
437 429
438 #add new commit into parent !
439 cs0 = ScmModel().create_node(
440 repo=repo1.scm_instance, repo_name=r1_name,
441 cs=EmptyChangeset(alias='hg'), user=TEST_USER_ADMIN_LOGIN,
442 author=TEST_USER_ADMIN_LOGIN,
443 message='commit2',
444 content='line1',
445 f_path='file2'
446 )
447 #compare !
448 rev1 = 'default'
449 rev2 = 'default'
450 response = self.app.get(url(controller='compare', action='index',
451 repo_name=r2_name,
452 org_ref_type="branch",
453 org_ref=rev1,
454 other_ref_type="branch",
455 other_ref=rev2,
456 repo=r1_name,
457 bundle=False
458 ))
430 #add new commit into parent !
431 cs0 = ScmModel().create_node(
432 repo=repo1.scm_instance, repo_name=r1_name,
433 cs=EmptyChangeset(alias='hg'), user=TEST_USER_ADMIN_LOGIN,
434 author=TEST_USER_ADMIN_LOGIN,
435 message='commit2-parent',
436 content='line1-added-after-fork',
437 f_path='file2'
438 )
439 #compare !
440 rev1 = 'default'
441 rev2 = 'default'
442 response = self.app.get(url(controller='compare', action='index',
443 repo_name=r2_name,
444 org_ref_type="branch",
445 org_ref=rev1,
446 other_ref_type="branch",
447 other_ref=rev2,
448 other_repo=r1_name,
449 ))
459 450
460 response.mustcontain('%s@%s -&gt; %s@%s' % (r2_name, rev1, r1_name, rev2))
461 response.mustcontain("""file1-line1-from-fork""")
462 response.mustcontain("""file2-line1-from-fork""")
463 response.mustcontain("""file3-line1-from-fork""")
464 self.assertFalse("""<a href="#">file2</a>""" in response.body) # new commit from parent
465 self.assertFalse("""line1-from-new-parent""" in response.body)
466 finally:
467 RepoModel().delete(r2_id)
468 RepoModel().delete(r1_id)
469 Session()
451 response.mustcontain('%s@%s -&gt; %s@%s' % (r2_name, rev1, r1_name, rev2))
452
453 response.mustcontain("""commit2-parent""")
454 response.mustcontain("""1 file changed with 1 insertions and 0 deletions""")
455 response.mustcontain("""line1-added-after-fork""")
General Comments 0
You need to be logged in to leave comments. Login now