tests/test-config-env.py
author FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
Mon, 08 Oct 2018 12:03:04 +0900
changeset 40206 37295cee1a15
parent 37119 d4a2e0d5d042
child 43076 2372284d9457
permissions -rw-r--r--
tests: use NO_CHECK_EOF for fragments used to test importing via extension test-extension.t is excluded in test-check-module-imports.t, because import-checker.py reports that some python code fragments in it does not import modules in recommended style. These code fragments are used to test importing modules relatively and absolutely via extension (e.g. issue4029, issue5208, and so on). Test specific package hierarchy becomes complicated for this purpose, and it seems reasonable to avoid checking these code fragments with import-checker.py. But on the other hand, other code fragments in test-extension.t should be checked by import-checker.py. Therefore, this patch uses NO_CHECK_EOF limit mark only for python code fragments, which are used to test importing via extension in test-extension.t. NO_CHECK_EOF limit mark tells import-checker.py that this code fragment should be ignored, via testparseutil.py.

# Test the config layer generated by environment variables

from __future__ import absolute_import, print_function

import os

from mercurial import (
    encoding,
    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')]

rcutil.systemrcpath = systemrcpath
rcutil.userrcpath = userrcpath
os.path.isdir = lambda x: False # hack: do not load default.d/*.rc

# 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'})