##// END OF EJS Templates
chgserver: invalidate the server if extensions fail to load...
chgserver: invalidate the server if extensions fail to load Previously, if extensions fail to load, chg server will just keep working without those extensions. It will print a warning message but only if a new server starts. This patch invalidates the server if any extension failed to load, but still serve the client (hopefully just) once. It will help chg pass some test cases of test-bad-extension.t.

File last commit:

r27576:6cd30449 default
r28536:a979f5b0 default
Show More
test-lrucachedict.py
70 lines | 1.7 KiB | text/x-python | PythonLexer
/ tests / test-lrucachedict.py
Siddharth Agarwal
util: add an LRU cache dict...
r18603 from mercurial import util
Eric Sumner
lrucachedict: add copy method...
r27576 def printifpresent(d, xs, name='d'):
Siddharth Agarwal
util: add an LRU cache dict...
r18603 for x in xs:
present = x in d
Eric Sumner
lrucachedict: add copy method...
r27576 print "'%s' in %s: %s" % (x, name, present)
Siddharth Agarwal
util: add an LRU cache dict...
r18603 if present:
Eric Sumner
lrucachedict: add copy method...
r27576 print "%s['%s']: %s" % (name, x, d[x])
Siddharth Agarwal
util: add an LRU cache dict...
r18603
def test_lrucachedict():
d = util.lrucachedict(4)
d['a'] = 'va'
d['b'] = 'vb'
d['c'] = 'vc'
d['d'] = 'vd'
# all of these should be present
printifpresent(d, ['a', 'b', 'c', 'd'])
# 'a' should be dropped because it was least recently used
d['e'] = 've'
printifpresent(d, ['a', 'b', 'c', 'd', 'e'])
# touch entries in some order (get or set).
d['e']
d['c'] = 'vc2'
d['d']
d['b'] = 'vb2'
# 'e' should be dropped now
d['f'] = 'vf'
printifpresent(d, ['b', 'c', 'd', 'e', 'f'])
Siddharth Agarwal
lrucachedict: implement clear()
r19710 d.clear()
printifpresent(d, ['b', 'c', 'd', 'e', 'f'])
Gregory Szorc
util: reimplement lrucachedict...
r27371 # Now test dicts that aren't full.
d = util.lrucachedict(4)
d['a'] = 1
d['b'] = 2
d['a']
d['b']
printifpresent(d, ['a', 'b'])
Eric Sumner
lrucachedict: add copy method...
r27576 # test copy method
d = util.lrucachedict(4)
d['a'] = 'va3'
d['b'] = 'vb3'
d['c'] = 'vc3'
d['d'] = 'vd3'
dc = d.copy()
# all of these should be present
print "\nAll of these should be present:"
printifpresent(dc, ['a', 'b', 'c', 'd'], 'dc')
# 'a' should be dropped because it was least recently used
print "\nAll of these except 'a' should be present:"
dc['e'] = 've3'
printifpresent(dc, ['a', 'b', 'c', 'd', 'e'], 'dc')
# contents and order of original dict should remain unchanged
print "\nThese should be in reverse alphabetical order and read 'v?3':"
dc['b'] = 'vb3_new'
for k in list(iter(d)):
print "d['%s']: %s" % (k, d[k])
Siddharth Agarwal
util: add an LRU cache dict...
r18603 if __name__ == '__main__':
test_lrucachedict()