# HG changeset patch # User Adrian Buehlmann # Date 1355907763 -3600 # Node ID 8ceabb34f1cb5469b7dd6b2d7b1ce4727d719e65 # Parent 9c76da468a19a0cf9551b8a667d2913b0b0ee7be 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. diff -r 9c76da468a19 -r 8ceabb34f1cb tests/test-pathencode.py --- 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():