tests/test-walkrepo.py
author Matt Harbison <matt_harbison@yahoo.com>
Sun, 15 Dec 2019 21:34:00 -0500
changeset 43926 4222b9d5d4fb
parent 43076 2372284d9457
child 48966 6000f5b25c9b
permissions -rw-r--r--
util: move common proxyobserver attributes to the base class Fixes the following pytype warnings: line 791, in _writedata: No attribute 'logdata' on baseproxyobserver [attribute-error] line 792, in _writedata: No attribute 'logdataapis' on baseproxyobserver [attribute-error] line 793, in _writedata: No attribute 'fh' on baseproxyobserver [attribute-error] line 794, in _writedata: No attribute 'fh' on baseproxyobserver [attribute-error] line 799, in _writedata: No attribute 'logdataapis' on baseproxyobserver [attribute-error] line 800, in _writedata: No attribute 'fh' on baseproxyobserver [attribute-error] line 802, in _writedata: No attribute 'fh' on baseproxyobserver [attribute-error] line 803, in _writedata: No attribute 'name' on baseproxyobserver [attribute-error] line 805, in _writedata: No attribute 'fh' on baseproxyobserver [attribute-error] line 809, in _writedata: No attribute 'logdataapis' on baseproxyobserver [attribute-error] line 810, in _writedata: No attribute 'fh' on baseproxyobserver [attribute-error] line 814, in _writedata: No attribute 'fh' on baseproxyobserver [attribute-error] line 815, in _writedata: No attribute 'name' on baseproxyobserver [attribute-error] line 817, in _writedata: No attribute 'fh' on baseproxyobserver [attribute-error] Differential Revision: https://phab.mercurial-scm.org/D7675

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()