##// END OF EJS Templates
py3: use print_function in test-propertycache.py
py3: use print_function in test-propertycache.py

File last commit:

r28762:61ba04ae default
r28762:61ba04ae default
Show More
test-propertycache.py
181 lines | 6.4 KiB | text/x-python | PythonLexer
/ tests / test-propertycache.py
Pierre-Yves David
repoview: make propertycache.setcache compatible with repoview...
r19845 """test behavior of propertycache and unfiltered propertycache
Mads Kiilerich
spelling: random spell checker fixes
r19951 The repoview overlay is quite complex. We test the behavior of
Pierre-Yves David
repoview: make propertycache.setcache compatible with repoview...
r19845 property cache of both localrepo and repoview to prevent
regression."""
Robert Stanca
py3: use print_function in test-propertycache.py
r28762 from __future__ import absolute_import, print_function
Robert Stanca
py3: use absolute_import in test-propertycache.py
r28755 import os
import subprocess
Pierre-Yves David
repoview: make propertycache.setcache compatible with repoview...
r19845 import mercurial.localrepo
import mercurial.repoview
import mercurial.util
import mercurial.hg
import mercurial.ui as uimod
# create some special property cache that trace they call
calllog = []
@mercurial.util.propertycache
def testcachedfoobar(repo):
name = repo.filtername
if name is None:
name = ''
val = len(name)
calllog.append(val)
return val
Pierre-Yves David
repoview: have unfilteredpropertycache using the underlying cache...
r19846 unficalllog = []
@mercurial.localrepo.unfilteredpropertycache
def testcachedunfifoobar(repo):
name = repo.filtername
if name is None:
name = ''
val = 100 + len(name)
unficalllog.append(val)
return val
Pierre-Yves David
repoview: make propertycache.setcache compatible with repoview...
r19845 #plug them on repo
mercurial.localrepo.localrepository.testcachedfoobar = testcachedfoobar
Pierre-Yves David
repoview: have unfilteredpropertycache using the underlying cache...
r19846 mercurial.localrepo.localrepository.testcachedunfifoobar = testcachedunfifoobar
Pierre-Yves David
repoview: make propertycache.setcache compatible with repoview...
r19845
Mads Kiilerich
spelling: fixes from spell checker
r21024 # Create an empty repo and instantiate it. It is important to run
# these tests on the real object to detect regression.
Pierre-Yves David
repoview: make propertycache.setcache compatible with repoview...
r19845 repopath = os.path.join(os.environ['TESTTMP'], 'repo')
Pierre-Yves David
test: make test-propertycache.py python2.4 compatible...
r19878 assert subprocess.call(['hg', 'init', repopath]) == 0
Pierre-Yves David
repoview: make propertycache.setcache compatible with repoview...
r19845 ui = uimod.ui()
repo = mercurial.hg.repository(ui, path=repopath).unfiltered()
Robert Stanca
py3: use print_function in test-propertycache.py
r28762 print('')
print('=== property cache ===')
print('')
print('calllog:', calllog)
print('cached value (unfiltered):',
vars(repo).get('testcachedfoobar', 'NOCACHE'))
Pierre-Yves David
repoview: make propertycache.setcache compatible with repoview...
r19845
Robert Stanca
py3: use print_function in test-propertycache.py
r28762 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'))
Pierre-Yves David
repoview: make propertycache.setcache compatible with repoview...
r19845
Robert Stanca
py3: use print_function in test-propertycache.py
r28762 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'))
Pierre-Yves David
repoview: make propertycache.setcache compatible with repoview...
r19845
Robert Stanca
py3: use print_function in test-propertycache.py
r28762 print('')
print('= first access on "visible" view, should do a call')
Pierre-Yves David
repoview: make propertycache.setcache compatible with repoview...
r19845 visibleview = repo.filtered('visible')
Robert Stanca
py3: use print_function in test-propertycache.py
r28762 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'))
Pierre-Yves David
repoview: make propertycache.setcache compatible with repoview...
r19845
Robert Stanca
py3: use print_function in test-propertycache.py
r28762 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'))
Pierre-Yves David
repoview: make propertycache.setcache compatible with repoview...
r19845
Robert Stanca
py3: use print_function in test-propertycache.py
r28762 print('')
print('= no effect on other view')
Pierre-Yves David
repoview: make propertycache.setcache compatible with repoview...
r19845 immutableview = repo.filtered('immutable')
Robert Stanca
py3: use print_function in test-propertycache.py
r28762 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'))
Pierre-Yves David
repoview: make propertycache.setcache compatible with repoview...
r19845
Pierre-Yves David
repoview: have unfilteredpropertycache using the underlying cache...
r19846 # unfiltered property cache test
Robert Stanca
py3: use print_function in test-propertycache.py
r28762 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'))
Pierre-Yves David
repoview: have unfilteredpropertycache using the underlying cache...
r19846
Robert Stanca
py3: use print_function in test-propertycache.py
r28762 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'))
Pierre-Yves David
repoview: have unfilteredpropertycache using the underlying cache...
r19846
Robert Stanca
py3: use print_function in test-propertycache.py
r28762 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'))
Pierre-Yves David
repoview: have unfilteredpropertycache using the underlying cache...
r19846
Robert Stanca
py3: use print_function in test-propertycache.py
r28762 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'))
Pierre-Yves David
repoview: have unfilteredpropertycache using the underlying cache...
r19846
Robert Stanca
py3: use print_function in test-propertycache.py
r28762 print('')
print('= even if we clear the unfiltered cache')
Pierre-Yves David
repoview: have unfilteredpropertycache using the underlying cache...
r19846 del repo.__dict__['testcachedunfifoobar']
Robert Stanca
py3: use print_function in test-propertycache.py
r28762 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'))