# HG changeset patch # User Yuya Nishihara # Date 1528601093 -32400 # Node ID fbb2eddea4d27d0e18267da60084619ae915f53c # Parent dbf31732ef6414fc15d68ed9d0690c6406910ec0 stringutil: fix prettyrepr() to not orphan foo=<...> line diff -r dbf31732ef64 -r fbb2eddea4d2 mercurial/utils/stringutil.py --- a/mercurial/utils/stringutil.py Sun Jun 10 11:55:52 2018 +0900 +++ b/mercurial/utils/stringutil.py Sun Jun 10 12:24:53 2018 +0900 @@ -49,15 +49,26 @@ """Pretty print a representation of a possibly-nested object""" lines = [] rs = pycompat.byterepr(o) - p = 0 - while p < len(rs): - q = rs.find('<', p + 1) - if q < 0: - q = len(rs) - l = rs.count('<', 0, p) - rs.count('>', 0, p) + p0 = p1 = 0 + while p0 < len(rs): + # '... field= p1 + 1 and rs.startswith('=', q1 - 1): + # backtrack for ' field=<' + q0 = rs.rfind(' ', p1 + 1, q1 - 1) + if q0 < 0: + q0 = q1 + else: + q0 += 1 # skip ' ' + l = rs.count('<', 0, p0) - rs.count('>', 0, p0) assert l >= 0 - lines.append((l, rs[p:q].rstrip())) - p = q + lines.append((l, rs[p0:q0].rstrip())) + p0, p1 = q0, q1 return '\n'.join(' ' * l + s for l, s in lines) def binary(s): diff -r dbf31732ef64 -r fbb2eddea4d2 tests/test-walk.t --- a/tests/test-walk.t Sun Jun 10 11:55:52 2018 +0900 +++ b/tests/test-walk.t Sun Jun 10 12:24:53 2018 +0900 @@ -80,9 +80,9 @@ f mammals/skunk skunk $ hg debugwalk -v -X ../beans * matcher: - , m2= - > + , + m2=> f fennel ../fennel f fenugreek ../fenugreek f fiddlehead ../fiddlehead @@ -106,9 +106,9 @@ f mammals/skunk skunk $ hg debugwalk -v -I 'relglob:*k' . * matcher: - , m2= - > + , + m2=> f mammals/skunk skunk $ hg debugwalk -v -I 're:.*k$' * matcher: @@ -167,9 +167,9 @@ f fiddlehead ../fiddlehead $ hg debugwalk -v -X 'rootfilesin:' * matcher: - , m2= - > + , + m2=> f beans/black ../beans/black f beans/borlotti ../beans/borlotti f beans/kidney ../beans/kidney @@ -228,9 +228,9 @@ f mammals/skunk skunk $ hg debugwalk -v -X 'rootfilesin:mammals' * matcher: - , m2= - > + , + m2=> f beans/black ../beans/black f beans/borlotti ../beans/borlotti f beans/kidney ../beans/kidney @@ -322,9 +322,9 @@ f mammals/skunk mammals/skunk $ hg debugwalk -v -Ibeans mammals * matcher: - , m2= - > + , + m2=> $ hg debugwalk -v -Inon-existent * matcher: @@ -334,21 +334,21 @@ f beans/black beans/black $ hg debugwalk -v -Ibeans beans/black * matcher: - , m2= - > + , + m2=> f beans/black beans/black exact $ hg debugwalk -v -Ibeans/black beans * matcher: - , m2= - > + , + m2=> f beans/black beans/black $ hg debugwalk -v -Xbeans/black beans * matcher: - , m2= - > + , + m2=> f beans/borlotti beans/borlotti f beans/kidney beans/kidney f beans/navy beans/navy @@ -356,9 +356,9 @@ f beans/turtle beans/turtle $ hg debugwalk -v -Xbeans/black -Ibeans * matcher: - , m2= - > + , + m2=> f beans/borlotti beans/borlotti f beans/kidney beans/kidney f beans/navy beans/navy @@ -366,24 +366,24 @@ f beans/turtle beans/turtle $ hg debugwalk -v -Xbeans/black beans/black * matcher: - , m2= - > + , + m2=> $ hg debugwalk -v -Xbeans/black -Ibeans/black * matcher: - , m2= - > + , + m2=> $ hg debugwalk -v -Xbeans beans/black * matcher: - , m2= - > + , + m2=> $ hg debugwalk -v -Xbeans -Ibeans/black * matcher: - , m2= - > + , + m2=> $ hg debugwalk -v 'glob:mammals/../beans/b*' * matcher: @@ -391,9 +391,9 @@ f beans/borlotti beans/borlotti $ hg debugwalk -v '-X*/Procyonidae' mammals * matcher: - , m2= - > + , + m2=> f mammals/skunk mammals/skunk $ hg debugwalk -v path:mammals * matcher: @@ -425,24 +425,24 @@ $ hg debugwalk -v fennel -X fennel * matcher: - , m2= - > + , + m2=> $ hg debugwalk -v fennel -X 'f*' * matcher: - , m2= - > + , + m2=> $ hg debugwalk -v beans/black -X 'path:beans' * matcher: - , m2= - > + , + m2=> $ hg debugwalk -v -I 'path:beans/black' -X 'path:beans' * matcher: - , m2= - > + , + m2=> Test absolute paths: