Patchwork [1,of,2,V2] tests: duplicate test for pager for old extension and for in-core pager

login
register
mail settings
Submitter via Mercurial-devel
Date March 14, 2017, 4:16 p.m.
Message ID <d17402c07698443c13b0.1489508191@martinvonz.mtv.corp.google.com>
Download mbox | patch
Permalink /patch/19333/
State Accepted
Headers show

Comments

via Mercurial-devel - March 14, 2017, 4:16 p.m.
# HG changeset patch
# User Martin von Zweigbergk <martinvonz@google.com>
# Date 1489466579 25200
#      Mon Mar 13 21:42:59 2017 -0700
# Node ID d17402c07698443c13b082df8a8635a82b83d097
# Parent  3d3109339b57341b333c1112beb41dd281fa944a
tests: duplicate test for pager for old extension and for in-core pager

When the old pager extension is enabled, I think we should try to be
as BC as reasonable. To help with that, this patch brings back
test-pager.t as of 65a3b4d67a65 (pager: add a test of --pager=no
functionality, 2017-02-06), but under the name test-pager-legacy.t
However, since the behavior has changed in a few cases (notably by no
longer respecting pager.attend), the file is modified to work with the
current version. We will recover some lost BC in coming patches.

Also, to make sure the in-core pager does not depend on the pager
extension being enabled, this patch disables the extension in
test-pager.t. It turns out that pager.attend-$cmd was only supported
when the pager extension was enabled, so the tests are updated to
reflect that. We will need to decide what to do with these.
Yuya Nishihara - March 15, 2017, 1:10 p.m.
On Tue, 14 Mar 2017 09:16:31 -0700, Martin von Zweigbergk via Mercurial-devel wrote:
> # HG changeset patch
> # User Martin von Zweigbergk <martinvonz@google.com>
> # Date 1489466579 25200
> #      Mon Mar 13 21:42:59 2017 -0700
> # Node ID d17402c07698443c13b082df8a8635a82b83d097
> # Parent  3d3109339b57341b333c1112beb41dd281fa944a
> tests: duplicate test for pager for old extension and for in-core pager

These changes looks good. Queued, thanks.

Patch

diff --git a/tests/test-pager.t b/tests/test-pager-legacy.t
copy from tests/test-pager.t
copy to tests/test-pager-legacy.t
--- a/tests/test-pager.t
+++ b/tests/test-pager-legacy.t
@@ -26,7 +26,7 @@ 
   >   hg ci -m "modify a $x"
   > done
 
-By default diff and log are paged, but id is not:
+By default diff and log are paged, but summary is not:
 
   $ hg diff -c 2 --pager=yes
   paged! 'diff -r f4be7687d414 -r bce265549556 a\n'
@@ -50,16 +50,24 @@ 
   paged! 'summary:     modify a 9\n'
   paged! '\n'
 
-  $ hg id
-  46106edeeb38 tip
-
-We can enable the pager on id:
+BROKEN: should not be paged by default
+  $ hg summary
+  paged! 'parent: 10:46106edeeb38 tip\n'
+  paged! ' modify a 10\n'
+  paged! 'branch: default\n'
+  paged! 'commit: (clean)\n'
+  paged! 'update: (current)\n'
+  paged! 'phases: 11 draft\n'
 
-  $ hg --config pager.attend-id=yes id
-  paged! '46106edeeb38 tip\n'
+We can enable the pager on summary:
 
-Setting attend-$COMMAND to a false value works, even with pager in
-core:
+  $ hg --config pager.attend-summary=yes summary
+  paged! 'parent: 10:46106edeeb38 tip\n'
+  paged! ' modify a 10\n'
+  paged! 'branch: default\n'
+  paged! 'commit: (clean)\n'
+  paged! 'update: (current)\n'
+  paged! 'phases: 11 draft\n'
 
   $ hg --config pager.attend-diff=no diff -c 2
   diff -r f4be7687d414 -r bce265549556 a
@@ -70,6 +78,17 @@ 
    a 1
   +a 2
 
+If we completely change the attend list that's respected:
+BROKEN: diff should not be paged
+  $ hg --config pager.attend=summary diff -c 2
+  paged! 'diff -r f4be7687d414 -r bce265549556 a\n'
+  paged! '--- a/a\tThu Jan 01 00:00:00 1970 +0000\n'
+  paged! '+++ b/a\tThu Jan 01 00:00:00 1970 +0000\n'
+  paged! '@@ -1,2 +1,3 @@\n'
+  paged! ' a\n'
+  paged! ' a 1\n'
+  paged! '+a 2\n'
+
 If 'log' is in attend, then 'history' should also be paged:
   $ hg history --limit 2 --config pager.attend=log
   paged! 'changeset:   10:46106edeeb38\n'
@@ -84,17 +103,60 @@ 
   paged! 'summary:     modify a 9\n'
   paged! '\n'
 
+Possible bug: history is explicitly ignored in pager config, but
+because log is in the attend list it still gets pager treatment.
+
+  $ hg history --limit 2 --config pager.attend=log \
+  >   --config pager.ignore=history
+  paged! 'changeset:   10:46106edeeb38\n'
+  paged! 'tag:         tip\n'
+  paged! 'user:        test\n'
+  paged! 'date:        Thu Jan 01 00:00:00 1970 +0000\n'
+  paged! 'summary:     modify a 10\n'
+  paged! '\n'
+  paged! 'changeset:   9:6dd8ea7dd621\n'
+  paged! 'user:        test\n'
+  paged! 'date:        Thu Jan 01 00:00:00 1970 +0000\n'
+  paged! 'summary:     modify a 9\n'
+  paged! '\n'
+
+Possible bug: history is explicitly marked as attend-history=no, but
+it doesn't fail to get paged because log is still in the attend list.
+
+  $ hg history --limit 2 --config pager.attend-history=no
+  paged! 'changeset:   10:46106edeeb38\n'
+  paged! 'tag:         tip\n'
+  paged! 'user:        test\n'
+  paged! 'date:        Thu Jan 01 00:00:00 1970 +0000\n'
+  paged! 'summary:     modify a 10\n'
+  paged! '\n'
+  paged! 'changeset:   9:6dd8ea7dd621\n'
+  paged! 'user:        test\n'
+  paged! 'date:        Thu Jan 01 00:00:00 1970 +0000\n'
+  paged! 'summary:     modify a 9\n'
+  paged! '\n'
+
+Possible bug: disabling pager for log but enabling it for history
+doesn't result in history being paged.
+
+  $ hg history --limit 2 --config pager.attend-log=no \
+  > --config pager.attend-history=yes
+  changeset:   10:46106edeeb38
+  tag:         tip
+  user:        test
+  date:        Thu Jan 01 00:00:00 1970 +0000
+  summary:     modify a 10
+  
+  changeset:   9:6dd8ea7dd621
+  user:        test
+  date:        Thu Jan 01 00:00:00 1970 +0000
+  summary:     modify a 9
+  
 Pager should not start if stdout is not a tty.
 
   $ hg log -l1 -q --config ui.formatted=False
   10:46106edeeb38
 
-Pager should be disabled if pager.pager is empty (otherwise the output would
-be silently lost.)
-
-  $ hg log -l1 -q --config pager.pager=
-  10:46106edeeb38
-
 Pager with color enabled allows colors to come through by default,
 even though stdout is no longer a tty.
   $ cat >> $HGRCPATH <<EOF
@@ -170,61 +232,3 @@ 
   $ hg fortytwo --pager=on
   paged! '42\n'
   [42]
-
-A command that asks for paging using ui.pager() directly works:
-  $ hg blame a
-  paged! ' 0: a\n'
-  paged! ' 1: a 1\n'
-  paged! ' 2: a 2\n'
-  paged! ' 3: a 3\n'
-  paged! ' 4: a 4\n'
-  paged! ' 5: a 5\n'
-  paged! ' 6: a 6\n'
-  paged! ' 7: a 7\n'
-  paged! ' 8: a 8\n'
-  paged! ' 9: a 9\n'
-  paged! '10: a 10\n'
-but not with HGPLAIN
-  $ HGPLAIN=1 hg blame a
-   0: a
-   1: a 1
-   2: a 2
-   3: a 3
-   4: a 4
-   5: a 5
-   6: a 6
-   7: a 7
-   8: a 8
-   9: a 9
-  10: a 10
-explicit flags work too:
-  $ hg blame --pager=no a
-   0: a
-   1: a 1
-   2: a 2
-   3: a 3
-   4: a 4
-   5: a 5
-   6: a 6
-   7: a 7
-   8: a 8
-   9: a 9
-  10: a 10
-
-Put annotate in the ignore list for pager:
-  $ cat >> $HGRCPATH <<EOF
-  > [pager]
-  > ignore = annotate
-  > EOF
-  $ hg blame a
-   0: a
-   1: a 1
-   2: a 2
-   3: a 3
-   4: a 4
-   5: a 5
-   6: a 6
-   7: a 7
-   8: a 8
-   9: a 9
-  10: a 10
diff --git a/tests/test-pager.t b/tests/test-pager.t
--- a/tests/test-pager.t
+++ b/tests/test-pager.t
@@ -10,8 +10,6 @@ 
   $ cat >> $HGRCPATH <<EOF
   > [ui]
   > formatted = yes
-  > [extensions]
-  > pager=
   > [pager]
   > pager = python $TESTTMP/fakepager.py
   > EOF
@@ -55,12 +53,12 @@ 
 
 We can enable the pager on id:
 
+BROKEN: should be paged
   $ hg --config pager.attend-id=yes id
-  paged! '46106edeeb38 tip\n'
+  46106edeeb38 tip
 
 Setting attend-$COMMAND to a false value works, even with pager in
 core:
-
   $ hg --config pager.attend-diff=no diff -c 2
   diff -r f4be7687d414 -r bce265549556 a
   --- a/a	Thu Jan 01 00:00:00 1970 +0000
@@ -130,8 +128,9 @@ 
 
   $ hg echoa
   a
+BROKEN: should be paged
   $ hg --config pager.attend-echoa=yes echoa
-  paged! 'a\n'
+  a
 
 Pager works with hg aliases including environment variables.