contrib/casesmash.py
author Pierre-Yves David <pierre-yves.david@fb.com>
Wed, 25 Jun 2014 17:31:53 +0100
changeset 22131 8768342af0cd
parent 19378 9de689d20230
child 28351 42a7301fb4d5
permissions -rw-r--r--
test-revert: add methodical revert to "base" with explicit file path We now also test reverting file to another revision's content. However this differs from previously introduced test by using the explicit path of each "case file" when calling revert. This should result in the same result regarding file content and backup creation, but the output of the `hg revert` call should differ.

import os, __builtin__
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')