##// END OF EJS Templates
style: run a patched black on a subset of mercurial...
style: run a patched black on a subset of mercurial This applied black to the 20 smallest files in mercurial/: ls -S1 mercurial/*.py | tail -n20 | xargs black --skip-string-normalization Note that a few files failed to format, presumably due to a bug in my patch. The intent is to be able to compare results to D5064 with https://github.com/python/black/pull/826 applied to black. I skipped string normalization on this patch for clarity - in reality I think we'd want one pass without string normalization, followed by another to normalize strings (which is basically replacing ' with " globally.) # skip-blame mass-reformatting only Differential Revision: https://phab.mercurial-scm.org/D6342

File last commit:

r40383:e5d74742 default
r43345:57875cf4 default
Show More
test-propertycache.py
189 lines | 6.5 KiB | text/x-python | PythonLexer
/ tests / test-propertycache.py
"""test behavior of propertycache and unfiltered propertycache
The repoview overlay is quite complex. We test the behavior of
property cache of both localrepo and repoview to prevent
regression."""
from __future__ import absolute_import, print_function
import os
import subprocess
from mercurial import (
hg,
localrepo,
pycompat,
ui as uimod,
util,
)
from mercurial.utils import (
procutil,
)
# create some special property cache that trace they call
calllog = []
@util.propertycache
def testcachedfoobar(repo):
name = repo.filtername
if name is None:
name = ''
val = len(name)
calllog.append(val)
return val
unficalllog = []
@localrepo.unfilteredpropertycache
def testcachedunfifoobar(repo):
name = repo.filtername
if name is None:
name = ''
val = 100 + len(name)
unficalllog.append(val)
return val
#plug them on repo
localrepo.localrepository.testcachedfoobar = testcachedfoobar
localrepo.localrepository.testcachedunfifoobar = testcachedunfifoobar
# Create an empty repo and instantiate it. It is important to run
# these tests on the real object to detect regression.
repopath = pycompat.fsencode(os.path.join(os.environ['TESTTMP'], 'repo'))
assert subprocess.call(pycompat.rapply(procutil.tonativestr,
[b'hg', b'init', repopath])) == 0
ui = uimod.ui.load()
repo = hg.repository(ui, path=repopath).unfiltered()
print('')
print('=== property cache ===')
print('')
print('calllog:', calllog)
print('cached value (unfiltered):',
vars(repo).get('testcachedfoobar', 'NOCACHE'))
print('')
print('= first access on unfiltered, should do a call')
print('access:', repo.testcachedfoobar)
print('calllog:', calllog)
print('cached value (unfiltered):',
vars(repo).get('testcachedfoobar', 'NOCACHE'))
print('')
print('= second access on unfiltered, should not do call')
print('access', repo.testcachedfoobar)
print('calllog:', calllog)
print('cached value (unfiltered):',
vars(repo).get('testcachedfoobar', 'NOCACHE'))
print('')
print('= first access on "visible" view, should do a call')
visibleview = repo.filtered('visible')
print('cached value ("visible" view):',
vars(visibleview).get('testcachedfoobar', 'NOCACHE'))
print('access:', visibleview.testcachedfoobar)
print('calllog:', calllog)
print('cached value (unfiltered):',
vars(repo).get('testcachedfoobar', 'NOCACHE'))
print('cached value ("visible" view):',
vars(visibleview).get('testcachedfoobar', 'NOCACHE'))
print('')
print('= second access on "visible view", should not do call')
print('access:', visibleview.testcachedfoobar)
print('calllog:', calllog)
print('cached value (unfiltered):',
vars(repo).get('testcachedfoobar', 'NOCACHE'))
print('cached value ("visible" view):',
vars(visibleview).get('testcachedfoobar', 'NOCACHE'))
print('')
print('= no effect on other view')
immutableview = repo.filtered('immutable')
print('cached value ("immutable" view):',
vars(immutableview).get('testcachedfoobar', 'NOCACHE'))
print('access:', immutableview.testcachedfoobar)
print('calllog:', calllog)
print('cached value (unfiltered):',
vars(repo).get('testcachedfoobar', 'NOCACHE'))
print('cached value ("visible" view):',
vars(visibleview).get('testcachedfoobar', 'NOCACHE'))
print('cached value ("immutable" view):',
vars(immutableview).get('testcachedfoobar', 'NOCACHE'))
# unfiltered property cache test
print('')
print('')
print('=== unfiltered property cache ===')
print('')
print('unficalllog:', unficalllog)
print('cached value (unfiltered): ',
vars(repo).get('testcachedunfifoobar', 'NOCACHE'))
print('cached value ("visible" view): ',
vars(visibleview).get('testcachedunfifoobar', 'NOCACHE'))
print('cached value ("immutable" view):',
vars(immutableview).get('testcachedunfifoobar', 'NOCACHE'))
print('')
print('= first access on unfiltered, should do a call')
print('access (unfiltered):', repo.testcachedunfifoobar)
print('unficalllog:', unficalllog)
print('cached value (unfiltered): ',
vars(repo).get('testcachedunfifoobar', 'NOCACHE'))
print('')
print('= second access on unfiltered, should not do call')
print('access (unfiltered):', repo.testcachedunfifoobar)
print('unficalllog:', unficalllog)
print('cached value (unfiltered): ',
vars(repo).get('testcachedunfifoobar', 'NOCACHE'))
print('')
print('= access on view should use the unfiltered cache')
print('access (unfiltered): ', repo.testcachedunfifoobar)
print('access ("visible" view): ', visibleview.testcachedunfifoobar)
print('access ("immutable" view):', immutableview.testcachedunfifoobar)
print('unficalllog:', unficalllog)
print('cached value (unfiltered): ',
vars(repo).get('testcachedunfifoobar', 'NOCACHE'))
print('cached value ("visible" view): ',
vars(visibleview).get('testcachedunfifoobar', 'NOCACHE'))
print('cached value ("immutable" view):',
vars(immutableview).get('testcachedunfifoobar', 'NOCACHE'))
print('')
print('= even if we clear the unfiltered cache')
del repo.__dict__['testcachedunfifoobar']
print('cached value (unfiltered): ',
vars(repo).get('testcachedunfifoobar', 'NOCACHE'))
print('cached value ("visible" view): ',
vars(visibleview).get('testcachedunfifoobar', 'NOCACHE'))
print('cached value ("immutable" view):',
vars(immutableview).get('testcachedunfifoobar', 'NOCACHE'))
print('unficalllog:', unficalllog)
print('access ("visible" view): ', visibleview.testcachedunfifoobar)
print('unficalllog:', unficalllog)
print('cached value (unfiltered): ',
vars(repo).get('testcachedunfifoobar', 'NOCACHE'))
print('cached value ("visible" view): ',
vars(visibleview).get('testcachedunfifoobar', 'NOCACHE'))
print('cached value ("immutable" view):',
vars(immutableview).get('testcachedunfifoobar', 'NOCACHE'))
print('access ("immutable" view):', immutableview.testcachedunfifoobar)
print('unficalllog:', unficalllog)
print('cached value (unfiltered): ',
vars(repo).get('testcachedunfifoobar', 'NOCACHE'))
print('cached value ("visible" view): ',
vars(visibleview).get('testcachedunfifoobar', 'NOCACHE'))
print('cached value ("immutable" view):',
vars(immutableview).get('testcachedunfifoobar', 'NOCACHE'))
print('access (unfiltered): ', repo.testcachedunfifoobar)
print('unficalllog:', unficalllog)
print('cached value (unfiltered): ',
vars(repo).get('testcachedunfifoobar', 'NOCACHE'))
print('cached value ("visible" view): ',
vars(visibleview).get('testcachedunfifoobar', 'NOCACHE'))
print('cached value ("immutable" view):',
vars(immutableview).get('testcachedunfifoobar', 'NOCACHE'))