##// END OF EJS Templates
context: stop catching RepoLookupError from namespace.singlenode()...
context: stop catching RepoLookupError from namespace.singlenode() As pointed out by Yuya, the RepoLookupError was there for catching errors from repo.branchtip(). However, since 885c0290f7d5 (localrepo: add ignoremissing parameter to branchtip, 2014-10-16), that should no longer happen. I think it should now be an error if a namespace raises a RepoLookupError, so we propagate the exception up and and make it easy to fix, rather than trying to interpret the changeid as nodeid prefix and raise a general "unknown revision '...'" error. I also don't think we should catch FilteredLookupError and LookupError from the changelog.rev() call, for the same reason as above: If a namespace returns a node that doesn't exist, we should provide a more helpful exception than "unknown revision '...'". Differential Revision: https://phab.mercurial-scm.org/D3145

File last commit:

r35384:82c37623 default
r37409:3198d5a2 default
Show More
test-diff-color.t
392 lines | 10.4 KiB | text/troff | Tads3Lexer
/ tests / test-diff-color.t
Matt Mackall
tests: unify test-diff-color
r12415 Setup
Yuya Nishihara
tests: write hgrc of more than two lines by using shell heredoc...
r23172 $ cat <<EOF >> $HGRCPATH
Pierre-Yves David
color: add a 'ui.color' option to control color behavior...
r31110 > [ui]
Pierre-Yves David
color: special case 'always' in 'ui.color'...
r32104 > color = yes
Pierre-Yves David
color: turn 'ui.color' into a boolean (auto or off)...
r32103 > formatted = always
Matt Harbison
test-diff-color: disable pager for expected output on Windows (issue5555)...
r32122 > paginate = never
Yuya Nishihara
tests: write hgrc of more than two lines by using shell heredoc...
r23172 > [color]
> mode = ansi
> EOF
Matt Mackall
tests: unify test-diff-color
r12415 $ hg init repo
$ cd repo
$ cat > a <<EOF
> c
> c
> a
> a
> b
> a
> a
> c
> c
> EOF
$ hg ci -Am adda
adding a
$ cat > a <<EOF
> c
> c
> a
> a
> dd
> a
> a
> c
> c
> EOF
default context
Pierre-Yves David
color: add a 'ui.color' option to control color behavior...
r31110 $ hg diff --nodates
Mads Kiilerich
tests: use (esc) for all non-ASCII test output
r12942 \x1b[0;1mdiff -r cf9f4ba66af2 a\x1b[0m (esc)
\x1b[0;31;1m--- a/a\x1b[0m (esc)
\x1b[0;32;1m+++ b/a\x1b[0m (esc)
\x1b[0;35m@@ -2,7 +2,7 @@\x1b[0m (esc)
Matt Mackall
tests: unify test-diff-color
r12415 c
a
a
Mads Kiilerich
tests: use (esc) for all non-ASCII test output
r12942 \x1b[0;31m-b\x1b[0m (esc)
\x1b[0;32m+dd\x1b[0m (esc)
Matt Mackall
tests: unify test-diff-color
r12415 a
a
c
Pierre-Yves David
color: turn 'ui.color' into a boolean (auto or off)...
r32103 (check that 'ui.color=yes' match '--color=auto')
$ hg diff --nodates --config ui.formatted=no
diff -r cf9f4ba66af2 a
--- a/a
+++ b/a
@@ -2,7 +2,7 @@
c
a
a
-b
+dd
a
a
c
(check that 'ui.color=no' disable color)
$ hg diff --nodates --config ui.formatted=yes --config ui.color=no
diff -r cf9f4ba66af2 a
--- a/a
+++ b/a
@@ -2,7 +2,7 @@
c
a
a
-b
+dd
a
a
c
Pierre-Yves David
color: special case 'always' in 'ui.color'...
r32104 (check that 'ui.color=always' force color)
$ hg diff --nodates --config ui.formatted=no --config ui.color=always
\x1b[0;1mdiff -r cf9f4ba66af2 a\x1b[0m (esc)
\x1b[0;31;1m--- a/a\x1b[0m (esc)
\x1b[0;32;1m+++ b/a\x1b[0m (esc)
\x1b[0;35m@@ -2,7 +2,7 @@\x1b[0m (esc)
c
a
a
\x1b[0;31m-b\x1b[0m (esc)
\x1b[0;32m+dd\x1b[0m (esc)
a
a
c
Matt Mackall
tests: unify test-diff-color
r12415 --unified=2
Pierre-Yves David
color: add a 'ui.color' option to control color behavior...
r31110 $ hg diff --nodates -U 2
Mads Kiilerich
tests: use (esc) for all non-ASCII test output
r12942 \x1b[0;1mdiff -r cf9f4ba66af2 a\x1b[0m (esc)
\x1b[0;31;1m--- a/a\x1b[0m (esc)
\x1b[0;32;1m+++ b/a\x1b[0m (esc)
\x1b[0;35m@@ -3,5 +3,5 @@\x1b[0m (esc)
Matt Mackall
tests: unify test-diff-color
r12415 a
a
Mads Kiilerich
tests: use (esc) for all non-ASCII test output
r12942 \x1b[0;31m-b\x1b[0m (esc)
\x1b[0;32m+dd\x1b[0m (esc)
Matt Mackall
tests: unify test-diff-color
r12415 a
a
diffstat
Pierre-Yves David
color: add a 'ui.color' option to control color behavior...
r31110 $ hg diff --stat
Mads Kiilerich
tests: use (esc) for all non-ASCII test output
r12942 a | 2 \x1b[0;32m+\x1b[0m\x1b[0;31m-\x1b[0m (esc)
Matt Mackall
tests: unify test-diff-color
r12415 1 files changed, 1 insertions(+), 1 deletions(-)
Yuya Nishihara
tests: write hgrc of more than two lines by using shell heredoc...
r23172 $ cat <<EOF >> $HGRCPATH
Pierre-Yves David
color: add a 'ui.color' option to control color behavior...
r31110 > [extensions]
Yuya Nishihara
tests: write hgrc of more than two lines by using shell heredoc...
r23172 > record =
> [ui]
> interactive = true
> [diff]
> git = True
> EOF
Matt Mackall
tests: unify test-diff-color
r12415
Mads Kiilerich
tests: convert some 'hghave execbit' to #if...
r16899 #if execbit
Matt Mackall
tests: unify test-diff-color
r12415 record
Mads Kiilerich
tests: use 'hghave execbit' for tests that manipulate x bit in file system
r15442 $ chmod +x a
Pierre-Yves David
color: add a 'ui.color' option to control color behavior...
r31110 $ hg record -m moda a <<EOF
Matt Mackall
tests: unify test-diff-color
r12415 > y
> y
> EOF
Mads Kiilerich
tests: use (esc) for all non-ASCII test output
r12942 \x1b[0;1mdiff --git a/a b/a\x1b[0m (esc)
\x1b[0;36;1mold mode 100644\x1b[0m (esc)
\x1b[0;36;1mnew mode 100755\x1b[0m (esc)
Matt Mackall
tests: unify test-diff-color
r12415 1 hunks, 1 lines changed
Mads Kiilerich
ui: show prompt choice if input is not a tty but is forced to be interactive...
r22589 \x1b[0;33mexamine changes to 'a'? [Ynesfdaq?]\x1b[0m y (esc)
timeless
record: turn on showfunc...
r27411 \x1b[0;35m@@ -2,7 +2,7 @@ c\x1b[0m (esc)
Matt Mackall
tests: unify test-diff-color
r12415 c
a
a
Mads Kiilerich
tests: use (esc) for all non-ASCII test output
r12942 \x1b[0;31m-b\x1b[0m (esc)
\x1b[0;32m+dd\x1b[0m (esc)
Matt Mackall
tests: unify test-diff-color
r12415 a
a
c
Mads Kiilerich
ui: show prompt choice if input is not a tty but is forced to be interactive...
r22589 \x1b[0;33mrecord this change to 'a'? [Ynesfdaq?]\x1b[0m y (esc)
Mads Kiilerich
tests: cleanup of echo statements left over from test conversion
r15243
Matt Mackall
tests: unify test-diff-color
r12415 $ echo "[extensions]" >> $HGRCPATH
$ echo "mq=" >> $HGRCPATH
$ hg rollback
Gilles Moris
rollback: clarifies the message about the reverted state (issue2628)...
r13446 repository tip rolled back to revision 0 (undo commit)
working directory now based on revision 0
Matt Mackall
tests: unify test-diff-color
r12415
qrecord
Pierre-Yves David
color: add a 'ui.color' option to control color behavior...
r31110 $ hg qrecord -m moda patch <<EOF
Matt Mackall
tests: unify test-diff-color
r12415 > y
> y
> EOF
Mads Kiilerich
tests: use (esc) for all non-ASCII test output
r12942 \x1b[0;1mdiff --git a/a b/a\x1b[0m (esc)
\x1b[0;36;1mold mode 100644\x1b[0m (esc)
\x1b[0;36;1mnew mode 100755\x1b[0m (esc)
Matt Mackall
tests: unify test-diff-color
r12415 1 hunks, 1 lines changed
Mads Kiilerich
ui: show prompt choice if input is not a tty but is forced to be interactive...
r22589 \x1b[0;33mexamine changes to 'a'? [Ynesfdaq?]\x1b[0m y (esc)
timeless
record: turn on showfunc...
r27411 \x1b[0;35m@@ -2,7 +2,7 @@ c\x1b[0m (esc)
Matt Mackall
tests: unify test-diff-color
r12415 c
a
a
Mads Kiilerich
tests: use (esc) for all non-ASCII test output
r12942 \x1b[0;31m-b\x1b[0m (esc)
\x1b[0;32m+dd\x1b[0m (esc)
Matt Mackall
tests: unify test-diff-color
r12415 a
a
c
Mads Kiilerich
ui: show prompt choice if input is not a tty but is forced to be interactive...
r22589 \x1b[0;33mrecord this change to 'a'? [Ynesfdaq?]\x1b[0m y (esc)
Mads Kiilerich
tests: convert some 'hghave execbit' to #if...
r16899
FUJIWARA Katsunori
subrepo: add argument to "diff()" to pass "ui" of caller side (issue3712) (API)...
r18006 $ hg qpop -a
popping patch
patch queue now empty
Mads Kiilerich
tests: convert some 'hghave execbit' to #if...
r16899 #endif
Mads Kiilerich
tests: add missing trailing 'cd ..'...
r16913
FUJIWARA Katsunori
subrepo: add argument to "diff()" to pass "ui" of caller side (issue3712) (API)...
r18006 issue3712: test colorization of subrepo diff
$ hg init sub
$ echo b > sub/b
$ hg -R sub commit -Am 'create sub'
adding b
$ echo 'sub = sub' > .hgsub
$ hg add .hgsub
$ hg commit -m 'add subrepo sub'
$ echo aa >> a
$ echo bb >> sub/b
Pierre-Yves David
color: add a 'ui.color' option to control color behavior...
r31110 $ hg diff -S
FUJIWARA Katsunori
subrepo: add argument to "diff()" to pass "ui" of caller side (issue3712) (API)...
r18006 \x1b[0;1mdiff --git a/a b/a\x1b[0m (esc)
\x1b[0;31;1m--- a/a\x1b[0m (esc)
\x1b[0;32;1m+++ b/a\x1b[0m (esc)
\x1b[0;35m@@ -7,3 +7,4 @@\x1b[0m (esc)
a
c
c
\x1b[0;32m+aa\x1b[0m (esc)
Simon Heimberg
tests: remove glob lines which unnecessary match / for \ on windows...
r18720 \x1b[0;1mdiff --git a/sub/b b/sub/b\x1b[0m (esc)
FUJIWARA Katsunori
subrepo: add argument to "diff()" to pass "ui" of caller side (issue3712) (API)...
r18006 \x1b[0;31;1m--- a/sub/b\x1b[0m (esc)
\x1b[0;32;1m+++ b/sub/b\x1b[0m (esc)
\x1b[0;35m@@ -1,1 +1,2 @@\x1b[0m (esc)
b
\x1b[0;32m+bb\x1b[0m (esc)
Jordi Gutiérrez Hermoso
patch: enable diff.tab markup for the color extension...
r22460 test tabs
$ cat >> a <<EOF
> one tab
> two tabs
> end tab
> mid tab
> all tabs
> EOF
Pierre-Yves David
color: add a 'ui.color' option to control color behavior...
r31110 $ hg diff --nodates
Jordi Gutiérrez Hermoso
patch: enable diff.tab markup for the color extension...
r22460 \x1b[0;1mdiff --git a/a b/a\x1b[0m (esc)
\x1b[0;31;1m--- a/a\x1b[0m (esc)
\x1b[0;32;1m+++ b/a\x1b[0m (esc)
\x1b[0;35m@@ -7,3 +7,9 @@\x1b[0m (esc)
a
c
c
\x1b[0;32m+aa\x1b[0m (esc)
\x1b[0;32m+\x1b[0m \x1b[0;32mone tab\x1b[0m (esc)
\x1b[0;32m+\x1b[0m \x1b[0;32mtwo tabs\x1b[0m (esc)
\x1b[0;32m+end tab\x1b[0m\x1b[0;1;41m \x1b[0m (esc)
\x1b[0;32m+mid\x1b[0m \x1b[0;32mtab\x1b[0m (esc)
\x1b[0;32m+\x1b[0m \x1b[0;32mall\x1b[0m \x1b[0;32mtabs\x1b[0m\x1b[0;1;41m \x1b[0m (esc)
$ echo "[color]" >> $HGRCPATH
$ echo "diff.tab = bold magenta" >> $HGRCPATH
Pierre-Yves David
color: add a 'ui.color' option to control color behavior...
r31110 $ hg diff --nodates
Jordi Gutiérrez Hermoso
patch: enable diff.tab markup for the color extension...
r22460 \x1b[0;1mdiff --git a/a b/a\x1b[0m (esc)
\x1b[0;31;1m--- a/a\x1b[0m (esc)
\x1b[0;32;1m+++ b/a\x1b[0m (esc)
\x1b[0;35m@@ -7,3 +7,9 @@\x1b[0m (esc)
a
c
c
\x1b[0;32m+aa\x1b[0m (esc)
\x1b[0;32m+\x1b[0m\x1b[0;1;35m \x1b[0m\x1b[0;32mone tab\x1b[0m (esc)
\x1b[0;32m+\x1b[0m\x1b[0;1;35m \x1b[0m\x1b[0;32mtwo tabs\x1b[0m (esc)
\x1b[0;32m+end tab\x1b[0m\x1b[0;1;41m \x1b[0m (esc)
\x1b[0;32m+mid\x1b[0m\x1b[0;1;35m \x1b[0m\x1b[0;32mtab\x1b[0m (esc)
\x1b[0;32m+\x1b[0m\x1b[0;1;35m \x1b[0m\x1b[0;32mall\x1b[0m\x1b[0;1;35m \x1b[0m\x1b[0;32mtabs\x1b[0m\x1b[0;1;41m \x1b[0m (esc)
Mads Kiilerich
tests: add missing trailing 'cd ..'...
r16913 $ cd ..
Matthieu Laneuville
patch: add within-line color diff capacity...
r35278
test inline color diff
$ hg init inline
$ cd inline
$ cat > file1 << EOF
> this is the first line
> this is the second line
> third line starts with space
> + starts with a plus sign
Matthieu Laneuville
patch: move part of tabsplitter logic in _inlinediff...
r35329 > this one with one tab
> now with full two tabs
> now tabs everywhere, much fun
Matthieu Laneuville
patch: add within-line color diff capacity...
r35278 >
> this line won't change
>
> two lines are going to
> be changed into three!
>
> three of those lines will
> collapse onto one
> (to see if it works)
> EOF
$ hg add file1
$ hg ci -m 'commit'
Matthieu Laneuville
patch: move part of tabsplitter logic in _inlinediff...
r35329
Matthieu Laneuville
patch: add within-line color diff capacity...
r35278 $ cat > file1 << EOF
> that is the first paragraph
> this is the second line
> third line starts with space
> - starts with a minus sign
Matthieu Laneuville
patch: move part of tabsplitter logic in _inlinediff...
r35329 > this one with two tab
> now with full three tabs
> now there are tabs everywhere, much fun
Matthieu Laneuville
patch: add within-line color diff capacity...
r35278 >
> this line won't change
>
> two lines are going to
> (entirely magically,
> assuming this works)
> be changed into four!
>
> three of those lines have
> collapsed onto one
> EOF
$ hg diff --config experimental.worddiff=False --color=debug
[diff.diffline|diff --git a/file1 b/file1]
[diff.file_a|--- a/file1]
[diff.file_b|+++ b/file1]
Matthieu Laneuville
patch: move part of tabsplitter logic in _inlinediff...
r35329 [diff.hunk|@@ -1,16 +1,17 @@]
Matthieu Laneuville
patch: add within-line color diff capacity...
r35278 [diff.deleted|-this is the first line]
[diff.deleted|-this is the second line]
[diff.deleted|- third line starts with space]
[diff.deleted|-+ starts with a plus sign]
Matthieu Laneuville
patch: move part of tabsplitter logic in _inlinediff...
r35329 [diff.deleted|-][diff.tab| ][diff.deleted|this one with one tab]
[diff.deleted|-][diff.tab| ][diff.deleted|now with full two tabs]
[diff.deleted|-][diff.tab| ][diff.deleted|now tabs][diff.tab| ][diff.deleted|everywhere, much fun]
Matthieu Laneuville
patch: add within-line color diff capacity...
r35278 [diff.inserted|+that is the first paragraph]
[diff.inserted|+ this is the second line]
[diff.inserted|+third line starts with space]
[diff.inserted|+- starts with a minus sign]
Matthieu Laneuville
patch: move part of tabsplitter logic in _inlinediff...
r35329 [diff.inserted|+][diff.tab| ][diff.inserted|this one with two tab]
[diff.inserted|+][diff.tab| ][diff.inserted|now with full three tabs]
[diff.inserted|+][diff.tab| ][diff.inserted|now there are tabs][diff.tab| ][diff.inserted|everywhere, much fun]
Matthieu Laneuville
patch: add within-line color diff capacity...
r35278
this line won't change
two lines are going to
[diff.deleted|-be changed into three!]
[diff.inserted|+(entirely magically,]
[diff.inserted|+ assuming this works)]
[diff.inserted|+be changed into four!]
[diff.deleted|-three of those lines will]
[diff.deleted|-collapse onto one]
[diff.deleted|-(to see if it works)]
[diff.inserted|+three of those lines have]
[diff.inserted|+collapsed onto one]
$ hg diff --config experimental.worddiff=True --color=debug
[diff.diffline|diff --git a/file1 b/file1]
[diff.file_a|--- a/file1]
[diff.file_b|+++ b/file1]
Matthieu Laneuville
patch: move part of tabsplitter logic in _inlinediff...
r35329 [diff.hunk|@@ -1,16 +1,17 @@]
Matthieu Laneuville
patch: add within-line color diff capacity...
r35278 [diff.deleted|-this is the ][diff.deleted.highlight|first][diff.deleted| line]
[diff.deleted|-this is the second line]
[diff.deleted|-][diff.deleted.highlight| ][diff.deleted|third line starts with space]
[diff.deleted|-][diff.deleted.highlight|+][diff.deleted| starts with a ][diff.deleted.highlight|plus][diff.deleted| sign]
Matthieu Laneuville
patch: move part of tabsplitter logic in _inlinediff...
r35329 [diff.deleted|-][diff.tab| ][diff.deleted|this one with ][diff.deleted.highlight|one][diff.deleted| tab]
[diff.deleted|-][diff.tab| ][diff.deleted|now with full ][diff.deleted.highlight|two][diff.deleted| tabs]
[diff.deleted|-][diff.tab| ][diff.deleted|now tabs][diff.tab| ][diff.deleted|everywhere, much fun]
Matthieu Laneuville
patch: add within-line color diff capacity...
r35278 [diff.inserted|+that is the first paragraph]
[diff.inserted|+][diff.inserted.highlight| ][diff.inserted|this is the ][diff.inserted.highlight|second][diff.inserted| line]
[diff.inserted|+third line starts with space]
[diff.inserted|+][diff.inserted.highlight|-][diff.inserted| starts with a ][diff.inserted.highlight|minus][diff.inserted| sign]
Matthieu Laneuville
patch: move part of tabsplitter logic in _inlinediff...
r35329 [diff.inserted|+][diff.tab| ][diff.inserted|this one with ][diff.inserted.highlight|two][diff.inserted| tab]
[diff.inserted|+][diff.tab| ][diff.inserted|now with full ][diff.inserted.highlight|three][diff.inserted| tabs]
[diff.inserted|+][diff.tab| ][diff.inserted|now][diff.inserted.highlight| there are][diff.inserted| tabs][diff.tab| ][diff.inserted|everywhere, much fun]
Matthieu Laneuville
patch: add within-line color diff capacity...
r35278
this line won't change
two lines are going to
[diff.deleted|-be changed into ][diff.deleted.highlight|three][diff.deleted|!]
[diff.inserted|+(entirely magically,]
[diff.inserted|+ assuming this works)]
[diff.inserted|+be changed into ][diff.inserted.highlight|four][diff.inserted|!]
[diff.deleted|-three of those lines ][diff.deleted.highlight|will]
[diff.deleted|-][diff.deleted.highlight|collapse][diff.deleted| onto one]
[diff.deleted|-(to see if it works)]
[diff.inserted|+three of those lines ][diff.inserted.highlight|have]
[diff.inserted|+][diff.inserted.highlight|collapsed][diff.inserted| onto one]
Yuya Nishihara
patch: do not break up multibyte character when highlighting word...
r35384
multibyte character shouldn't be broken up in word diff:
$ $PYTHON <<'EOF'
> with open("utf8", "wb") as f:
> f.write(b"blah \xe3\x82\xa2 blah\n")
> EOF
$ hg ci -Am 'add utf8 char' utf8
$ $PYTHON <<'EOF'
> with open("utf8", "wb") as f:
> f.write(b"blah \xe3\x82\xa4 blah\n")
> EOF
$ hg ci -m 'slightly change utf8 char' utf8
$ hg diff --config experimental.worddiff=True --color=debug -c.
[diff.diffline|diff --git a/utf8 b/utf8]
[diff.file_a|--- a/utf8]
[diff.file_b|+++ b/utf8]
[diff.hunk|@@ -1,1 +1,1 @@]
[diff.deleted|-blah ][diff.deleted.highlight|\xe3\x82\xa2][diff.deleted| blah] (esc)
[diff.inserted|+blah ][diff.inserted.highlight|\xe3\x82\xa4][diff.inserted| blah] (esc)