view tests/test-config-env.py @ 46159:929054848d6c

copies: properly match result during changeset centric copy tracing By filtering "during" the iteration we were excluding rename information that were not in the matched set but that file served as base information for the matched set. We now do all copy tracing matching at the end of the process to ensure we raise proper result. If we were aggregating information top down instead of bottom up we could do filtering during processing. However, we don't. Differential Revision: https://phab.mercurial-scm.org/D9585
author Pierre-Yves David <pierre-yves.david@octobus.net>
date Sun, 13 Dec 2020 20:16:34 +0100
parents 2d4cad94d08a
children 6000f5b25c9b
line wrap: on
line source

# Test the config layer generated by environment variables

from __future__ import absolute_import, print_function

import os

from mercurial import (
    encoding,
    extensions,
    rcutil,
    ui as uimod,
    util,
)

from mercurial.utils import procutil

testtmp = encoding.environ[b'TESTTMP']

# prepare hgrc files
def join(name):
    return os.path.join(testtmp, name)


with open(join(b'sysrc'), 'wb') as f:
    f.write(b'[ui]\neditor=e0\n[pager]\npager=p0\n')

with open(join(b'userrc'), 'wb') as f:
    f.write(b'[ui]\neditor=e1')

# replace rcpath functions so they point to the files above
def systemrcpath():
    return [join(b'sysrc')]


def userrcpath():
    return [join(b'userrc')]


extensions.wrapfunction(rcutil, 'default_rc_resources', lambda orig: [])

rcutil.systemrcpath = systemrcpath
rcutil.userrcpath = userrcpath

# utility to print configs
def printconfigs(env):
    encoding.environ = env
    rcutil._rccomponents = None  # reset cache
    ui = uimod.ui.load()
    for section, name, value in ui.walkconfig():
        source = ui.configsource(section, name)
        procutil.stdout.write(
            b'%s.%s=%s # %s\n' % (section, name, value, util.pconvert(source))
        )
    procutil.stdout.write(b'\n')


# environment variable overrides
printconfigs({})
printconfigs({b'EDITOR': b'e2', b'PAGER': b'p2'})