# HG changeset patch # User Daehyeok Mun # Date 1584845990 25200 # Node ID 388820908580736182da5a158c4f6eba094872cf # Parent 868a903689fd40b9b3b33fad8a29df44763c0283 hglib: update grep to cope with behavior change in hg 5.2. Since version 5.2, revision filed not printed without all argument. Fixed inaccurate pasring result with lastest hg and changed test case. diff -r 868a903689fd -r 388820908580 hglib/client.py --- a/hglib/client.py Wed Dec 11 10:25:17 2019 -0500 +++ b/hglib/client.py Sat Mar 21 19:59:50 2020 -0700 @@ -881,9 +881,11 @@ raise error.CommandError(args, ret, out, err) return b('') - out = self.rawcommand(args, eh=eh).split(b('\0')) + out = self.rawcommand(args, eh=eh).split(b('\0'))[:-1] - fieldcount = 3 + fieldcount = 1 + if all or self.version < (5, 2): + fieldcount += 1 if user: fieldcount += 1 if date: @@ -892,8 +894,8 @@ fieldcount += 1 if all: fieldcount += 1 - if fileswithmatches: - fieldcount -= 1 + if not fileswithmatches: + fieldcount += 1 return util.grouper(fieldcount, out) diff -r 868a903689fd -r 388820908580 tests/test-grep.py --- a/tests/test-grep.py Wed Dec 11 10:25:17 2019 -0500 +++ b/tests/test-grep.py Sat Mar 21 19:59:50 2020 -0700 @@ -3,62 +3,62 @@ class test_grep(common.basetest): def test_basic(self): - self.append('a', 'a\n') - self.append('b', 'ab\n') + self.append('a', 'x\n') + self.append('b', 'xy\n') self.client.commit(b('first'), addremove=True) # no match self.assertEquals(list(self.client.grep(b('c'))), []) if self.client.version >= (5, 2): - self.assertEquals(list(self.client.grep(b('a'))), - [(b('a'), b('a'), b('b'))]) - self.assertEquals(list(self.client.grep(b('a'), b('a'))), - [(b('a'), b('a'), b(''))]) + self.assertEquals(list(self.client.grep(b('x'))), + [(b('a'), b('x')), (b('b'), b('xy'))]) + self.assertEquals(list(self.client.grep(b('x'), b('a'))), + [(b('a'), b('x'))]) - self.assertEquals(list(self.client.grep(b('b'))), - [(b('b'), b('ab'), b(''))]) + self.assertEquals(list(self.client.grep(b('y'))), + [(b('b'), b('xy'))]) else: - self.assertEquals(list(self.client.grep(b('a'))), - [(b('a'), b('0'), b('a')), (b('b'), b('0'), b('ab'))]) - self.assertEquals(list(self.client.grep(b('a'), b('a'))), - [(b('a'), b('0'), b('a'))]) - - self.assertEquals(list(self.client.grep(b('b'))), - [(b('b'), b('0'), b('ab'))]) + self.assertEquals(list(self.client.grep(b('x'))), + [(b('a'), b('0'), b('x')), (b('b'), b('0'), b('xy'))]) + self.assertEquals(list(self.client.grep(b('x'), b('a'))), + [(b('a'), b('0'), b('x'))]) + self.assertEquals(list(self.client.grep(b('y'))), + [(b('b'), b('0'), b('xy'))]) def test_options(self): - self.append('a', 'a\n') - self.append('b', 'ab\n') + self.append('a', 'x\n') + self.append('b', 'xy\n') rev, node = self.client.commit(b('first'), addremove=True) - self.assertEquals([(b('a'), b('0'), b('+'), b('a')), - (b('b'), b('0'), b('+'), b('ab'))], - list(self.client.grep(b('a'), all=True))) + self.assertEquals([(b('a'), b('0'), b('+'), b('x')), + (b('b'), b('0'), b('+'), b('xy'))], + list(self.client.grep(b('x'), all=True))) if self.client.version >= (5, 2): - self.assertEquals([(b('a'), b('b'))], - list(self.client.grep(b('a'), fileswithmatches=True))) + self.assertEquals([(b('a'),), (b('b'),)], + list(self.client.grep(b('x'), fileswithmatches=True))) - self.assertEquals([(b('a'), b('1'), b('a'), b('b'))], - list(self.client.grep(b('a'), line=True))) + self.assertEquals([(b('a'), b('1'), b('x')), (b('b'), b('1'), b('xy'))], + list(self.client.grep(b('x'), line=True))) - self.assertEquals([(b('a'), b('test'), b('a'), b('b'))], - list(self.client.grep(b('a'), user=True))) + self.assertEquals([(b('a'), b('test'), b('x')), + (b('b'), b('test'), b('xy'))], + list(self.client.grep(b('x'), user=True))) else: self.assertEquals([(b('a'), b('0')), (b('b'), b('0'))], - list(self.client.grep(b('a'), fileswithmatches=True))) + list(self.client.grep(b('x'), fileswithmatches=True))) - self.assertEquals([(b('a'), b('0'), b('1'), b('a')), - (b('b'), b('0'), b('1'), b('ab'))], - list(self.client.grep(b('a'), line=True))) + self.assertEquals([(b('a'), b('0'), b('1'), b('x')), + (b('b'), b('0'), b('1'), b('xy'))], + list(self.client.grep(b('x'), line=True))) - self.assertEquals([(b('a'), b('0'), b('test'), b('a')), - (b('b'), b('0'), b('test'), b('ab'))], - list(self.client.grep(b('a'), user=True))) + self.assertEquals([(b('a'), b('0'), b('test'), b('x')), + (b('b'), b('0'), b('test'), b('xy'))], + list(self.client.grep(b('x'), user=True))) self.assertEquals([(b('a'), b('0'), b('1'), b('+'), b('test')), (b('b'), b('0'), b('1'), b('+'), b('test'))], - list(self.client.grep(b('a'), all=True, user=True, + list(self.client.grep(b('x'), all=True, user=True, line=True, fileswithmatches=True)))