##// END OF EJS Templates
transaction: issue "new obsmarkers" message at the end of the transaction...
transaction: issue "new obsmarkers" message at the end of the transaction Instead of making bundle2 code responsible for this, it seems better to have it handled and the transaction level. First, it means the message will be more consistently printed. Second it means we won't spam the message over and over if the data arrive in multiple piece. Third, we are planning to move other similar message at the same level (for the same reason) so having them all at the same location will help us to control the order they are displayed.

File last commit:

r42702:c929f612 default
r43164:38392d5b default
Show More
test-status.t
665 lines | 11.6 KiB | text/troff | Tads3Lexer
Nicolas Dumazet
tests: unify test-status
r11782 $ 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
? a/1/in_a_1
? a/in_a
? b/1/in_b_1
? b/2/in_b_2
? b/in_b
? in_root
hg status . in repo root:
$ hg status .
? a/1/in_a_1
? a/in_a
? b/1/in_b_1
? b/2/in_b_2
? b/in_b
? in_root
$ hg status --cwd a
? a/1/in_a_1
? a/in_a
? b/1/in_b_1
? b/2/in_b_2
? b/in_b
? in_root
$ hg status --cwd a .
? 1/in_a_1
? in_a
$ hg status --cwd a ..
? 1/in_a_1
? in_a
? ../b/1/in_b_1
? ../b/2/in_b_2
? ../b/in_b
? ../in_root
$ hg status --cwd b
? a/1/in_a_1
? a/in_a
? b/1/in_b_1
? b/2/in_b_2
? b/in_b
? in_root
$ hg status --cwd b .
? 1/in_b_1
? 2/in_b_2
? in_b
$ hg status --cwd b ..
? ../a/1/in_a_1
? ../a/in_a
? 1/in_b_1
? 2/in_b_2
? in_b
? ../in_root
$ hg status --cwd a/1
? a/1/in_a_1
? a/in_a
? b/1/in_b_1
? b/2/in_b_2
? b/in_b
? in_root
$ hg status --cwd a/1 .
? in_a_1
$ hg status --cwd a/1 ..
? in_a_1
? ../in_a
$ hg status --cwd b/1
? a/1/in_a_1
? a/in_a
? b/1/in_b_1
? b/2/in_b_2
? b/in_b
? in_root
$ hg status --cwd b/1 .
? in_b_1
$ hg status --cwd b/1 ..
? in_b_1
? ../2/in_b_2
? ../in_b
$ hg status --cwd b/2
? a/1/in_a_1
? a/in_a
? b/1/in_b_1
? b/2/in_b_2
? b/in_b
? in_root
$ hg status --cwd b/2 .
? in_b_2
$ hg status --cwd b/2 ..
? ../1/in_b_1
? in_b_2
? ../in_b
Mads Kiilerich
match: fix root calculation for combining regexps with simple paths...
r19107
combining patterns with root and patterns without a root works
$ hg st a/in_a re:.*b$
? a/in_a
? b/in_b
Augie Fackler
ui: add support for a tweakdefaults knob...
r32872 tweaking defaults works
$ hg status --cwd a --config ui.tweakdefaults=yes
Gregory Szorc
ui: remove commands.status.terse=u from ui.tweakdefaults...
r38785 ? 1/in_a_1
? in_a
? ../b/1/in_b_1
? ../b/2/in_b_2
? ../b/in_b
Augie Fackler
ui: add support for a tweakdefaults knob...
r32872 ? ../in_root
$ HGPLAIN=1 hg status --cwd a --config ui.tweakdefaults=yes
? a/1/in_a_1 (glob)
? a/in_a (glob)
? b/1/in_b_1 (glob)
? b/2/in_b_2 (glob)
? b/in_b (glob)
? in_root
$ HGPLAINEXCEPT=tweakdefaults hg status --cwd a --config ui.tweakdefaults=yes
Gregory Szorc
ui: remove commands.status.terse=u from ui.tweakdefaults...
r38785 ? 1/in_a_1
? in_a
? ../b/1/in_b_1
? ../b/2/in_b_2
? ../b/in_b
Matt Harbison
test-status: glob fixes for Windows
r32887 ? ../in_root (glob)
Augie Fackler
ui: add support for a tweakdefaults knob...
r32872
Martin von Zweigbergk
status: support commands.status.relative config...
r31589 relative paths can be requested
Martin von Zweigbergk
status: if ui.relative-paths=no, don't use relative paths even with patterns...
r41718 $ hg status --cwd a --config ui.relative-paths=yes
Martin von Zweigbergk
status: introduce higher-level ui.relative-paths...
r41633 ? 1/in_a_1
? in_a
? ../b/1/in_b_1
? ../b/2/in_b_2
? ../b/in_b
? ../in_root
Martin von Zweigbergk
status: if ui.relative-paths=no, don't use relative paths even with patterns...
r41718 $ hg status --cwd a . --config ui.relative-paths=legacy
? 1/in_a_1
? in_a
$ hg status --cwd a . --config ui.relative-paths=no
? a/1/in_a_1
? a/in_a
Martin von Zweigbergk
status: introduce higher-level ui.relative-paths...
r41633 commands.status.relative overrides ui.relative-paths
$ cat >> $HGRCPATH <<EOF
> [ui]
> relative-paths = False
Martin von Zweigbergk
status: support commands.status.relative config...
r31589 > [commands]
> status.relative = True
> EOF
$ hg status --cwd a
? 1/in_a_1
? in_a
? ../b/1/in_b_1
? ../b/2/in_b_2
? ../b/in_b
? ../in_root
$ HGPLAIN=1 hg status --cwd a
Matt Harbison
tests: add globs for Windows
r31766 ? a/1/in_a_1 (glob)
? a/in_a (glob)
? b/1/in_b_1 (glob)
? b/2/in_b_2 (glob)
? b/in_b (glob)
Martin von Zweigbergk
status: support commands.status.relative config...
r31589 ? in_root
Augie Fackler
ui: add support for a tweakdefaults knob...
r32872 if relative paths are explicitly off, tweakdefaults doesn't change it
$ cat >> $HGRCPATH <<EOF
> [commands]
> status.relative = False
> EOF
$ hg status --cwd a --config ui.tweakdefaults=yes
Gregory Szorc
ui: remove commands.status.terse=u from ui.tweakdefaults...
r38785 ? a/1/in_a_1
? a/in_a
? b/1/in_b_1
? b/2/in_b_2
? b/in_b
Augie Fackler
ui: add support for a tweakdefaults knob...
r32872 ? in_root
Nicolas Dumazet
tests: unify test-status
r11782 $ 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
r11782 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
A added
R removed
! deleted
? unknown
hg status modified added removed deleted unknown never-existed ignored:
$ hg status modified added removed deleted unknown never-existed ignored
Mads Kiilerich
tests: hide 'No such file or directory' messages...
r15521 never-existed: * (glob)
Nicolas Dumazet
tests: unify test-status
r11782 A added
R removed
! deleted
? unknown
$ hg copy modified copied
hg status -C:
$ hg status -C
A added
A copied
modified
R removed
! deleted
? unknown
hg status -A:
$ hg status -A
A added
A copied
modified
R removed
! deleted
? unknown
I ignored
C .hgignore
C modified
Yuya Nishihara
status: add support for log-like template keywords and functions...
r38563 $ hg status -A -T '{status} {path} {node|shortest}\n'
A added ffff
A copied ffff
R removed ffff
! deleted ffff
? unknown ffff
I ignored ffff
C .hgignore ffff
C modified ffff
Matt Mackall
commands: add hidden -T option for files/manifest/status/tags...
r22429 $ hg status -A -Tjson
[
{
"path": "added",
"status": "A"
},
{
"path": "copied",
Yuya Nishihara
status: rename {copy} to {source} for compatibility with {file_copies} (BC)...
r39406 "source": "modified",
Matt Mackall
commands: add hidden -T option for files/manifest/status/tags...
r22429 "status": "A"
},
{
"path": "removed",
"status": "R"
},
{
"path": "deleted",
"status": "!"
},
{
"path": "unknown",
"status": "?"
},
{
"path": "ignored",
"status": "I"
},
{
"path": ".hgignore",
"status": "C"
},
{
"path": "modified",
"status": "C"
}
]
Nicolas Dumazet
tests: unify test-status
r11782
Matt Mackall
formatter: add pickle format...
r22430 $ hg status -A -Tpickle > pickle
Pulkit Goyal
py3: make files use absolute_import and print_function...
r29485 >>> from __future__ import print_function
Pulkit Goyal
tests: make test-status.t compatible with test-check-module-imports.t...
r42010 >>> from mercurial import util
>>> pickle = util.pickle
Mark Thomas
py3: fix test-status.t...
r40314 >>> data = sorted((x[b'status'].decode(), x[b'path'].decode()) for x in pickle.load(open("pickle", r"rb")))
>>> for s, p in data: print("%s %s" % (s, p))
! deleted
? pickle
? unknown
A added
A copied
C .hgignore
C modified
I ignored
R removed
Matt Mackall
formatter: add pickle format...
r22430 $ rm pickle
Nicolas Dumazet
tests: unify test-status
r11782 $ echo "^ignoreddir$" > .hgignore
$ mkdir ignoreddir
$ touch ignoreddir/file
Matt Mackall
tests: test basic template support for status
r25515 Test templater support:
Yuya Nishihara
status: rename {copy} to {source} for compatibility with {file_copies} (BC)...
r39406 $ hg status -AT "[{status}]\t{if(source, '{source} -> ')}{path}\n"
Matt Mackall
tests: test basic template support for status
r25515 [M] .hgignore
[A] added
[A] modified -> copied
[R] removed
[!] deleted
[?] ignored
[?] unknown
[I] ignoreddir/file
[C] modified
$ hg status -AT default
M .hgignore
A added
A copied
modified
R removed
! deleted
? ignored
? unknown
I ignoreddir/file
C modified
$ hg status -T compact
abort: "status" not in template map
[255]
Nicolas Dumazet
tests: unify test-status
r11782 hg status ignoreddir/file:
$ hg status ignoreddir/file
hg status -i ignoreddir/file:
$ hg status -i ignoreddir/file
I ignoreddir/file
$ 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
r11782
$ 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
Yuya Nishihara
revset: add wdir() function to specify workingctx revision by command...
r24419 Specify working directory revision explicitly, that should be the same as
"hg status"
$ hg status --change "wdir()"
M modified
A added
A copied
R removed
! deleted
? unknown
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
r11782
$ assert() {
Matt Mackall
tests: cleanup exit code handling in unified tests
r12365 > hg status $1 > ../a
> hg status $2 > ../b
> if diff ../a ../b > /dev/null; then
> out=0
> else
Nicolas Dumazet
tests: unify test-status
r11782 > 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
r11782
$ 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 ..
$ hg init repo4
$ cd repo4
$ touch modified removed deleted
Martin Geisler
tests: remove unneeded -d flags...
r12156 $ hg ci -q -A -m 'initial checkin'
Nicolas Dumazet
tests: unify test-status
r11782 $ touch added unknown
$ hg add added
$ hg remove removed
$ rm deleted
$ echo x > modified
$ hg copy modified copied
$ hg ci -m 'test checkin' -d "1000001 0"
$ rm *
$ touch unrelated
$ hg ci -q -A -m 'unrelated checkin' -d "1000002 0"
hg status --change 1:
$ hg status --change 1
M modified
A added
A copied
R removed
hg status --change 1 unrelated:
$ hg status --change 1 unrelated
hg status -C --change 1 added modified copied removed deleted:
$ hg status -C --change 1 added modified copied removed deleted
M modified
A added
A copied
modified
R removed
Patrick Mezard
status: support revsets with --change
r15578 hg status -A --change 1 and revset:
Nicolas Dumazet
tests: unify test-status
r11782
Patrick Mezard
status: support revsets with --change
r15578 $ hg status -A --change '1|1'
Nicolas Dumazet
tests: unify test-status
r11782 M modified
A added
A copied
modified
R removed
C deleted
Yuya Nishihara
filectx: fix cmp() of file starting with '\1\n'...
r15848
$ cd ..
Martin von Zweigbergk
status: revert + flag-change == modified...
r27668 hg status with --rev and reverted changes:
$ hg init reverted-changes-repo
$ cd reverted-changes-repo
$ echo a > file
$ hg add file
$ hg ci -m a
$ echo b > file
$ hg ci -m b
reverted file should appear clean
$ hg revert -r 0 .
reverting file
$ hg status -A --rev 0
C file
#if execbit
reverted file with changed flag should appear modified
$ chmod +x file
$ hg status -A --rev 0
M file
Matt Harbison
test-status: stabilize for no-execbit platforms...
r27743 $ hg revert -r 0 .
reverting file
Martin von Zweigbergk
context: check for differing flags a little earlier...
r27749
reverted and committed file with changed flag should appear modified
$ hg co -C .
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ chmod +x file
$ hg ci -m 'change flag'
$ hg status -A --rev 1 --rev 2
M file
$ hg diff -r 1 -r 2
Martin von Zweigbergk
status: revert + flag-change == modified...
r27668 #endif
Ryan McElroy
tests: properly drop back to root dir in test-status.t
r31423 $ cd ..
Yuya Nishihara
filectx: fix cmp() of file starting with '\1\n'...
r15848 hg status of binary file starting with '\1\n', a separator for metadata:
$ hg init repo5
$ cd repo5
Pulkit Goyal
py3: suppress the value returned by .write() calls...
r38037 >>> open("010a", r"wb").write(b"\1\nfoo") and None
Yuya Nishihara
filectx: fix cmp() of file starting with '\1\n'...
r15848 $ hg ci -q -A -m 'initial checkin'
$ hg status -A
C 010a
Pulkit Goyal
py3: suppress the value returned by .write() calls...
r38037 >>> open("010a", r"wb").write(b"\1\nbar") and None
Yuya Nishihara
filectx: fix cmp() of file starting with '\1\n'...
r15848 $ hg status -A
M 010a
$ hg ci -q -m 'modify 010a'
$ hg status -A --rev 0:1
M 010a
$ touch empty
$ hg ci -q -A -m 'add another file'
$ hg status -A --rev 1:2 010a
C 010a
FUJIWARA Katsunori
localrepository: use 'changectx.dirs()' in 'status()' for directory patterns...
r16144
$ cd ..
test "hg status" with "directory pattern" which matches against files
only known on target revision.
$ hg init repo6
$ cd repo6
$ echo a > a.txt
$ hg add a.txt
$ hg commit -m '#0'
$ mkdir -p 1/2/3/4/5
$ echo b > 1/2/3/4/5/b.txt
$ hg add 1/2/3/4/5/b.txt
$ hg commit -m '#1'
$ hg update -C 0 > /dev/null
$ hg status -A
C a.txt
the directory matching against specified pattern should be removed,
because directory existence prevents 'dirstate.walk()' from showing
warning message about such pattern.
$ test ! -d 1
$ hg status -A --rev 1 1/2/3/4/5/b.txt
R 1/2/3/4/5/b.txt
$ hg status -A --rev 1 1/2/3/4/5
R 1/2/3/4/5/b.txt
$ hg status -A --rev 1 1/2/3
R 1/2/3/4/5/b.txt
$ hg status -A --rev 1 1
R 1/2/3/4/5/b.txt
Matt Mackall
formatter: make debug style match Python syntax
r22424 $ hg status --config ui.formatdebug=True --rev 1 1
status = [
Yuya Nishihara
formatter: make debug output prettier...
r40313 {
'path': '1/2/3/4/5/b.txt',
'status': 'R'
},
Matt Mackall
formatter: make debug style match Python syntax
r22424 ]
Patrick Mezard
test-status.t: test ui.slash on Windows
r17377 #if windows
$ hg --config ui.slash=false status -A --rev 1 1
R 1\2\3\4\5\b.txt
#endif
FUJIWARA Katsunori
localrepository: use 'changectx.dirs()' in 'status()' for directory patterns...
r16144 $ cd ..
Pierre-Yves David
rename: properly report removed and added file as modified (issue4458)...
r23402
Status after move overwriting a file (issue4458)
=================================================
$ hg init issue4458
$ cd issue4458
$ echo a > a
$ echo b > b
$ hg commit -Am base
adding a
adding b
with --force
$ hg mv b --force a
$ hg st --copies
M a
b
R b
$ hg revert --all
reverting a
undeleting b
$ rm *.orig
without force
$ hg rm a
$ hg st --copies
R a
$ hg mv b a
$ hg st --copies
M a
b
R b
Mathias De Maré
commands: add ui.statuscopies config knob...
r24663 using ui.statuscopies setting
$ hg st --config ui.statuscopies=true
M a
b
R b
$ hg st --config ui.statuscopies=false
M a
R b
Martin von Zweigbergk
tweakdefaults: turn on ui.statuscopies...
r35066 $ hg st --config ui.tweakdefaults=yes
M a
b
R b
Mathias De Maré
commands: add ui.statuscopies config knob...
r24663
Yuya Nishihara
log: fix status template to list copy source per dest (issue5155)...
r29000 using log status template (issue5155)
$ hg log -Tstatus -r 'wdir()' -C
changeset: 2147483647:ffffffffffff
parent: 0:8c55c58b4c0e
user: test
date: * (glob)
files:
M a
b
R b
Martin von Zweigbergk
tests: demonstrate missing copy information in working copy with graphlog...
r42701 $ hg log -GTstatus -r 'wdir()' -C
o changeset: 2147483647:ffffffffffff
| parent: 0:8c55c58b4c0e
~ user: test
date: * (glob)
files:
M a
Martin von Zweigbergk
logcmdutil: also check for copies in null revision and working copy...
r42702 b
Martin von Zweigbergk
tests: demonstrate missing copy information in working copy with graphlog...
r42701 R b
Yuya Nishihara
log: fix status template to list copy source per dest (issue5155)...
r29000
Pierre-Yves David
rename: properly report removed and added file as modified (issue4458)...
r23402 Other "bug" highlight, the revision status does not report the copy information.
This is buggy behavior.
$ hg commit -m 'blah'
$ hg st --copies --change .
M a
R b
Yuya Nishihara
log: fix status template to list copy source per dest (issue5155)...
r29000 using log status template, the copy information is displayed correctly.
$ hg log -Tstatus -r. -C
changeset: 1:6685fde43d21
tag: tip
user: test
date: * (glob)
summary: blah
files:
M a
b
R b
Pierre-Yves David
rename: properly report removed and added file as modified (issue4458)...
r23402 $ cd ..