Mercurial > public > mercurial-scm > hg
comparison tests/test-pathencode.py @ 18094:8ceabb34f1cb
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.
author | Adrian Buehlmann <adrian@cadifra.com> |
---|---|
date | Wed, 19 Dec 2012 10:02:43 +0100 |
parents | f945caa5e963 |
children | acfc6fab1361 |
comparison
equal
deleted
inserted
replaced
18093:9c76da468a19 | 18094:8ceabb34f1cb |
---|---|
10 import binascii, itertools, math, os, random, sys, time | 10 import binascii, itertools, math, os, random, sys, time |
11 import collections | 11 import collections |
12 | 12 |
13 if sys.version_info[:2] < (2, 6): | 13 if sys.version_info[:2] < (2, 6): |
14 sys.exit(0) | 14 sys.exit(0) |
15 | |
16 def hybridencode(path): | |
17 return store._hybridencode(path, True) | |
18 | 15 |
19 validchars = set(map(chr, range(0, 256))) | 16 validchars = set(map(chr, range(0, 256))) |
20 alphanum = range(ord('A'), ord('Z')) | 17 alphanum = range(ord('A'), ord('Z')) |
21 | 18 |
22 for c in '\0/': | 19 for c in '\0/': |
155 yield makepath(rng, x, y) | 152 yield makepath(rng, x, y) |
156 | 153 |
157 def runtests(rng, seed, count): | 154 def runtests(rng, seed, count): |
158 nerrs = 0 | 155 nerrs = 0 |
159 for p in genpath(rng, count): | 156 for p in genpath(rng, count): |
160 hybridencode(p) | 157 h = store._dothybridencode(p) # uses C implementation, if available |
158 r = store._hybridencode(p, True) # reference implementation in Python | |
159 if h != r: | |
160 if nerrs == 0: | |
161 print >> sys.stderr, 'seed:', hex(seed)[:-1] | |
162 print >> sys.stderr, "\np: '%s'" % p.encode("string_escape") | |
163 print >> sys.stderr, "h: '%s'" % h.encode("string_escape") | |
164 print >> sys.stderr, "r: '%s'" % r.encode("string_escape") | |
165 nerrs += 1 | |
161 return nerrs | 166 return nerrs |
162 | 167 |
163 def main(): | 168 def main(): |
164 import getopt | 169 import getopt |
165 | 170 |