Ticket #13092: t13092.diff
| File t13092.diff, 14.9 KB (added by , 5 years ago) |
|---|
-
tracext/hg/tests/backend.py
changeset: 72:545a1383b382 branch: 1.0 user: Jun Omae <jun66j5@gmail.com> date: Wed Oct 17 22:59:36 2018 +0900 summary: Refactor unit tests diff -r 1b6c6b50f742 -r 545a1383b382 tracext/hg/tests/backend.py
a b 100 100 path = self.repos_path 101 101 self._dbrepoprov.add_repository(reponame, path, 'hg') 102 102 103 def _get_repository(self, reponame='hgrepos'): 104 return self._repomgr.get_repository(reponame) 105 103 106 _hg_commit = wrap_int_times(mercurial.commands.commit) 104 107 _hg_update = wrap_int_times(mercurial.commands.update) 105 108 _hg_merge = wrap_int_times(mercurial.commands.merge) … … 135 138 def test_duplicate_repo(self): 136 139 self._hg_init() 137 140 self._add_repository('hgrepos.1') 138 self.assertIsNotNone(self._ repomgr.get_repository('hgrepos.1'))141 self.assertIsNotNone(self._get_repository('hgrepos.1')) 139 142 self._add_repository('hgrepos.2') 140 self.assertIsNotNone(self._ repomgr.get_repository('hgrepos.2'))143 self.assertIsNotNone(self._get_repository('hgrepos.2')) 141 144 142 145 143 146 class HistoryTimeRangeTestCase(BaseTestCase): … … 152 155 self._hg_commit(filename, message='%d' % idx, addremove=True, 153 156 user='Joe', date=dateformat(ts)) 154 157 self._add_repository() 155 repos = self._ repomgr.get_repository('hgrepos')158 repos = self._get_repository() 156 159 repos.repo.invalidate() 157 160 158 161 revs = [repos.youngest_rev] … … 177 180 def test_get_node(self): 178 181 self._hg_init() 179 182 self._add_repository() 180 repos = self._ repomgr.get_repository('hgrepos')183 repos = self._get_repository() 181 184 rev = repos.youngest_rev 182 185 self.assertIsNotNone(rev) 183 186 self.assertEqual(40, len(rev)) … … 205 208 def test_on_empty_repos(self): 206 209 self._hg_init(data=False) 207 210 self._add_repository() 208 repos = self._ repomgr.get_repository('hgrepos')211 repos = self._get_repository() 209 212 repos.repo.invalidate() 210 213 youngest_rev = repos.youngest_rev 211 214 nullrev = '0'*40 … … 262 265 263 266 def test_repository_instance(self): 264 267 self._hg_init() 265 self._add_repository('hgrepos') 266 self.assertEqual(MercurialRepository, 267 type(self._repomgr.get_repository('hgrepos'))) 268 self._add_repository() 269 self.assertEqual(MercurialRepository, type(self._get_repository())) 268 270 269 271 def test_tags(self): 270 272 self._hg_init() 271 self._add_repository( 'hgrepos')272 repos = self._ repomgr.get_repository('hgrepos')273 self._add_repository() 274 repos = self._get_repository() 273 275 repos.repo.invalidate() 274 276 self.assertEqual(['default (tip)', 'tip'], self._get_quickjump_names(repos)) 275 277 self._hg_tag('v1.0') # add tag … … 281 283 282 284 def test_branchs(self): 283 285 self._hg_init() 284 self._add_repository( 'hgrepos')285 repos = self._ repomgr.get_repository('hgrepos')286 self._add_repository() 287 repos = self._get_repository() 286 288 repos.repo.invalidate() 287 289 self.assertEqual(['default (tip)', 'tip'], self._get_quickjump_names(repos)) 288 290 self._hg_branch('alpha') # add branch … … 292 294 293 295 def test_bookmarks(self): 294 296 self._hg_init() 295 self._add_repository( 'hgrepos')296 repos = self._ repomgr.get_repository('hgrepos')297 self._add_repository() 298 repos = self._get_repository() 297 299 repos.repo.invalidate() 298 300 self.assertEqual(['default (tip)', 'tip'], self._get_quickjump_names(repos)) 299 301 self._hg_bookmark('alpha') # add bookmark … … 313 315 self._create_commit('Summary', 'alpha.txt') 314 316 self._hg_tag('0.1.0dev') 315 317 self._hg_tag('0.1.0a', rev='3') 316 self._add_repository( 'hgrepos')317 repos = self._ repomgr.get_repository('hgrepos')318 self._add_repository() 319 repos = self._get_repository() 318 320 repos.repo.invalidate() 319 321 320 322 def get_branches(repos, rev): … … 344 346 self._hg_merge(rev='beta') 345 347 self._hg_commit(message='Merge branch "beta" to "alpha"') 346 348 347 self._add_repository( 'hgrepos')348 repos = self._ repomgr.get_repository('hgrepos')349 self._add_repository() 350 repos = self._get_repository() 349 351 repos.repo.invalidate() 350 352 351 353 rev = repos.normalize_rev('0') … … 388 390 def test_all_bookmarks(self): 389 391 # regression test for #12177 390 392 self._hg_init() 391 self._add_repository( 'hgrepos')392 repos = self._ repomgr.get_repository('hgrepos')393 self._add_repository() 394 repos = self._get_repository() 393 395 self._create_commit('alpha', 'alpha.txt') 394 396 self._hg_bookmark('alpha', inactive=True) 395 397 self._create_commit('beta', 'beta.txt') … … 401 403 # regression test for #13047 402 404 self._hg_init() 403 405 self._add_repository() 404 repos = self._ repomgr.get_repository('hgrepos')406 repos = self._get_repository() 405 407 self._create_commit('alpha', 'alpha.txt', content='foo\n' * 10) 406 408 repos.repo.invalidate() 407 409 self.assertEqual([1, 1, 1, 1, 1, 1, 1, 1, 1, 1], … … 421 423 # regression test for #12454 422 424 self._hg_init() 423 425 self._add_repository() 424 repos = self._ repomgr.get_repository('hgrepos')426 repos = self._get_repository() 425 427 cset = repos.get_changeset(0) 426 428 mercurial.commands.log(self.hgui, self.hgrepo, template='{date|rfc3339date}', rev=0) 427 429 self.assertEqual(self.hgui.fout.getvalue(), cset.date.isoformat()) … … 430 432 # regression test for #10515 431 433 self._hg_init(data=False) 432 434 self._add_repository() 433 repos = self._ repomgr.get_repository('hgrepos')435 repos = self._get_repository() 434 436 self._create_commit('lunch', 'lunch/menu.txt') 435 437 self._create_commit('pasta', 'lunch/lasagna/pasta.txt') 436 438 self._hg_update('0') … … 448 450 # regression test for #13077 449 451 self._hg_init(data=False) 450 452 self._add_repository() 451 repos = self._ repomgr.get_repository('hgrepos')453 repos = self._get_repository() 452 454 self._create_commit('lunch', 'lunch/menu.txt') 453 455 self._create_commit('pasta', 'lunch/lasagna/pasta.txt') 454 456 self._create_commit('coke', 'lunch/lasagna/drink.txt', content='coke') -
tracext/hg/backend.py
changeset: 73:7746c5a35216 branch: 1.0 bookmark: t13092 tag: tip user: Jun Omae <jun66j5@gmail.com> date: Thu Oct 18 21:48:59 2018 +0900 summary: `MercurialNode.get_history()` and `MercurialNode.get_previous()` return ancestors of the given revision (closes #13092) diff -r 545a1383b382 -r 7746c5a35216 tracext/hg/backend.py
a b 1164 1164 pats = [] 1165 1165 if self.str_path: 1166 1166 pats.append('path:' + self.str_path) 1167 opts = {'rev': [' %s:0' % self.changectx.hex()]}1167 opts = {'rev': ['reverse(0::%s)' % self.changectx.hex()]} 1168 1168 if self.isfile and self.repos.version_info < (2, 1, 1): 1169 1169 opts['follow'] = True 1170 1170 if arity(cmdutil.walkchangerevs) == 4: -
tracext/hg/tests/backend.py
diff -r 545a1383b382 -r 7746c5a35216 tracext/hg/tests/backend.py
a b 41 41 import mercurial.util 42 42 43 43 44 nullrev = '0' * 40 45 46 44 47 def dateformat(t): 45 48 t = to_datetime(t) # to local timezone 46 49 return t.strftime('%Y-%m-%d %H:%M:%S') # common legal variant … … 211 214 repos = self._get_repository() 212 215 repos.repo.invalidate() 213 216 youngest_rev = repos.youngest_rev 214 nullrev = '0'*40215 217 self.assertEqual(nullrev, repos.normalize_rev(youngest_rev)) 216 218 self.assertEqual(nullrev, repos.normalize_rev(repos.oldest_rev)) 217 219 self.assertEqual(nullrev, repos.normalize_rev(repos.normalize_rev(''))) … … 223 225 224 226 node = repos.get_node('/', youngest_rev) 225 227 self.assertEqual([], list(node.get_entries())) 226 self.assertEqual([ (u'/', nullrev, 'add')], list(node.get_history()))228 self.assertEqual([], list(node.get_history())) 227 229 self.assertRaises(NoSuchNode, repos.get_node, '/path', youngest_rev) 228 230 229 231 req = MockRequest(self.env, path_info='/browser/hgrepos') … … 238 240 self.assertTrue(log_mod.match_request(req)) 239 241 rv = log_mod.process_request(req) 240 242 self.assertEqual('revisionlog.html', rv[0]) 241 self.assertEqual([{'change': 'add', 'depth': 1, 'existing_rev': nullrev, 242 'path': '/', 'rev': nullrev}], rv[1]['items']) 243 self.assertEqual([], rv[1]['items']) 244 245 def test_history_on_single_branch(self): 246 self._hg_init(data=False) 247 self._add_repository() 248 repos = self._get_repository() 249 self._create_commit('comment', 'file.txt', content='Line 0\n') 250 self._create_commit('comment', 'anohter.txt', content='Anohter\n') 251 self._create_commit('comment', 'file.txt', content='Line 2\n') 252 self._create_commit('comment', 'file.txt', content='Line 3\n') 253 repos.repo.invalidate() 254 revs = [repos.normalize_rev(idx) for idx in xrange(4)] 255 for idx in xrange(len(revs) - 1): 256 self.assertEqual([revs[idx]], repos.parent_revs(revs[idx + 1])) 257 self.assertEqual([nullrev], repos.parent_revs(revs[0])) 258 259 self.assertEqual([('/', revs[3], 'edit'), ('/', revs[2], 'edit'), 260 ('/', revs[1], 'edit'), ('/', revs[0], 'add')], 261 list(repos.get_node('/').get_history())) 262 263 self.assertEqual([('file.txt', revs[3], 'edit'), 264 ('file.txt', revs[2], 'edit'), 265 ('file.txt', revs[0], 'add')], 266 list(repos.get_node('file.txt').get_history())) 267 268 self.assertEqual(('/', revs[2], 'edit'), 269 repos.get_node('/', revs[3]).get_previous()) 270 self.assertEqual(('/', revs[1], 'edit'), 271 repos.get_node('/', revs[2]).get_previous()) 272 self.assertEqual(('/', revs[0], 'add'), 273 repos.get_node('/', revs[1]).get_previous()) 274 self.assertEqual(None, repos.get_node('/', revs[0]).get_previous()) 275 276 self.assertEqual(('file.txt', revs[2], 'edit'), 277 repos.get_node('file.txt', revs[3]).get_previous()) 278 self.assertEqual(('file.txt', revs[0], 'add'), 279 repos.get_node('file.txt', revs[2]).get_previous()) 280 281 def test_history_on_multi_branches(self): 282 self._hg_init(data=False) 283 self._add_repository() 284 repos = self._get_repository() 285 n_revs = 6 286 self._create_commit('root', '.hgignore', content='') 287 for idx in xrange(n_revs): 288 if idx % 2 == 0: 289 branch = 'alpha' 290 comment = 'Alpha' 291 content = 'Alpha %d' % idx 292 else: 293 branch = 'beta' 294 comment = 'Beta' 295 content = 'Beta %d' % idx 296 if idx in (0, 1): 297 self._hg_update('0') 298 self._hg_branch(branch) 299 else: 300 self._hg_update(branch) 301 self._create_commit(comment, 'file.txt', content=content) 302 repos.repo.invalidate() 303 revs = [repos.normalize_rev(idx) for idx in xrange(n_revs + 1)] 304 alpha_revs = [revs[idx] for idx in (0, 2, 4, 6)] 305 beta_revs = [revs[idx] for idx in (0, 1, 3, 5)] 306 307 # branch alpha 308 self.assertEqual([alpha_revs[2]], repos.parent_revs(alpha_revs[3])) 309 self.assertEqual([alpha_revs[1]], repos.parent_revs(alpha_revs[2])) 310 self.assertEqual([alpha_revs[0]], repos.parent_revs(alpha_revs[1])) 311 self.assertEqual([('/', alpha_revs[3], 'edit'), 312 ('/', alpha_revs[2], 'edit'), 313 ('/', alpha_revs[1], 'edit'), 314 ('/', alpha_revs[0], 'add')], 315 list(repos.get_node('/', alpha_revs[-1]) 316 .get_history())) 317 self.assertEqual(('/', alpha_revs[1], 'edit'), 318 repos.get_node('/', alpha_revs[2]).get_previous()) 319 # branch beta 320 self.assertEqual([beta_revs[2]], repos.parent_revs(beta_revs[3])) 321 self.assertEqual([beta_revs[1]], repos.parent_revs(beta_revs[2])) 322 self.assertEqual([beta_revs[0]], repos.parent_revs(beta_revs[1])) 323 self.assertEqual([('/', beta_revs[3], 'edit'), 324 ('/', beta_revs[2], 'edit'), 325 ('/', beta_revs[1], 'edit'), 326 ('/', beta_revs[0], 'add')], 327 list(repos.get_node('/', beta_revs[-1]) 328 .get_history())) 329 self.assertEqual(('/', beta_revs[1], 'edit'), 330 repos.get_node('/', beta_revs[2]).get_previous()) 331 # root commit 332 self.assertEqual([nullrev], repos.parent_revs(revs[0])) 333 334 # file.txt on branch alpha 335 actual = list(repos.get_node('file.txt', alpha_revs[-1]).get_history()) 336 self.assertEqual([('file.txt', alpha_revs[3], 'edit'), 337 ('file.txt', alpha_revs[2], 'edit'), 338 ('file.txt', alpha_revs[1], 'add')], actual) 339 self.assertEqual( 340 ('file.txt', alpha_revs[1], 'add'), 341 repos.get_node('file.txt', alpha_revs[2]).get_previous()) 342 343 # file.txt on branch beta 344 actual = list(repos.get_node('file.txt', beta_revs[-1]).get_history()) 345 self.assertEqual([('file.txt', beta_revs[3], 'edit'), 346 ('file.txt', beta_revs[2], 'edit'), 347 ('file.txt', beta_revs[1], 'add')], actual) 348 self.assertEqual( 349 ('file.txt', beta_revs[1], 'add'), 350 repos.get_node('file.txt', beta_revs[2]).get_previous()) 243 351 244 352 245 353 class MercurialRepositoryTestCase(BaseTestCase): … … 352 460 353 461 rev = repos.normalize_rev('0') 354 462 parents = repos.parent_revs(rev) 355 self.assertEqual([ '0'*40], parents, 'parent_revs: %r' % parents)463 self.assertEqual([nullrev], parents, 'parent_revs: %r' % parents) 356 464 self.assertEqual([('.hgignore', Node.FILE, Changeset.ADD, '', 357 465 None)], 358 466 sorted(repos.get_changeset(rev).get_changes()))
