test-pager-legacy.t
232 lines
| 6.3 KiB
| text/troff
|
Tads3Lexer
/ tests / test-pager-legacy.t
Martin von Zweigbergk
|
r31405 | $ cat >> fakepager.py <<EOF | ||
> import sys | ||||
> for line in sys.stdin: | ||||
> sys.stdout.write('paged! %r\n' % line) | ||||
> EOF | ||||
Enable ui.formatted because pager won't fire without it, and set up | ||||
pager and tell it to use our fake pager that lets us see when the | ||||
pager was running. | ||||
$ cat >> $HGRCPATH <<EOF | ||||
> [ui] | ||||
> formatted = yes | ||||
> [extensions] | ||||
> pager= | ||||
> [pager] | ||||
> pager = python $TESTTMP/fakepager.py | ||||
> EOF | ||||
$ hg init repo | ||||
$ cd repo | ||||
$ echo a >> a | ||||
$ hg add a | ||||
$ hg ci -m 'add a' | ||||
$ for x in `python $TESTDIR/seq.py 1 10`; do | ||||
> echo a $x >> a | ||||
> hg ci -m "modify a $x" | ||||
> done | ||||
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' | ||||
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' | ||||
$ hg log --limit 2 | ||||
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' | ||||
$ hg summary | ||||
Martin von Zweigbergk
|
r31406 | parent: 10:46106edeeb38 tip | ||
modify a 10 | ||||
branch: default | ||||
commit: (clean) | ||||
update: (current) | ||||
phases: 11 draft | ||||
Martin von Zweigbergk
|
r31405 | |||
We can enable the pager on summary: | ||||
$ 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 | ||||
--- a/a Thu Jan 01 00:00:00 1970 +0000 | ||||
+++ b/a Thu Jan 01 00:00:00 1970 +0000 | ||||
@@ -1,2 +1,3 @@ | ||||
a | ||||
a 1 | ||||
+a 2 | ||||
If we completely change the attend list that's respected: | ||||
$ hg --config pager.attend=summary diff -c 2 | ||||
Martin von Zweigbergk
|
r31406 | diff -r f4be7687d414 -r bce265549556 a | ||
--- a/a Thu Jan 01 00:00:00 1970 +0000 | ||||
+++ b/a Thu Jan 01 00:00:00 1970 +0000 | ||||
@@ -1,2 +1,3 @@ | ||||
a | ||||
a 1 | ||||
+a 2 | ||||
Martin von Zweigbergk
|
r31405 | |||
If 'log' is in attend, then 'history' should also be paged: | ||||
$ hg history --limit 2 --config pager.attend=log | ||||
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 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 with color enabled allows colors to come through by default, | ||||
even though stdout is no longer a tty. | ||||
$ cat >> $HGRCPATH <<EOF | ||||
> [extensions] | ||||
> color= | ||||
> [color] | ||||
> mode = ansi | ||||
> EOF | ||||
$ hg log --limit 3 | ||||
paged! '\x1b[0;33mchangeset: 10:46106edeeb38\x1b[0m\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! '\x1b[0;33mchangeset: 9:6dd8ea7dd621\x1b[0m\n' | ||||
paged! 'user: test\n' | ||||
paged! 'date: Thu Jan 01 00:00:00 1970 +0000\n' | ||||
paged! 'summary: modify a 9\n' | ||||
paged! '\n' | ||||
paged! '\x1b[0;33mchangeset: 8:cff05a6312fe\x1b[0m\n' | ||||
paged! 'user: test\n' | ||||
paged! 'date: Thu Jan 01 00:00:00 1970 +0000\n' | ||||
paged! 'summary: modify a 8\n' | ||||
paged! '\n' | ||||
Pager works with shell aliases. | ||||
$ cat >> $HGRCPATH <<EOF | ||||
> [alias] | ||||
> echoa = !echo a | ||||
> EOF | ||||
$ hg echoa | ||||
a | ||||
$ hg --config pager.attend-echoa=yes echoa | ||||
paged! 'a\n' | ||||
Pager works with hg aliases including environment variables. | ||||
$ cat >> $HGRCPATH <<'EOF' | ||||
> [alias] | ||||
> printa = log -T "$A\n" -r 0 | ||||
> EOF | ||||
$ A=1 hg --config pager.attend-printa=yes printa | ||||
paged! '1\n' | ||||
$ A=2 hg --config pager.attend-printa=yes printa | ||||
paged! '2\n' | ||||
Something that's explicitly attended is still not paginated if the | ||||
pager is globally set to off using a flag: | ||||
$ A=2 hg --config pager.attend-printa=yes printa --pager=no | ||||
2 | ||||
Pager should not override the exit code of other commands | ||||
$ cat >> $TESTTMP/fortytwo.py <<'EOF' | ||||
> from mercurial import cmdutil, commands | ||||
> cmdtable = {} | ||||
> command = cmdutil.command(cmdtable) | ||||
> @command('fortytwo', [], 'fortytwo', norepo=True) | ||||
> def fortytwo(ui, *opts): | ||||
> ui.write('42\n') | ||||
> return 42 | ||||
> EOF | ||||
$ cat >> $HGRCPATH <<'EOF' | ||||
> [extensions] | ||||
> fortytwo = $TESTTMP/fortytwo.py | ||||
> EOF | ||||
$ hg fortytwo --pager=on | ||||
paged! '42\n' | ||||
[42] | ||||