linelog: port to Python 3
Differential Revision: https://phab.mercurial-scm.org/D4051
--- a/contrib/python3-whitelist Sat Jul 28 17:42:36 2018 -0700
+++ b/contrib/python3-whitelist Wed Aug 01 23:25:35 2018 -0400
@@ -254,6 +254,7 @@
test-largefiles.t
test-lfs-largefiles.t
test-lfs-pointer.py
+test-linelog.py
test-linerange.py
test-locate.t
test-lock-badness.t
--- a/mercurial/linelog.py Sat Jul 28 17:42:36 2018 -0700
+++ b/mercurial/linelog.py Wed Aug 01 23:25:35 2018 -0400
@@ -98,7 +98,7 @@
self._target = op2
def __str__(self):
- return 'JGE %d %d' % (self._cmprev, self._target)
+ return r'JGE %d %d' % (self._cmprev, self._target)
def __eq__(self, other):
return (type(self) == type(other)
@@ -122,7 +122,7 @@
self._target = op2
def __str__(self):
- return 'JUMP %d' % (self._target)
+ return r'JUMP %d' % (self._target)
def __eq__(self, other):
return (type(self) == type(other)
@@ -144,7 +144,7 @@
raise LineLogError("malformed EOF, op2 must be 0, got %d" % op2)
def __str__(self):
- return 'EOF'
+ return r'EOF'
def __eq__(self, other):
return type(self) == type(other)
@@ -163,7 +163,7 @@
self._target = op2
def __str__(self):
- return 'JL %d %d' % (self._cmprev, self._target)
+ return r'JL %d %d' % (self._cmprev, self._target)
def __eq__(self, other):
return (type(self) == type(other)
@@ -188,7 +188,7 @@
self._origlineno = op2
def __str__(self):
- return 'LINE %d %d' % (self._rev, self._origlineno)
+ return r'LINE %d %d' % (self._rev, self._origlineno)
def __eq__(self, other):
return (type(self) == type(other)
@@ -245,8 +245,8 @@
hex(id(self)), self._maxrev, len(self._program))
def debugstr(self):
- fmt = '%%%dd %%s' % len(str(len(self._program)))
- return '\n'.join(
+ fmt = r'%%%dd %%s' % len(str(len(self._program)))
+ return pycompat.sysstr('\n').join(
fmt % (idx, i) for idx, i in enumerate(self._program[1:], 1))
@classmethod
--- a/tests/test-linelog.py Sat Jul 28 17:42:36 2018 -0700
+++ b/tests/test-linelog.py Wed Aug 01 23:25:35 2018 -0400
@@ -41,12 +41,12 @@
self.assertEqual(linelog.linelog.fromdata(enc), ll)
# This encoding matches the encoding used by hg-experimental's
# linelog file, or is supposed to if it doesn't.
- self.assertEqual(enc, ('\x00\x00\x01\x90\x00\x00\x00\x06'
- '\x00\x00\x00\xa4\x00\x00\x00*'
- '\x00\x00\x00\x00\x00\x00\x00+'
- '\x00\x00\x00\x00\x00\x00\x00\x00'
- '\x00\x00\x00\xb1\x00\x00\x00-'
- '\x00\x00\x00\xba\x00\x00\x00/'))
+ self.assertEqual(enc, (b'\x00\x00\x01\x90\x00\x00\x00\x06'
+ b'\x00\x00\x00\xa4\x00\x00\x00*'
+ b'\x00\x00\x00\x00\x00\x00\x00+'
+ b'\x00\x00\x00\x00\x00\x00\x00\x00'
+ b'\x00\x00\x00\xb1\x00\x00\x00-'
+ b'\x00\x00\x00\xba\x00\x00\x00/'))
def testsimpleedits(self):
ll = linelog.linelog()
@@ -94,21 +94,21 @@
def testparseclinelogfile(self):
# This data is what the replacements in testsimpleedits
# produce when fed to the original linelog.c implementation.
- data = ('\x00\x00\x00\x0c\x00\x00\x00\x0f'
- '\x00\x00\x00\x00\x00\x00\x00\x02'
- '\x00\x00\x00\x05\x00\x00\x00\x06'
- '\x00\x00\x00\x06\x00\x00\x00\x00'
- '\x00\x00\x00\x00\x00\x00\x00\x07'
- '\x00\x00\x00\x06\x00\x00\x00\x02'
- '\x00\x00\x00\x00\x00\x00\x00\x00'
- '\x00\x00\x00\t\x00\x00\x00\t'
- '\x00\x00\x00\x00\x00\x00\x00\x0c'
- '\x00\x00\x00\x08\x00\x00\x00\x05'
- '\x00\x00\x00\x06\x00\x00\x00\x01'
- '\x00\x00\x00\x00\x00\x00\x00\x05'
- '\x00\x00\x00\x0c\x00\x00\x00\x05'
- '\x00\x00\x00\n\x00\x00\x00\x01'
- '\x00\x00\x00\x00\x00\x00\x00\t')
+ data = (b'\x00\x00\x00\x0c\x00\x00\x00\x0f'
+ b'\x00\x00\x00\x00\x00\x00\x00\x02'
+ b'\x00\x00\x00\x05\x00\x00\x00\x06'
+ b'\x00\x00\x00\x06\x00\x00\x00\x00'
+ b'\x00\x00\x00\x00\x00\x00\x00\x07'
+ b'\x00\x00\x00\x06\x00\x00\x00\x02'
+ b'\x00\x00\x00\x00\x00\x00\x00\x00'
+ b'\x00\x00\x00\t\x00\x00\x00\t'
+ b'\x00\x00\x00\x00\x00\x00\x00\x0c'
+ b'\x00\x00\x00\x08\x00\x00\x00\x05'
+ b'\x00\x00\x00\x06\x00\x00\x00\x01'
+ b'\x00\x00\x00\x00\x00\x00\x00\x05'
+ b'\x00\x00\x00\x0c\x00\x00\x00\x05'
+ b'\x00\x00\x00\n\x00\x00\x00\x01'
+ b'\x00\x00\x00\x00\x00\x00\x00\t')
llc = linelog.linelog.fromdata(data)
self.assertEqual([(l.rev, l.linenum) for l in llc.annotate(1)],
[(1, 0),