##// END OF EJS Templates
dirstate-tree: Add a dirstate-v1-tree variant of some tests...
dirstate-tree: Add a dirstate-v1-tree variant of some tests The `dirstate-v1` variant has the previous behavior. `dirstate-v1-tree` uses the same format on disk, but uses the new `DirstateMap` with a tree data structure and the new `status` algorithm. These were untested so far. Differential Revision: https://phab.mercurial-scm.org/D10698

File last commit:

r47900:93eb6c80 default
r47900:93eb6c80 default
Show More
test-status.t
701 lines | 12.4 KiB | text/troff | Tads3Lexer
Simon Sapin
dirstate-tree: Add a dirstate-v1-tree variant of some tests...
r47900 #testcases dirstate-v1 dirstate-v1-tree
#if dirstate-v1-tree
#require rust
$ echo '[experimental]' >> $HGRCPATH
$ echo 'dirstate-tree.in-memory=1' >> $HGRCPATH
#endif
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
[
{
Rodrigo Damazio Bovendorp
status: outputting structured unfinished-operation information...
r44313 "itemtype": "file",
Matt Mackall
commands: add hidden -T option for files/manifest/status/tags...
r22429 "path": "added",
"status": "A"
},
{
Rodrigo Damazio Bovendorp
status: outputting structured unfinished-operation information...
r44313 "itemtype": "file",
Matt Mackall
commands: add hidden -T option for files/manifest/status/tags...
r22429 "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"
},
{
Rodrigo Damazio Bovendorp
status: outputting structured unfinished-operation information...
r44313 "itemtype": "file",
Matt Mackall
commands: add hidden -T option for files/manifest/status/tags...
r22429 "path": "removed",
"status": "R"
},
{
Rodrigo Damazio Bovendorp
status: outputting structured unfinished-operation information...
r44313 "itemtype": "file",
Matt Mackall
commands: add hidden -T option for files/manifest/status/tags...
r22429 "path": "deleted",
"status": "!"
},
{
Rodrigo Damazio Bovendorp
status: outputting structured unfinished-operation information...
r44313 "itemtype": "file",
Matt Mackall
commands: add hidden -T option for files/manifest/status/tags...
r22429 "path": "unknown",
"status": "?"
},
{
Rodrigo Damazio Bovendorp
status: outputting structured unfinished-operation information...
r44313 "itemtype": "file",
Matt Mackall
commands: add hidden -T option for files/manifest/status/tags...
r22429 "path": "ignored",
"status": "I"
},
{
Rodrigo Damazio Bovendorp
status: outputting structured unfinished-operation information...
r44313 "itemtype": "file",
Matt Mackall
commands: add hidden -T option for files/manifest/status/tags...
r22429 "path": ".hgignore",
"status": "C"
},
{
Rodrigo Damazio Bovendorp
status: outputting structured unfinished-operation information...
r44313 "itemtype": "file",
Matt Mackall
commands: add hidden -T option for files/manifest/status/tags...
r22429 "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 {
Rodrigo Damazio Bovendorp
status: outputting structured unfinished-operation information...
r44313 'itemtype': 'file',
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 ..
Raphaël Gomès
rust-status: check for '.hg' regardless of file type (issue6300)...
r45250
Make sure .hg doesn't show up even as a symlink
$ hg init repo0
$ mkdir symlink-repo0
$ cd symlink-repo0
$ ln -s ../repo0/.hg
$ hg status
Raphaël Gomès
status: add test that shows that the Rust implementation has a bug...
r47217
Check using include flag with pattern when status does not need to traverse
the working directory (issue6483)
$ cd ..
$ hg init issue6483
$ cd issue6483
$ touch a.py b.rs
$ hg add a.py b.rs
$ hg st -aI "*.py"
A a.py