[PATCH 1 of 1 V2] test-pathencode: actually compare our current pathencoding implementations

Adrian Buehlmann adrian at cadifra.com
Wed Dec 19 03:23:43 CST 2012


# HG changeset patch
# User Adrian Buehlmann <adrian at cadifra.com>
# Date 1355907763 -3600
# Node ID 77ba937bfaa5a33adb738f4858ef0bd5aab3c283
# Parent  9c76da468a19a0cf9551b8a667d2913b0b0ee7be
test-pathencode: actually compare our 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 --git a/tests/test-pathencode.py b/tests/test-pathencode.py
--- a/tests/test-pathencode.py
+++ b/tests/test-pathencode.py
@@ -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():


More information about the Mercurial-devel mailing list