changeset 31704:cbe0bea82c79

hgweb: fix diff hunks filtering by line range in webutil.diffs() The previous clause for filter out a diff hunk was too restrictive. We need to consider the following cases (assuming linerange=(lb, ub) and the @s2,l2 hunkrange): <-(s2)--------(s2+l2)-> <-(lb)---(ub)-> <-(lb)---(ub)-> <-(lb)---(ub)-> previously on the first and last situations were considered. In test-hgweb-filelog.t, add a couple of lines at the beginning of file "b" so that the line range we will follow does not start at the beginning of file. This covers the change in aforementioned diff hunk filter clause.
author Denis Laxalde <denis.laxalde@logilab.fr>
date Wed, 29 Mar 2017 12:07:07 +0200
parents cda83a1bfb3a
children 5eb4d206202b
files mercurial/hgweb/webutil.py tests/test-hgweb-filelog.t
diffstat 2 files changed, 66 insertions(+), 46 deletions(-) [+]
line wrap: on
line diff
--- a/mercurial/hgweb/webutil.py	Sat Mar 25 11:30:08 2017 +0100
+++ b/mercurial/hgweb/webutil.py	Wed Mar 29 12:07:07 2017 +0200
@@ -473,7 +473,7 @@
             if linerange is not None and hunkrange is not None:
                 s1, l1, s2, l2 = hunkrange
                 lb, ub = linerange
-                if not (lb <= s2 < ub or lb < s2 + l2 <= ub):
+                if not (lb < s2 + l2 and ub > s2):
                     continue
             lines.extend(hunklines)
         if lines:
--- a/tests/test-hgweb-filelog.t	Sat Mar 25 11:30:08 2017 +0100
+++ b/tests/test-hgweb-filelog.t	Wed Mar 29 12:07:07 2017 +0200
@@ -1165,6 +1165,8 @@
   b
   c
   $ cat <<EOF > c
+  > 0
+  > 0
   > b
   > c+
   > 
@@ -1177,6 +1179,8 @@
   > EOF
   $ hg ci -m 'make c bigger and touch its beginning' c
   $ cat <<EOF > c
+  > 0
+  > 0
   > b
   > c+
   > 
@@ -1189,6 +1193,8 @@
   > EOF
   $ hg ci -m 'just touch end of c' c
   $ cat <<EOF > c
+  > 0
+  > 0
   > b
   > c++
   > 
@@ -1201,6 +1207,8 @@
   > EOF
   $ hg ci -m 'touch beginning of c' c
   $ cat <<EOF > c
+  > 0
+  > 0
   > b-
   > c++
   > 
@@ -1212,7 +1220,7 @@
   > f+
   > EOF
   $ hg ci -m 'touching beginning and end of c' c
-  $ hg log -r 'followlines(c, 1:2, startrev=tip) and follow(c)' -p
+  $ hg log -r 'followlines(c, 3:4, startrev=tip) and follow(c)' -p
   changeset:   0:6563da9dcf87
   user:        test
   date:        Thu Jan 01 00:00:00 1970 +0000
@@ -1237,16 +1245,18 @@
    b
   +c
   
-  changeset:   8:c40702dbfc57
+  changeset:   8:5c6574614c37
   branch:      a-branch
   user:        test
   date:        Thu Jan 01 00:00:00 1970 +0000
   summary:     make c bigger and touch its beginning
   
-  diff -r 46c1a66bd8fc -r c40702dbfc57 c
+  diff -r 46c1a66bd8fc -r 5c6574614c37 c
   --- a/c	Thu Jan 01 00:00:00 1970 +0000
   +++ b/c	Thu Jan 01 00:00:00 1970 +0000
-  @@ -1,2 +1,9 @@
+  @@ -1,2 +1,11 @@
+  +0
+  +0
    b
   -c
   +c+
@@ -1258,16 +1268,18 @@
   +e
   +f
   
-  changeset:   10:f94018eca295
+  changeset:   10:e95928d60479
   branch:      a-branch
   user:        test
   date:        Thu Jan 01 00:00:00 1970 +0000
   summary:     touch beginning of c
   
-  diff -r 07faa31d6d1c -r f94018eca295 c
+  diff -r e1d3e9c5a23f -r e95928d60479 c
   --- a/c	Thu Jan 01 00:00:00 1970 +0000
   +++ b/c	Thu Jan 01 00:00:00 1970 +0000
-  @@ -1,5 +1,5 @@
+  @@ -1,7 +1,7 @@
+   0
+   0
    b
   -c+
   +c++
@@ -1275,30 +1287,32 @@
    a
    a
   
-  changeset:   11:ea4193bdd9bf
+  changeset:   11:fb9bc322513a
   branch:      a-branch
   tag:         tip
   user:        test
   date:        Thu Jan 01 00:00:00 1970 +0000
   summary:     touching beginning and end of c
   
-  diff -r f94018eca295 -r ea4193bdd9bf c
+  diff -r e95928d60479 -r fb9bc322513a c
   --- a/c	Thu Jan 01 00:00:00 1970 +0000
   +++ b/c	Thu Jan 01 00:00:00 1970 +0000
-  @@ -1,4 +1,4 @@
+  @@ -1,6 +1,6 @@
+   0
+   0
   -b
   +b-
    c++
    
    a
-  @@ -6,4 +6,4 @@
+  @@ -8,4 +8,4 @@
    
    d
    e+
   -f
   +f+
   
-  $ (get-with-headers.py localhost:$HGPORT 'log/tip/c?linerange=1:2&patch=')
+  $ (get-with-headers.py localhost:$HGPORT 'log/tip/c?linerange=3:4&patch=')
   200 Script output follows
   
   <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
@@ -1355,9 +1369,9 @@
   <div class="main">
   <h2 class="breadcrumb"><a href="/">Mercurial</a> </h2>
   <h3>
-   log c @ 11:<a href="/rev/ea4193bdd9bf">ea4193bdd9bf</a>
+   log c @ 11:<a href="/rev/fb9bc322513a">fb9bc322513a</a>
    <span class="branchname">a-branch</span> <span class="tag">tip</span> 
-    (following lines 1:2 <a href="/log/tip/c">back to filelog</a>)
+    (following lines 3:4 <a href="/log/tip/c">back to filelog</a>)
   </h3>
   
   <form class="search" action="/log">
@@ -1368,8 +1382,8 @@
   </form>
   
   <div class="navigate">
-  <a href="/log/tip/c?linerange=1%3A2&patch=&revcount=30">less</a>
-  <a href="/log/tip/c?linerange=1%3A2&patch=&revcount=120">more</a>
+  <a href="/log/tip/c?linerange=3%3A4&patch=&revcount=30">less</a>
+  <a href="/log/tip/c?linerange=3%3A4&patch=&revcount=120">more</a>
   |  </div>
   
   <table class="bigtable">
@@ -1385,59 +1399,65 @@
     <td class="age">Thu, 01 Jan 1970 00:00:00 +0000</td>
     <td class="author">test</td>
     <td class="description">
-     <a href="/rev/ea4193bdd9bf">touching beginning and end of c</a>
+     <a href="/rev/fb9bc322513a">touching beginning and end of c</a>
      <span class="branchhead">a-branch</span> <span class="tag">tip</span> 
     </td>
    </tr>
    <tr><td colspan="3"><div class="bottomline inc-lineno"><pre class="sourcelines wrap">
   <span id="l1.1" class="minusline">--- a/c	Thu Jan 01 00:00:00 1970 +0000</span><a href="#l1.1"></a>
   <span id="l1.2" class="plusline">+++ b/c	Thu Jan 01 00:00:00 1970 +0000</span><a href="#l1.2"></a>
-  <span id="l1.3" class="atline">@@ -1,4 +1,4 @@</span><a href="#l1.3"></a>
-  <span id="l1.4" class="minusline">-b</span><a href="#l1.4"></a>
-  <span id="l1.5" class="plusline">+b-</span><a href="#l1.5"></a>
-  <span id="l1.6"> c++</span><a href="#l1.6"></a>
-  <span id="l1.7"> </span><a href="#l1.7"></a>
-  <span id="l1.8"> a</span><a href="#l1.8"></a></pre></div></td></tr>
+  <span id="l1.3" class="atline">@@ -1,6 +1,6 @@</span><a href="#l1.3"></a>
+  <span id="l1.4"> 0</span><a href="#l1.4"></a>
+  <span id="l1.5"> 0</span><a href="#l1.5"></a>
+  <span id="l1.6" class="minusline">-b</span><a href="#l1.6"></a>
+  <span id="l1.7" class="plusline">+b-</span><a href="#l1.7"></a>
+  <span id="l1.8"> c++</span><a href="#l1.8"></a>
+  <span id="l1.9"> </span><a href="#l1.9"></a>
+  <span id="l1.10"> a</span><a href="#l1.10"></a></pre></div></td></tr>
    <tr>
     <td class="age">Thu, 01 Jan 1970 00:00:00 +0000</td>
     <td class="author">test</td>
     <td class="description">
-     <a href="/rev/f94018eca295">touch beginning of c</a>
+     <a href="/rev/e95928d60479">touch beginning of c</a>
      <span class="branchname">a-branch</span> 
     </td>
    </tr>
    <tr><td colspan="3"><div class="bottomline inc-lineno"><pre class="sourcelines wrap">
   <span id="l1.1" class="minusline">--- a/c	Thu Jan 01 00:00:00 1970 +0000</span><a href="#l1.1"></a>
   <span id="l1.2" class="plusline">+++ b/c	Thu Jan 01 00:00:00 1970 +0000</span><a href="#l1.2"></a>
-  <span id="l1.3" class="atline">@@ -1,5 +1,5 @@</span><a href="#l1.3"></a>
-  <span id="l1.4"> b</span><a href="#l1.4"></a>
-  <span id="l1.5" class="minusline">-c+</span><a href="#l1.5"></a>
-  <span id="l1.6" class="plusline">+c++</span><a href="#l1.6"></a>
-  <span id="l1.7"> </span><a href="#l1.7"></a>
-  <span id="l1.8"> a</span><a href="#l1.8"></a>
-  <span id="l1.9"> a</span><a href="#l1.9"></a></pre></div></td></tr>
+  <span id="l1.3" class="atline">@@ -1,7 +1,7 @@</span><a href="#l1.3"></a>
+  <span id="l1.4"> 0</span><a href="#l1.4"></a>
+  <span id="l1.5"> 0</span><a href="#l1.5"></a>
+  <span id="l1.6"> b</span><a href="#l1.6"></a>
+  <span id="l1.7" class="minusline">-c+</span><a href="#l1.7"></a>
+  <span id="l1.8" class="plusline">+c++</span><a href="#l1.8"></a>
+  <span id="l1.9"> </span><a href="#l1.9"></a>
+  <span id="l1.10"> a</span><a href="#l1.10"></a>
+  <span id="l1.11"> a</span><a href="#l1.11"></a></pre></div></td></tr>
    <tr>
     <td class="age">Thu, 01 Jan 1970 00:00:00 +0000</td>
     <td class="author">test</td>
     <td class="description">
-     <a href="/rev/c40702dbfc57">make c bigger and touch its beginning</a>
+     <a href="/rev/5c6574614c37">make c bigger and touch its beginning</a>
      <span class="branchname">a-branch</span> 
     </td>
    </tr>
    <tr><td colspan="3"><div class="bottomline inc-lineno"><pre class="sourcelines wrap">
   <span id="l1.1" class="minusline">--- a/c	Thu Jan 01 00:00:00 1970 +0000</span><a href="#l1.1"></a>
   <span id="l1.2" class="plusline">+++ b/c	Thu Jan 01 00:00:00 1970 +0000</span><a href="#l1.2"></a>
-  <span id="l1.3" class="atline">@@ -1,2 +1,9 @@</span><a href="#l1.3"></a>
-  <span id="l1.4"> b</span><a href="#l1.4"></a>
-  <span id="l1.5" class="minusline">-c</span><a href="#l1.5"></a>
-  <span id="l1.6" class="plusline">+c+</span><a href="#l1.6"></a>
-  <span id="l1.7" class="plusline">+</span><a href="#l1.7"></a>
-  <span id="l1.8" class="plusline">+a</span><a href="#l1.8"></a>
-  <span id="l1.9" class="plusline">+a</span><a href="#l1.9"></a>
-  <span id="l1.10" class="plusline">+</span><a href="#l1.10"></a>
-  <span id="l1.11" class="plusline">+d</span><a href="#l1.11"></a>
-  <span id="l1.12" class="plusline">+e</span><a href="#l1.12"></a>
-  <span id="l1.13" class="plusline">+f</span><a href="#l1.13"></a></pre></div></td></tr>
+  <span id="l1.3" class="atline">@@ -1,2 +1,11 @@</span><a href="#l1.3"></a>
+  <span id="l1.4" class="plusline">+0</span><a href="#l1.4"></a>
+  <span id="l1.5" class="plusline">+0</span><a href="#l1.5"></a>
+  <span id="l1.6"> b</span><a href="#l1.6"></a>
+  <span id="l1.7" class="minusline">-c</span><a href="#l1.7"></a>
+  <span id="l1.8" class="plusline">+c+</span><a href="#l1.8"></a>
+  <span id="l1.9" class="plusline">+</span><a href="#l1.9"></a>
+  <span id="l1.10" class="plusline">+a</span><a href="#l1.10"></a>
+  <span id="l1.11" class="plusline">+a</span><a href="#l1.11"></a>
+  <span id="l1.12" class="plusline">+</span><a href="#l1.12"></a>
+  <span id="l1.13" class="plusline">+d</span><a href="#l1.13"></a>
+  <span id="l1.14" class="plusline">+e</span><a href="#l1.14"></a>
+  <span id="l1.15" class="plusline">+f</span><a href="#l1.15"></a></pre></div></td></tr>
    <tr>
     <td class="age">Thu, 01 Jan 1970 00:00:00 +0000</td>
     <td class="author">test</td>
@@ -1468,8 +1488,8 @@
   </table>
   
   <div class="navigate">
-  <a href="/log/tip/c?linerange=1%3A2&patch=&revcount=30">less</a>
-  <a href="/log/tip/c?linerange=1%3A2&patch=&revcount=120">more</a>
+  <a href="/log/tip/c?linerange=3%3A4&patch=&revcount=30">less</a>
+  <a href="/log/tip/c?linerange=3%3A4&patch=&revcount=120">more</a>
   |  
   </div>