changeset 213:388820908580 2.6.2

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.
author Daehyeok Mun <daehyeok@gmail.com>
date Sat, 21 Mar 2020 19:59:50 -0700
parents 868a903689fd
children f422a5fdda79
files hglib/client.py tests/test-grep.py
diffstat 2 files changed, 40 insertions(+), 38 deletions(-) [+]
line wrap: on
line diff
--- 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)
 
--- 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)))