Mercurial > hg
comparison contrib/fuzz/mpatch_corpus.py @ 43856:229215fc1c1c
fuzz: fix mpatch_corpus to not have an overridden __repr__ on py3
Differential Revision: https://phab.mercurial-scm.org/D7606
author | Kyle Lippincott <spectral@google.com> |
---|---|
date | Wed, 11 Dec 2019 15:23:54 -0800 |
parents | 612951e08278 |
children | 43f6a7bb4e12 |
comparison
equal
deleted
inserted
replaced
43855:612951e08278 | 43856:229215fc1c1c |
---|---|
1 from __future__ import absolute_import, print_function | 1 from __future__ import absolute_import, print_function |
2 | 2 |
3 import argparse | 3 import argparse |
4 import struct | 4 import struct |
5 import sys | |
5 import zipfile | 6 import zipfile |
6 | 7 |
7 from mercurial import ( | 8 from mercurial import ( |
8 hg, | 9 hg, |
9 ui as uimod, | 10 ui as uimod, |
12 ap = argparse.ArgumentParser() | 13 ap = argparse.ArgumentParser() |
13 ap.add_argument("out", metavar="some.zip", type=str, nargs=1) | 14 ap.add_argument("out", metavar="some.zip", type=str, nargs=1) |
14 args = ap.parse_args() | 15 args = ap.parse_args() |
15 | 16 |
16 | 17 |
17 class deltafrag(object): | 18 if sys.version_info[0] < 3: |
19 | |
20 class py2reprhack(object): | |
21 def __repr__(self): | |
22 """Py2 calls __repr__ for `bytes(foo)`, forward to __bytes__""" | |
23 return self.__bytes__() | |
24 | |
25 | |
26 else: | |
27 | |
28 class py2reprhack(object): | |
29 """Not needed on py3.""" | |
30 | |
31 | |
32 class deltafrag(py2reprhack): | |
18 def __init__(self, start, end, data): | 33 def __init__(self, start, end, data): |
19 self.start = start | 34 self.start = start |
20 self.end = end | 35 self.end = end |
21 self.data = data | 36 self.data = data |
22 | |
23 def __repr__(self): | |
24 # py2 calls __repr__ when you do `bytes(foo)` | |
25 return self.__bytes__() | |
26 | 37 |
27 def __bytes__(self): | 38 def __bytes__(self): |
28 return ( | 39 return ( |
29 struct.pack(">lll", self.start, self.end, len(self.data)) | 40 struct.pack(">lll", self.start, self.end, len(self.data)) |
30 + self.data | 41 + self.data |
31 ) | 42 ) |
32 | 43 |
33 | 44 |
34 class delta(object): | 45 class delta(py2reprhack): |
35 def __init__(self, frags): | 46 def __init__(self, frags): |
36 self.frags = frags | 47 self.frags = frags |
37 | 48 |
38 def __repr__(self): | |
39 # py2 calls __repr__ when you do `bytes(foo)` | |
40 return self.__bytes__() | |
41 | |
42 def __bytes__(self): | 49 def __bytes__(self): |
43 return b''.join(bytes(f) for f in self.frags) | 50 return b''.join(bytes(f) for f in self.frags) |
44 | 51 |
45 | 52 |
46 class corpus(object): | 53 class corpus(py2reprhack): |
47 def __init__(self, base, deltas): | 54 def __init__(self, base, deltas): |
48 self.base = base | 55 self.base = base |
49 self.deltas = deltas | 56 self.deltas = deltas |
50 | |
51 def __repr__(self): | |
52 # py2 calls __repr__ when you do `bytes(foo)` | |
53 return self.__bytes__() | |
54 | 57 |
55 def __bytes__(self): | 58 def __bytes__(self): |
56 deltas = [bytes(d) for d in self.deltas] | 59 deltas = [bytes(d) for d in self.deltas] |
57 parts = ( | 60 parts = ( |
58 [ | 61 [ |