From patchwork Thu Aug 22 18:38:48 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: revset: fix wrong keyword() behaviour for strings with spaces From: Alexander Plavin X-Patchwork-Id: 2254 Message-Id: To: mercurial-devel@selenic.com Date: Thu, 22 Aug 2013 22:38:48 +0400 # HG changeset patch # User Alexander Plavin # Date 1375735926 -14400 # Tue Aug 06 00:52:06 2013 +0400 # Node ID e750d4c05d45410bfd51848374e9b2c479a8235a # Parent 4050c78a939904254eae88e9fe48945afe4b92d6 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. diff -r 4050c78a9399 -r e750d4c05d45 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 4050c78a9399 -r e750d4c05d45 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)'