test-pathencode: compare current pathencoding implementations
We already have two implementations of the pathencoding (C and
Python) and this test can perfectly well be used to probabilistically
test them instead of just wasting CPU cycles and test time.
--- a/tests/test-pathencode.py Mon Dec 17 20:51:21 2012 -0800
+++ b/tests/test-pathencode.py Wed Dec 19 10:02:43 2012 +0100
@@ -13,9 +13,6 @@
if sys.version_info[:2] < (2, 6):
sys.exit(0)
-def hybridencode(path):
- return store._hybridencode(path, True)
-
validchars = set(map(chr, range(0, 256)))
alphanum = range(ord('A'), ord('Z'))
@@ -157,7 +154,15 @@
def runtests(rng, seed, count):
nerrs = 0
for p in genpath(rng, count):
- hybridencode(p)
+ h = store._dothybridencode(p) # uses C implementation, if available
+ r = store._hybridencode(p, True) # reference implementation in Python
+ if h != r:
+ if nerrs == 0:
+ print >> sys.stderr, 'seed:', hex(seed)[:-1]
+ print >> sys.stderr, "\np: '%s'" % p.encode("string_escape")
+ print >> sys.stderr, "h: '%s'" % h.encode("string_escape")
+ print >> sys.stderr, "r: '%s'" % r.encode("string_escape")
+ nerrs += 1
return nerrs
def main():