tests/test-demandimport.py
author Jun Wu <quark@fb.com>
Sat, 07 May 2016 14:12:23 +0100
changeset 29132 12769703d4ba
parent 28948 16390f4cccf0
child 29868 4b50e1f922a0
permissions -rw-r--r--
dispatch: always load extensions before running shell aliases (issue5230) Before this patch, we may or may not load extensions for shell aliases depending on whether the command is abbreviated or not. Loading extensions may have useful side effects to shell aliases. For example, the pager extension does not work for shell aliases. This patch removes the code checking shell aliases before loading extensions to give the user a more consistent experience. It may hurt performance for shell aliases a bit without chg but the correctness seems worth it. It will also make the behavior consistent with chg since chg will always load all extensions before running commands.

from __future__ import print_function

from mercurial import demandimport
demandimport.enable()

import os
if os.name != 'nt':
    try:
        import distutils.msvc9compiler
        print('distutils.msvc9compiler needs to be an immediate '
              'importerror on non-windows platforms')
        distutils.msvc9compiler
    except ImportError:
        pass

import re

rsub = re.sub
def f(obj):
    l = repr(obj)
    l = rsub("0x[0-9a-fA-F]+", "0x?", l)
    l = rsub("from '.*'", "from '?'", l)
    l = rsub("'<[a-z]*>'", "'<whatever>'", l)
    return l

import os

print("os =", f(os))
print("os.system =", f(os.system))
print("os =", f(os))

from mercurial import util

print("util =", f(util))
print("util.system =", f(util.system))
print("util =", f(util))
print("util.system =", f(util.system))

from mercurial import hgweb
print("hgweb =", f(hgweb))
print("hgweb_mod =", f(hgweb.hgweb_mod))
print("hgweb =", f(hgweb))

import re as fred
print("fred =", f(fred))

import sys as re
print("re =", f(re))

print("fred =", f(fred))
print("fred.sub =", f(fred.sub))
print("fred =", f(fred))

print("re =", f(re))
print("re.stderr =", f(re.stderr))
print("re =", f(re))

demandimport.disable()
os.environ['HGDEMANDIMPORT'] = 'disable'
demandimport.enable()
from mercurial import node
print("node =", f(node))