##// END OF EJS Templates
strip: incrementally update the branchheads cache after a strip...
strip: incrementally update the branchheads cache after a strip This function augments strip to incrementally update the branchheads cache rather than recompute it from scratch. This speeds up the performance of strip and rebase on repos with long history. The performance optimization only happens if the revisions stripped are all on the same branch and the parents of the stripped revisions are also on that same branch. This adds a few test cases, particularly one that reproduces the extra heads that mpm observed.

File last commit:

r16913:f2719b38 default
r17013:c8eda7bb default
Show More
test-status-color.t
300 lines | 8.8 KiB | text/troff | Tads3Lexer
/ tests / test-status-color.t
Mads Kiilerich
tests: skip color test on platforms without tic
r15539 $ "$TESTDIR/hghave" tic || exit 80
Nicolas Dumazet
tests: unify test-status-color
r11783 $ echo "[extensions]" >> $HGRCPATH
$ echo "color=" >> $HGRCPATH
$ echo "[color]" >> $HGRCPATH
$ echo "mode=ansi" >> $HGRCPATH
Patrick Mezard
test-status-color: fix terminfo code compatibility problem...
r13997 Terminfo codes compatibility fix
$ echo "color.none=0" >> $HGRCPATH
Nicolas Dumazet
tests: unify test-status-color
r11783
$ hg init repo1
$ cd repo1
$ mkdir a b a/1 b/1 b/2
$ touch in_root a/in_a b/in_b a/1/in_a_1 b/1/in_b_1 b/2/in_b_2
hg status in repo root:
$ hg status --color=always
Mads Kiilerich
tests: use (esc) for all non-ASCII test output
r12942 \x1b[0;35;1;4m? a/1/in_a_1\x1b[0m (esc)
\x1b[0;35;1;4m? a/in_a\x1b[0m (esc)
\x1b[0;35;1;4m? b/1/in_b_1\x1b[0m (esc)
\x1b[0;35;1;4m? b/2/in_b_2\x1b[0m (esc)
\x1b[0;35;1;4m? b/in_b\x1b[0m (esc)
\x1b[0;35;1;4m? in_root\x1b[0m (esc)
Nicolas Dumazet
tests: unify test-status-color
r11783
hg status . in repo root:
$ hg status --color=always .
Mads Kiilerich
tests: use (esc) for all non-ASCII test output
r12942 \x1b[0;35;1;4m? a/1/in_a_1\x1b[0m (esc)
\x1b[0;35;1;4m? a/in_a\x1b[0m (esc)
\x1b[0;35;1;4m? b/1/in_b_1\x1b[0m (esc)
\x1b[0;35;1;4m? b/2/in_b_2\x1b[0m (esc)
\x1b[0;35;1;4m? b/in_b\x1b[0m (esc)
\x1b[0;35;1;4m? in_root\x1b[0m (esc)
Nicolas Dumazet
tests: unify test-status-color
r11783
$ hg status --color=always --cwd a
Mads Kiilerich
tests: use (esc) for all non-ASCII test output
r12942 \x1b[0;35;1;4m? a/1/in_a_1\x1b[0m (esc)
\x1b[0;35;1;4m? a/in_a\x1b[0m (esc)
\x1b[0;35;1;4m? b/1/in_b_1\x1b[0m (esc)
\x1b[0;35;1;4m? b/2/in_b_2\x1b[0m (esc)
\x1b[0;35;1;4m? b/in_b\x1b[0m (esc)
\x1b[0;35;1;4m? in_root\x1b[0m (esc)
Nicolas Dumazet
tests: unify test-status-color
r11783 $ hg status --color=always --cwd a .
Mads Kiilerich
tests: use (esc) for all non-ASCII test output
r12942 \x1b[0;35;1;4m? 1/in_a_1\x1b[0m (esc)
\x1b[0;35;1;4m? in_a\x1b[0m (esc)
Nicolas Dumazet
tests: unify test-status-color
r11783 $ hg status --color=always --cwd a ..
Mads Kiilerich
tests: use (esc) for all non-ASCII test output
r12942 \x1b[0;35;1;4m? 1/in_a_1\x1b[0m (esc)
\x1b[0;35;1;4m? in_a\x1b[0m (esc)
\x1b[0;35;1;4m? ../b/1/in_b_1\x1b[0m (esc)
\x1b[0;35;1;4m? ../b/2/in_b_2\x1b[0m (esc)
\x1b[0;35;1;4m? ../b/in_b\x1b[0m (esc)
\x1b[0;35;1;4m? ../in_root\x1b[0m (esc)
Nicolas Dumazet
tests: unify test-status-color
r11783
$ hg status --color=always --cwd b
Mads Kiilerich
tests: use (esc) for all non-ASCII test output
r12942 \x1b[0;35;1;4m? a/1/in_a_1\x1b[0m (esc)
\x1b[0;35;1;4m? a/in_a\x1b[0m (esc)
\x1b[0;35;1;4m? b/1/in_b_1\x1b[0m (esc)
\x1b[0;35;1;4m? b/2/in_b_2\x1b[0m (esc)
\x1b[0;35;1;4m? b/in_b\x1b[0m (esc)
\x1b[0;35;1;4m? in_root\x1b[0m (esc)
Nicolas Dumazet
tests: unify test-status-color
r11783 $ hg status --color=always --cwd b .
Mads Kiilerich
tests: use (esc) for all non-ASCII test output
r12942 \x1b[0;35;1;4m? 1/in_b_1\x1b[0m (esc)
\x1b[0;35;1;4m? 2/in_b_2\x1b[0m (esc)
\x1b[0;35;1;4m? in_b\x1b[0m (esc)
Nicolas Dumazet
tests: unify test-status-color
r11783 $ hg status --color=always --cwd b ..
Mads Kiilerich
tests: use (esc) for all non-ASCII test output
r12942 \x1b[0;35;1;4m? ../a/1/in_a_1\x1b[0m (esc)
\x1b[0;35;1;4m? ../a/in_a\x1b[0m (esc)
\x1b[0;35;1;4m? 1/in_b_1\x1b[0m (esc)
\x1b[0;35;1;4m? 2/in_b_2\x1b[0m (esc)
\x1b[0;35;1;4m? in_b\x1b[0m (esc)
\x1b[0;35;1;4m? ../in_root\x1b[0m (esc)
Nicolas Dumazet
tests: unify test-status-color
r11783
$ hg status --color=always --cwd a/1
Mads Kiilerich
tests: use (esc) for all non-ASCII test output
r12942 \x1b[0;35;1;4m? a/1/in_a_1\x1b[0m (esc)
\x1b[0;35;1;4m? a/in_a\x1b[0m (esc)
\x1b[0;35;1;4m? b/1/in_b_1\x1b[0m (esc)
\x1b[0;35;1;4m? b/2/in_b_2\x1b[0m (esc)
\x1b[0;35;1;4m? b/in_b\x1b[0m (esc)
\x1b[0;35;1;4m? in_root\x1b[0m (esc)
Nicolas Dumazet
tests: unify test-status-color
r11783 $ hg status --color=always --cwd a/1 .
Mads Kiilerich
tests: use (esc) for all non-ASCII test output
r12942 \x1b[0;35;1;4m? in_a_1\x1b[0m (esc)
Nicolas Dumazet
tests: unify test-status-color
r11783 $ hg status --color=always --cwd a/1 ..
Mads Kiilerich
tests: use (esc) for all non-ASCII test output
r12942 \x1b[0;35;1;4m? in_a_1\x1b[0m (esc)
\x1b[0;35;1;4m? ../in_a\x1b[0m (esc)
Nicolas Dumazet
tests: unify test-status-color
r11783
$ hg status --color=always --cwd b/1
Mads Kiilerich
tests: use (esc) for all non-ASCII test output
r12942 \x1b[0;35;1;4m? a/1/in_a_1\x1b[0m (esc)
\x1b[0;35;1;4m? a/in_a\x1b[0m (esc)
\x1b[0;35;1;4m? b/1/in_b_1\x1b[0m (esc)
\x1b[0;35;1;4m? b/2/in_b_2\x1b[0m (esc)
\x1b[0;35;1;4m? b/in_b\x1b[0m (esc)
\x1b[0;35;1;4m? in_root\x1b[0m (esc)
Nicolas Dumazet
tests: unify test-status-color
r11783 $ hg status --color=always --cwd b/1 .
Mads Kiilerich
tests: use (esc) for all non-ASCII test output
r12942 \x1b[0;35;1;4m? in_b_1\x1b[0m (esc)
Nicolas Dumazet
tests: unify test-status-color
r11783 $ hg status --color=always --cwd b/1 ..
Mads Kiilerich
tests: use (esc) for all non-ASCII test output
r12942 \x1b[0;35;1;4m? in_b_1\x1b[0m (esc)
\x1b[0;35;1;4m? ../2/in_b_2\x1b[0m (esc)
\x1b[0;35;1;4m? ../in_b\x1b[0m (esc)
Nicolas Dumazet
tests: unify test-status-color
r11783
$ hg status --color=always --cwd b/2
Mads Kiilerich
tests: use (esc) for all non-ASCII test output
r12942 \x1b[0;35;1;4m? a/1/in_a_1\x1b[0m (esc)
\x1b[0;35;1;4m? a/in_a\x1b[0m (esc)
\x1b[0;35;1;4m? b/1/in_b_1\x1b[0m (esc)
\x1b[0;35;1;4m? b/2/in_b_2\x1b[0m (esc)
\x1b[0;35;1;4m? b/in_b\x1b[0m (esc)
\x1b[0;35;1;4m? in_root\x1b[0m (esc)
Nicolas Dumazet
tests: unify test-status-color
r11783 $ hg status --color=always --cwd b/2 .
Mads Kiilerich
tests: use (esc) for all non-ASCII test output
r12942 \x1b[0;35;1;4m? in_b_2\x1b[0m (esc)
Nicolas Dumazet
tests: unify test-status-color
r11783 $ hg status --color=always --cwd b/2 ..
Mads Kiilerich
tests: use (esc) for all non-ASCII test output
r12942 \x1b[0;35;1;4m? ../1/in_b_1\x1b[0m (esc)
\x1b[0;35;1;4m? in_b_2\x1b[0m (esc)
\x1b[0;35;1;4m? ../in_b\x1b[0m (esc)
Nicolas Dumazet
tests: unify test-status-color
r11783 $ cd ..
$ hg init repo2
$ cd repo2
$ touch modified removed deleted ignored
$ echo "^ignored$" > .hgignore
Martin Geisler
tests: remove unneeded -d flags...
r12156 $ hg ci -A -m 'initial checkin'
Nicolas Dumazet
tests: unify test-status-color
r11783 adding .hgignore
adding deleted
adding modified
adding removed
$ touch modified added unknown ignored
$ hg add added
$ hg remove removed
$ rm deleted
hg status:
$ hg status --color=always
Mads Kiilerich
tests: use (esc) for all non-ASCII test output
r12942 \x1b[0;32;1mA added\x1b[0m (esc)
\x1b[0;31;1mR removed\x1b[0m (esc)
\x1b[0;36;1;4m! deleted\x1b[0m (esc)
\x1b[0;35;1;4m? unknown\x1b[0m (esc)
Nicolas Dumazet
tests: unify test-status-color
r11783
hg status modified added removed deleted unknown never-existed ignored:
$ hg status --color=always modified added removed deleted unknown never-existed ignored
Mads Kiilerich
tests: hide 'No such file or directory' messages...
r15521 never-existed: * (glob)
Mads Kiilerich
tests: use (esc) for all non-ASCII test output
r12942 \x1b[0;32;1mA added\x1b[0m (esc)
\x1b[0;31;1mR removed\x1b[0m (esc)
\x1b[0;36;1;4m! deleted\x1b[0m (esc)
\x1b[0;35;1;4m? unknown\x1b[0m (esc)
Nicolas Dumazet
tests: unify test-status-color
r11783
$ hg copy modified copied
hg status -C:
$ hg status --color=always -C
Mads Kiilerich
tests: use (esc) for all non-ASCII test output
r12942 \x1b[0;32;1mA added\x1b[0m (esc)
\x1b[0;32;1mA copied\x1b[0m (esc)
\x1b[0;0m modified\x1b[0m (esc)
\x1b[0;31;1mR removed\x1b[0m (esc)
\x1b[0;36;1;4m! deleted\x1b[0m (esc)
\x1b[0;35;1;4m? unknown\x1b[0m (esc)
Nicolas Dumazet
tests: unify test-status-color
r11783
hg status -A:
$ hg status --color=always -A
Mads Kiilerich
tests: use (esc) for all non-ASCII test output
r12942 \x1b[0;32;1mA added\x1b[0m (esc)
\x1b[0;32;1mA copied\x1b[0m (esc)
\x1b[0;0m modified\x1b[0m (esc)
\x1b[0;31;1mR removed\x1b[0m (esc)
\x1b[0;36;1;4m! deleted\x1b[0m (esc)
\x1b[0;35;1;4m? unknown\x1b[0m (esc)
\x1b[0;30;1mI ignored\x1b[0m (esc)
\x1b[0;0mC .hgignore\x1b[0m (esc)
\x1b[0;0mC modified\x1b[0m (esc)
Nicolas Dumazet
tests: unify test-status-color
r11783
Danek Duvall
color: add support for terminfo-based attributes and color...
r13987 hg status -A (with terminfo color):
Thomas Arendsen Hein
tests: make tests work if directory contains special characters...
r16350 $ mkdir "$TESTTMP/terminfo"
$ TERMINFO="$TESTTMP/terminfo" tic "$TESTDIR/hgterm.ti"
$ TERM=hgterm TERMINFO="$TESTTMP/terminfo" hg status --config color.mode=terminfo --color=always -A
Patrick Mezard
test-status-color: fix terminfo code compatibility problem...
r13997 \x1b[30m\x1b[32m\x1b[1mA added\x1b[30m (esc)
\x1b[30m\x1b[32m\x1b[1mA copied\x1b[30m (esc)
\x1b[30m\x1b[30m modified\x1b[30m (esc)
\x1b[30m\x1b[31m\x1b[1mR removed\x1b[30m (esc)
\x1b[30m\x1b[36m\x1b[1m\x1b[4m! deleted\x1b[30m (esc)
\x1b[30m\x1b[35m\x1b[1m\x1b[4m? unknown\x1b[30m (esc)
\x1b[30m\x1b[30m\x1b[1mI ignored\x1b[30m (esc)
\x1b[30m\x1b[30mC .hgignore\x1b[30m (esc)
\x1b[30m\x1b[30mC modified\x1b[30m (esc)
Danek Duvall
color: add support for terminfo-based attributes and color...
r13987
Nicolas Dumazet
tests: unify test-status-color
r11783
$ echo "^ignoreddir$" > .hgignore
$ mkdir ignoreddir
$ touch ignoreddir/file
hg status ignoreddir/file:
$ hg status --color=always ignoreddir/file
hg status -i ignoreddir/file:
$ hg status --color=always -i ignoreddir/file
Mads Kiilerich
tests: use (esc) for all non-ASCII test output
r12942 \x1b[0;30;1mI ignoreddir/file\x1b[0m (esc)
Nicolas Dumazet
tests: unify test-status-color
r11783 $ cd ..
Matt Mackall
tests: fix a bunch of pointless #s in unified tests
r12328 check 'status -q' and some combinations
Nicolas Dumazet
tests: unify test-status-color
r11783
$ hg init repo3
$ cd repo3
$ touch modified removed deleted ignored
$ echo "^ignored$" > .hgignore
$ hg commit -A -m 'initial checkin'
adding .hgignore
adding deleted
adding modified
adding removed
$ touch added unknown ignored
$ hg add added
$ echo "test" >> modified
$ hg remove removed
$ rm deleted
$ hg copy modified copied
test unknown color
$ hg --config color.status.modified=periwinkle status --color=always
ignoring unknown color/effect 'periwinkle' (configured in color.status.modified)
M modified
Mads Kiilerich
tests: use (esc) for all non-ASCII test output
r12942 \x1b[0;32;1mA added\x1b[0m (esc)
\x1b[0;32;1mA copied\x1b[0m (esc)
\x1b[0;31;1mR removed\x1b[0m (esc)
\x1b[0;36;1;4m! deleted\x1b[0m (esc)
\x1b[0;35;1;4m? unknown\x1b[0m (esc)
Nicolas Dumazet
tests: unify test-status-color
r11783
Matt Mackall
tests: fix a bunch of pointless #s in unified tests
r12328 Run status with 2 different flags.
Check if result is the same or different.
If result is not as expected, raise error
Nicolas Dumazet
tests: unify test-status-color
r11783 $ assert() {
> hg status --color=always $1 > ../a
> hg status --color=always $2 > ../b
Matt Mackall
tests: cleanup exit code handling in unified tests
r12365 > if diff ../a ../b > /dev/null; then
> out=0
> else
Nicolas Dumazet
tests: unify test-status-color
r11783 > out=1
> fi
> if [ $3 -eq 0 ]; then
> df="same"
> else
> df="different"
> fi
> if [ $out -ne $3 ]; then
> echo "Error on $1 and $2, should be $df."
> fi
> }
Matt Mackall
tests: fix a bunch of pointless #s in unified tests
r12328 assert flag1 flag2 [0-same | 1-different]
Nicolas Dumazet
tests: unify test-status-color
r11783
$ assert "-q" "-mard" 0
$ assert "-A" "-marduicC" 0
$ assert "-qA" "-mardcC" 0
$ assert "-qAui" "-A" 0
$ assert "-qAu" "-marducC" 0
$ assert "-qAi" "-mardicC" 0
$ assert "-qu" "-u" 0
$ assert "-q" "-u" 1
$ assert "-m" "-a" 1
$ assert "-r" "-d" 1
$ cd ..
Matt Mackall
tests: fix a bunch of pointless #s in unified tests
r12328 test 'resolve -l'
Nicolas Dumazet
tests: unify test-status-color
r11783 $ hg init repo4
$ cd repo4
$ echo "file a" > a
$ echo "file b" > b
$ hg add a b
$ hg commit -m "initial"
$ echo "file a change 1" > a
$ echo "file b change 1" > b
$ hg commit -m "head 1"
$ hg update 0
2 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ echo "file a change 2" > a
$ echo "file b change 2" > b
$ hg commit -m "head 2"
created new head
$ hg merge
merging a
warning: conflicts during merge.
Matt Mackall
merge: give a special message for internal:merge failure (issue3105)
r15501 merging a incomplete! (edit conflicts, then use 'hg resolve --mark')
Nicolas Dumazet
tests: unify test-status-color
r11783 merging b
warning: conflicts during merge.
Matt Mackall
merge: give a special message for internal:merge failure (issue3105)
r15501 merging b incomplete! (edit conflicts, then use 'hg resolve --mark')
Nicolas Dumazet
tests: unify test-status-color
r11783 0 files updated, 0 files merged, 0 files removed, 2 files unresolved
Brodie Rao
merge: suggest 'hg up -C .' for discarding changes, not 'hg up -C'...
r12314 use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon
Matt Mackall
tests: add exit codes to unified tests
r12316 [1]
Nicolas Dumazet
tests: unify test-status-color
r11783 $ hg resolve -m b
hg resolve with one unresolved, one resolved:
$ hg resolve --color=always -l
Mads Kiilerich
tests: use (esc) for all non-ASCII test output
r12942 \x1b[0;31;1mU a\x1b[0m (esc)
\x1b[0;32;1mR b\x1b[0m (esc)
Mads Kiilerich
tests: add missing trailing 'cd ..'...
r16913
$ cd ..