contrib/casesmash.py
author Pierre-Yves David <pierre-yves.david@octobus.net>
Fri, 19 Feb 2021 18:57:09 +0100
changeset 46600 0ebfd02dafd5
parent 43076 2372284d9457
child 48966 6000f5b25c9b
permissions -rw-r--r--
test-copies: move the new files in the `i` branch The initial branch is moving some of the "same content" file around. We do the same for the "different content" before start to implement more tests. The new files have harmless impact of various existing tests. Differential Revision: https://phab.mercurial-scm.org/D10054

from __future__ import absolute_import
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')