##// END OF EJS Templates
revset: move groupbranchiter over from graphmod...
revset: move groupbranchiter over from graphmod This move is to prepare the adaptation of this function into a toposort predicate.

File last commit:

r28803:76c091f9 default
r29347:98535ad4 default
Show More
test-filecache.py
193 lines | 4.3 KiB | text/x-python | PythonLexer
/ tests / test-filecache.py
Robert Stanca
py3: use print_function in test-filecache.py
r28742 from __future__ import absolute_import, print_function
Robert Stanca
py3: use absolute_import in test-filecache.py
r28741 import os
import subprocess
import sys
Idan Kamara
scmutil: introduce filecache...
r14928
Brodie Rao
cleanup: eradicate long lines
r16683 if subprocess.call(['python', '%s/hghave' % os.environ['TESTDIR'],
'cacheable']):
Idan Kamara
scmutil: introduce filecache...
r14928 sys.exit(80)
Yuya Nishihara
test-filecache: sort import lines
r28802 from mercurial import (
extensions,
hg,
scmutil,
Yuya Nishihara
test-filecache: alias ui as uimod
r28803 ui as uimod,
Yuya Nishihara
test-filecache: sort import lines
r28802 util,
)
Idan Kamara
scmutil: introduce filecache...
r14928
filecache = scmutil.filecache
class fakerepo(object):
def __init__(self):
self._filecache = {}
def join(self, p):
return p
def sjoin(self, p):
return p
Siddharth Agarwal
scmutil.filecache: support watching over multiple files
r20045 @filecache('x', 'y')
Idan Kamara
scmutil: introduce filecache...
r14928 def cached(self):
Robert Stanca
py3: use print_function in test-filecache.py
r28742 print('creating')
Siddharth Agarwal
test-filecache.py: make setbeforeget test clearer...
r20040 return 'string from function'
Idan Kamara
scmutil: introduce filecache...
r14928
def invalidate(self):
for k in self._filecache:
try:
delattr(self, k)
except AttributeError:
pass
def basic(repo):
Robert Stanca
py3: use print_function in test-filecache.py
r28742 print("* neither file exists")
Siddharth Agarwal
test-filecache.py: add markers to the output for each event...
r20041 # calls function
Idan Kamara
scmutil: introduce filecache...
r14928 repo.cached
repo.invalidate()
Robert Stanca
py3: use print_function in test-filecache.py
r28742 print("* neither file still exists")
Siddharth Agarwal
test-filecache.py: add markers to the output for each event...
r20041 # uses cache
Idan Kamara
scmutil: introduce filecache...
r14928 repo.cached
# create empty file
f = open('x', 'w')
f.close()
repo.invalidate()
Robert Stanca
py3: use print_function in test-filecache.py
r28742 print("* empty file x created")
Idan Kamara
scmutil: introduce filecache...
r14928 # should recreate the object
repo.cached
f = open('x', 'w')
f.write('a')
f.close()
repo.invalidate()
Robert Stanca
py3: use print_function in test-filecache.py
r28742 print("* file x changed size")
Idan Kamara
scmutil: introduce filecache...
r14928 # should recreate the object
repo.cached
repo.invalidate()
Robert Stanca
py3: use print_function in test-filecache.py
r28742 print("* nothing changed with either file")
Siddharth Agarwal
test-filecache.py: add markers to the output for each event...
r20041 # stats file again, reuses object
Idan Kamara
scmutil: introduce filecache...
r14928 repo.cached
# atomic replace file, size doesn't change
# hopefully st_mtime doesn't change as well so this doesn't use the cache
# because of inode change
f = scmutil.opener('.')('x', 'w', atomictemp=True)
f.write('b')
Greg Ward
atomictempfile: make close() consistent with other file-like objects....
r15057 f.close()
Idan Kamara
scmutil: introduce filecache...
r14928
repo.invalidate()
Robert Stanca
py3: use print_function in test-filecache.py
r28742 print("* file x changed inode")
Idan Kamara
scmutil: introduce filecache...
r14928 repo.cached
Siddharth Agarwal
scmutil.filecache: support watching over multiple files
r20045 # create empty file y
f = open('y', 'w')
f.close()
repo.invalidate()
Robert Stanca
py3: use print_function in test-filecache.py
r28742 print("* empty file y created")
Siddharth Agarwal
scmutil.filecache: support watching over multiple files
r20045 # should recreate the object
repo.cached
f = open('y', 'w')
f.write('A')
f.close()
repo.invalidate()
Robert Stanca
py3: use print_function in test-filecache.py
r28742 print("* file y changed size")
Siddharth Agarwal
scmutil.filecache: support watching over multiple files
r20045 # should recreate the object
repo.cached
f = scmutil.opener('.')('y', 'w', atomictemp=True)
f.write('B')
f.close()
repo.invalidate()
Robert Stanca
py3: use print_function in test-filecache.py
r28742 print("* file y changed inode")
Siddharth Agarwal
scmutil.filecache: support watching over multiple files
r20045 repo.cached
f = scmutil.opener('.')('x', 'w', atomictemp=True)
f.write('c')
f.close()
f = scmutil.opener('.')('y', 'w', atomictemp=True)
f.write('C')
f.close()
repo.invalidate()
Robert Stanca
py3: use print_function in test-filecache.py
r28742 print("* both files changed inode")
Siddharth Agarwal
scmutil.filecache: support watching over multiple files
r20045 repo.cached
Idan Kamara
scmutil: introduce filecache...
r14928 def fakeuncacheable():
def wrapcacheable(orig, *args, **kwargs):
return False
def wrapinit(orig, *args, **kwargs):
pass
originit = extensions.wrapfunction(util.cachestat, '__init__', wrapinit)
Matt Mackall
filecache: fix check-code complaint
r14937 origcacheable = extensions.wrapfunction(util.cachestat, 'cacheable',
wrapcacheable)
Idan Kamara
scmutil: introduce filecache...
r14928
Siddharth Agarwal
scmutil.filecache: support watching over multiple files
r20045 for fn in ['x', 'y']:
try:
os.remove(fn)
except OSError:
pass
Idan Kamara
scmutil: introduce filecache...
r14928
basic(fakerepo())
util.cachestat.cacheable = origcacheable
util.cachestat.__init__ = originit
Idan Kamara
destroyed: keep the filecache in sync with __dict__ (issue3335) (issue3693) (issue3743)...
r18313 def test_filecache_synced():
timeless@mozdev.org
spelling: behaviour -> behavior
r26098 # test old behavior that caused filecached properties to go out of sync
Idan Kamara
destroyed: keep the filecache in sync with __dict__ (issue3335) (issue3693) (issue3743)...
r18313 os.system('hg init && echo a >> a && hg ci -qAm.')
Yuya Nishihara
test-filecache: alias ui as uimod
r28803 repo = hg.repository(uimod.ui())
Idan Kamara
destroyed: keep the filecache in sync with __dict__ (issue3335) (issue3693) (issue3743)...
r18313 # first rollback clears the filecache, but changelog to stays in __dict__
repo.rollback()
repo.commit('.')
# second rollback comes along and touches the changelog externally
# (file is moved)
repo.rollback()
# but since changelog isn't under the filecache control anymore, we don't
# see that it changed, and return the old changelog without reconstructing
# it
repo.commit('.')
Idan Kamara
filecache: create an entry in _filecache when __set__ is called for a missing one...
r18316 def setbeforeget(repo):
os.remove('x')
Siddharth Agarwal
scmutil.filecache: support watching over multiple files
r20045 os.remove('y')
Siddharth Agarwal
test-filecache.py: make setbeforeget test clearer...
r20040 repo.cached = 'string set externally'
Idan Kamara
filecache: create an entry in _filecache when __set__ is called for a missing one...
r18316 repo.invalidate()
Robert Stanca
py3: use print_function in test-filecache.py
r28742 print("* neither file exists")
print(repo.cached)
Idan Kamara
filecache: create an entry in _filecache when __set__ is called for a missing one...
r18316 repo.invalidate()
f = open('x', 'w')
f.write('a')
f.close()
Robert Stanca
py3: use print_function in test-filecache.py
r28742 print("* file x created")
print(repo.cached)
Idan Kamara
filecache: create an entry in _filecache when __set__ is called for a missing one...
r18316
Siddharth Agarwal
scmutil.filecache: support watching over multiple files
r20045 repo.cached = 'string 2 set externally'
repo.invalidate()
Robert Stanca
py3: use print_function in test-filecache.py
r28742 print("* string set externally again")
print(repo.cached)
Siddharth Agarwal
scmutil.filecache: support watching over multiple files
r20045
repo.invalidate()
f = open('y', 'w')
f.write('b')
f.close()
Robert Stanca
py3: use print_function in test-filecache.py
r28742 print("* file y created")
print(repo.cached)
Siddharth Agarwal
scmutil.filecache: support watching over multiple files
r20045
Robert Stanca
py3: use print_function in test-filecache.py
r28742 print('basic:')
print()
Idan Kamara
scmutil: introduce filecache...
r14928 basic(fakerepo())
Robert Stanca
py3: use print_function in test-filecache.py
r28742 print()
print('fakeuncacheable:')
print()
Idan Kamara
scmutil: introduce filecache...
r14928 fakeuncacheable()
Idan Kamara
destroyed: keep the filecache in sync with __dict__ (issue3335) (issue3693) (issue3743)...
r18313 test_filecache_synced()
Robert Stanca
py3: use print_function in test-filecache.py
r28742 print()
print('setbeforeget:')
print()
Idan Kamara
filecache: create an entry in _filecache when __set__ is called for a missing one...
r18316 setbeforeget(fakerepo())