[PATCH hglib] hglib: update grep to cope with behavior change in hg 5.2

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

[PATCH hglib] hglib: update grep to cope with behavior change in hg 5.2

Daehyeok Mun
# HG changeset patch
# User Daehyeok Mun <[hidden email]>
# Date 1584845990 25200
#      Sat Mar 21 19:59:50 2020 -0700
# Node ID 0bea9671f133da45a644f85749d4fc99248e18a3
# 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 0bea9671f133 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 0bea9671f133 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)))

_______________________________________________
Mercurial mailing list
[hidden email]
https://www.mercurial-scm.org/mailman/listinfo/mercurial
Reply | Threaded
Open this post in threaded view
|

Re: [PATCH hglib] hglib: update grep to cope with behavior change in hg 5.2

Augie Fackler-2
queued, thanks

> On Mar 21, 2020, at 23:53, Daehyeok Mun <[hidden email]> wrote:
>
> # HG changeset patch
> # User Daehyeok Mun <[hidden email]>
> # Date 1584845990 25200
> #      Sat Mar 21 19:59:50 2020 -0700
> # Node ID 0bea9671f133da45a644f85749d4fc99248e18a3
> # 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 0bea9671f133 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 0bea9671f133 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)))
>
> _______________________________________________
> Mercurial mailing list
> [hidden email]
> https://www.mercurial-scm.org/mailman/listinfo/mercurial

_______________________________________________
Mercurial mailing list
[hidden email]
https://www.mercurial-scm.org/mailman/listinfo/mercurial