contrib/casesmash.py
author Pierre-Yves David <pierre-yves.david@octobus.net>
Wed, 28 Feb 2024 22:28:07 +0100
changeset 51539 f9a6bae0c937
parent 48966 6000f5b25c9b
permissions -rw-r--r--
stream-clone-test: simplify testing of secret cloning restriction Here, we just want to check if the streaming clone is allowed and used or not. We do not care about the details of the clone itself.

import __builtin__
import os
from mercurial import util


def lowerwrap(scope, funcname):
    f = getattr(scope, funcname)

    def wrap(fname, *args, **kwargs):
        d, base = os.path.split(fname)
        try:
            files = os.listdir(d or '.')
        except OSError:
            files = []
        if base in files:
            return f(fname, *args, **kwargs)
        for fn in files:
            if fn.lower() == base.lower():
                return f(os.path.join(d, fn), *args, **kwargs)
        return f(fname, *args, **kwargs)

    scope.__dict__[funcname] = wrap


def normcase(path):
    return path.lower()


os.path.normcase = normcase

for f in 'file open'.split():
    lowerwrap(__builtin__, f)

for f in "chmod chown open lstat stat remove unlink".split():
    lowerwrap(os, f)

for f in "exists lexists".split():
    lowerwrap(os.path, f)

lowerwrap(util, 'posixfile')