view tests/test-walkrepo.py @ 43617:697c2e32c490

packaging: ship all help .txt files on WiX These are technically not needed. But it is easier to ship all files than to cherry-pick. A `make install` will copy these files, so the new behavior is consistent with that. This also makes WiX consistent with Inno, which is my main reason for doing this. If we don't want to ship the files (which is a valid argument), I think we can do that in a follow up. Differential Revision: https://phab.mercurial-scm.org/D7166
author Gregory Szorc <gregory.szorc@gmail.com>
date Mon, 11 Nov 2019 18:51:55 -0800
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()