Patchwork [RESEND] revset: fix wrong keyword() behaviour for strings with spaces

login
register
mail settings
Submitter Alexander Plavin
Date Sept. 6, 2013, 8:58 a.m.
Message ID <cf26d9c918f6f0943f39.1378457904@debian-alexander.dolgopa>
Download mbox | patch
Permalink /patch/2388/
State Accepted
Commit 26ddce1a2a55809d430498f4ed1fa9594c390885
Headers show

Comments

Alexander Plavin - Sept. 6, 2013, 8:58 a.m.
# HG changeset patch
# User Alexander Plavin <alexander@plav.in>
# Date 1375735926 -14400
#      Tue Aug 06 00:52:06 2013 +0400
# Node ID cf26d9c918f6f0943f39e8116ca807da1e4e8525
# Parent  16b353c13af93f86813bb8a49ddad5ed9a80768f
revset: fix wrong keyword() behaviour for strings with spaces

Some changesets can be wrongly reported as matched by this predicate
due to searching in a string joined with spaces and not individually.
A test case added, which fails without this fix.

Patch

diff -r 16b353c13af9 -r cf26d9c918f6 mercurial/revset.py
--- a/mercurial/revset.py	Sat Jun 29 14:36:51 2013 +0400
+++ b/mercurial/revset.py	Tue Aug 06 00:52:06 2013 +0400
@@ -910,8 +910,8 @@ 
     l = []
     for r in subset:
         c = repo[r]
-        t = " ".join(c.files() + [c.user(), c.description()])
-        if kw in encoding.lower(t):
+        if util.any(kw in encoding.lower(t)
+                    for t in c.files() + [c.user(), c.description()]):
             l.append(r)
     return l
 
diff -r 16b353c13af9 -r cf26d9c918f6 tests/test-revset.t
--- a/tests/test-revset.t	Sat Jun 29 14:36:51 2013 +0400
+++ b/tests/test-revset.t	Tue Aug 06 00:52:06 2013 +0400
@@ -328,6 +328,7 @@ 
   7
   $ log 'keyword(issue)'
   6
+  $ log 'keyword("test a")'
   $ log 'limit(head(), 1)'
   0
   $ log 'matching(6)'