##// END OF EJS Templates
test-pathencode: randomize length of each path component...
test-pathencode: randomize length of each path component This makes it possible for long and short components to exist in the same path. This also makes shorter path components more likely. For randint(1, randint(1, n)), the likelihood that one sees a number k (1 <= k <= n) is 1/n * (\sum_{k=i}^n 1/i). This decreases with k, much like in the real world where shorter paths are more common than longer ones. The previous fix and this one together cause issue3958 to be detected by this test with reasonable frequency. When this test was run 100 times in a loop, the issue was detected 30 of those times.

File last commit:

r17298:59c14bf5 stable
r19319:ec17ddec stable
Show More
pushkey.py
39 lines | 1.1 KiB | text/x-python | PythonLexer
Matt Mackall
pushkey: add pushkey core
r11367 # pushkey.py - dispatching for pushing and pulling keys
#
# Copyright 2010 Matt Mackall <mpm@selenic.com>
#
# This software may be used and distributed according to the terms of the
# GNU General Public License version 2 or any later version.
Pierre-Yves.David@ens-lyon.org
obsolete: exchange obsolete marker over pushkey...
r17075 import bookmarks, phases, obsolete
Matt Mackall
bookmarks: move pushkey functions into core
r13353
Matt Mackall
pushkey: add pushkey core
r11367 def _nslist(repo):
n = {}
for k in _namespaces:
n[k] = ""
Pierre-Yves David
pushkey: do not exchange obsole markers if feature is disabled...
r17298 if not obsolete._enabled:
n.pop('obsolete')
Matt Mackall
pushkey: add pushkey core
r11367 return n
Matt Mackall
bookmarks: move pushkey functions into core
r13353 _namespaces = {"namespaces": (lambda *x: False, _nslist),
Pierre-Yves David
phases: add basic pushkey support
r15648 "bookmarks": (bookmarks.pushbookmark, bookmarks.listbookmarks),
"phases": (phases.pushphase, phases.listphases),
Pierre-Yves.David@ens-lyon.org
obsolete: exchange obsolete marker over pushkey...
r17075 "obsolete": (obsolete.pushmarker, obsolete.listmarkers),
Pierre-Yves David
phases: add basic pushkey support
r15648 }
Matt Mackall
pushkey: add pushkey core
r11367
def register(namespace, pushkey, listkeys):
_namespaces[namespace] = (pushkey, listkeys)
def _get(namespace):
return _namespaces.get(namespace, (lambda *x: False, lambda *x: {}))
def push(repo, namespace, key, old, new):
'''should succeed iff value was old'''
pk = _get(namespace)[0]
return pk(repo, key, old, new)
def list(repo, namespace):
'''return a dict'''
lk = _get(namespace)[1]
return lk(repo)