Mercurial > hg
view tests/test-walkrepo.py @ 49320:3d3d7fc6035a stable
commit: allow to close branch when committing change over a closed head
Otherwise, an explicit other commit become necessary, which seems both silly and
verbose.
This is useful when merging closed heads on the same branches, for example when
merging multiple repositories together.
author | Pierre-Yves David <pierre-yves.david@octobus.net> |
---|---|
date | Tue, 14 Jun 2022 04:04:08 +0200 |
parents | 2372284d9457 |
children | 6000f5b25c9b |
line wrap: on
line source
from __future__ import absolute_import, print_function import os from mercurial import ( hg, scmutil, ui as uimod, util, ) chdir = os.chdir mkdir = os.mkdir pjoin = os.path.join walkrepos = scmutil.walkrepos checklink = util.checklink u = uimod.ui.load() sym = checklink(b'.') hg.repository(u, b'top1', create=1) mkdir(b'subdir') chdir(b'subdir') hg.repository(u, b'sub1', create=1) mkdir(b'subsubdir') chdir(b'subsubdir') hg.repository(u, b'subsub1', create=1) chdir(os.path.pardir) if sym: os.symlink(os.path.pardir, b'circle') os.symlink(pjoin(b'subsubdir', b'subsub1'), b'subsub1') def runtest(): reposet = frozenset(walkrepos(b'.', followsym=True)) if sym and (len(reposet) != 3): print("reposet = %r" % (reposet,)) print( ( "Found %d repositories when I should have found 3" % (len(reposet),) ) ) if (not sym) and (len(reposet) != 2): print("reposet = %r" % (reposet,)) print( ( "Found %d repositories when I should have found 2" % (len(reposet),) ) ) sub1set = frozenset( (pjoin(b'.', b'sub1'), pjoin(b'.', b'circle', b'subdir', b'sub1')) ) if len(sub1set & reposet) != 1: print("sub1set = %r" % (sub1set,)) print("reposet = %r" % (reposet,)) print("sub1set and reposet should have exactly one path in common.") sub2set = frozenset( (pjoin(b'.', b'subsub1'), pjoin(b'.', b'subsubdir', b'subsub1')) ) if len(sub2set & reposet) != 1: print("sub2set = %r" % (sub2set,)) print("reposet = %r" % (reposet,)) print("sub2set and reposet should have exactly one path in common.") sub3 = pjoin(b'.', b'circle', b'top1') if sym and sub3 not in reposet: print("reposet = %r" % (reposet,)) print("Symbolic links are supported and %s is not in reposet" % (sub3,)) runtest() if sym: # Simulate not having symlinks. del os.path.samestat sym = False runtest()