sapling/eden/scm/tests/test-fb-hgext-morestatus.t
Jun Wu 026bd9f950 tests: avoid some rev numbers in revsets
Summary: Done by the fix-revnum.py script.

Reviewed By: singhsrb

Differential Revision: D24173575

fbshipit-source-id: e4cf417be759f9898adfd4102984098474ab38a2
2020-10-08 11:08:37 -07:00

314 lines
8.9 KiB
Perl

#chg-compatible
$ configure mutation-norecord
$ enable morestatus fbhistedit histedit rebase reset
$ setconfig morestatus.show=true
$ cat >> $TESTTMP/breakupdate.py << EOF
> import sys
> from edenscm.mercurial import merge
> def extsetup(ui):
> merge.applyupdates = lambda *args, **kwargs: sys.exit()
> EOF
$ breakupdate() {
> setconfig extensions.breakupdate="$TESTTMP/breakupdate.py"
> }
$ unbreakupdate() {
> disable breakupdate
> }
Test An empty repo should return no extra output
$ hg init repo
$ cd repo
$ hg status
Test status on histedit stop
$ echo 'a' > a
$ hg commit -Am 'a' -q
$ hg histedit -q --commands - . 2> /dev/null << EOF
> stop cb9a9f314b8b a
> EOF
[1]
$ hg status
# The repository is in an unfinished *histedit* state.
# To continue: hg histedit --continue
# To abort: hg histedit --abort
Test disabling output. Nothing should be shown
$ hg status --config morestatus.show=False
$ HGPLAIN=1 hg status
$ hg histedit -q --continue
Test no output on normal state
$ hg status
Test bisect state
$ hg bisect --good
$ hg status
# The repository is in an unfinished *bisect* state.
# Current bisect state: 1 good commit(s), 0 bad commit(s), 0 skip commit(s)
# To mark the changeset good: hg bisect --good
# To mark the changeset bad: hg bisect --bad
# To abort: hg bisect --reset
Verify that suppressing a morestatus state warning works with the config knob:
$ hg status --config morestatus.skipstates=bisect
Test hg status is normal after bisect reset
$ hg bisect --reset
$ hg status
Test graft state
$ hg up -q -r 'max(desc(a))'
$ echo '' > a
$ hg commit -q -m 'remove content'
$ hg up -q -r 'max(desc(a))'
$ echo 'ab' > a
$ hg commit -q -m 'add content'
$ hg graft -q 2977a57
warning: 1 conflicts while merging a! (edit, then use 'hg resolve --mark')
abort: unresolved conflicts, can't continue
(use 'hg resolve' and 'hg graft --continue')
[255]
$ hg status
M a
? a.orig
# The repository is in an unfinished *graft* state.
# Unresolved merge conflicts:
#
# a
#
# To mark files as resolved: hg resolve --mark FILE
# To continue: hg graft --continue
# To abort: hg update --clean . (warning: this will discard uncommitted changes)
Test hg status is normal after graft abort
$ hg up --clean -q
$ hg status
? a.orig
$ rm a.orig
Test unshelve state
$ enable shelve
$ hg reset ".^" -q
$ hg shelve -q
$ hg up -r 2977a57 -q
$ hg unshelve -q
warning: 1 conflicts while merging a! (edit, then use 'hg resolve --mark')
unresolved conflicts (see 'hg resolve', then 'hg unshelve --continue')
[1]
$ hg status
M a
? a.orig
# The repository is in an unfinished *unshelve* state.
# Unresolved merge conflicts:
#
# a
#
# To mark files as resolved: hg resolve --mark FILE
# To continue: hg unshelve --continue
# To abort: hg unshelve --abort
Test hg status is normal after unshelve abort
$ hg unshelve --abort
rebase aborted
unshelve of 'default' aborted
$ hg status
? a.orig
$ rm a.orig
Test rebase state
$ echo "rebase=" >> $HGRCPATH
$ hg up -r 0efcea34f18aa8f87dc63b4c37b7c494bc778b03 -q
$ echo 'ab' > a
$ hg commit -q -m 'add content'
$ hg rebase -s 2977a57 -d . -q
warning: 1 conflicts while merging a! (edit, then use 'hg resolve --mark')
unresolved conflicts (see hg resolve, then hg rebase --continue)
[1]
$ hg status
M a
? a.orig
# The repository is in an unfinished *rebase* state.
# Unresolved merge conflicts:
#
# a
#
# To mark files as resolved: hg resolve --mark FILE
# To continue: hg rebase --continue
# To abort: hg rebase --abort
Test status in rebase state with resolved files
$ hg resolve --mark a
(no more unresolved files)
continue: hg rebase --continue
$ hg status
M a
? a.orig
# The repository is in an unfinished *rebase* state.
# No unresolved merge conflicts.
# To continue: hg rebase --continue
# To abort: hg rebase --abort
Test hg status is normal after rebase abort
$ hg rebase --abort -q
rebase aborted
$ hg status
? a.orig
$ rm a.orig
Test rebase with an interrupted update:
$ breakupdate
$ hg rebase -s 2977a57ce863 -d 79361b8cdbb5 -q
$ unbreakupdate
$ hg status
# The repository is in an unfinished *rebase* state.
# To continue: hg rebase --continue
# To abort: hg rebase --abort
$ hg rebase --abort -q
rebase aborted
Test conflicted merge state
$ hg merge -q
warning: 1 conflicts while merging a! (edit, then use 'hg resolve --mark')
[1]
$ hg status
M a
? a.orig
# The repository is in an unfinished *merge* state.
# Unresolved merge conflicts:
#
# a
#
# To mark files as resolved: hg resolve --mark FILE
# To continue: hg commit
# To abort: hg update --clean . (warning: this will discard uncommitted changes)
Test if listed files have a relative path to current location
$ mkdir -p b/c
$ cd b/c
$ hg status
M a
? a.orig
# The repository is in an unfinished *merge* state.
# Unresolved merge conflicts:
#
# ../../a
#
# To mark files as resolved: hg resolve --mark FILE
# To continue: hg commit
# To abort: hg update --clean . (warning: this will discard uncommitted changes)
$ cd ../..
Test hg status is normal after merge abort
$ hg update --clean -q
$ hg status
? a.orig
$ rm a.orig
Test non-conflicted merge state
$ hg up -r 0efcea34f18aa8f87dc63b4c37b7c494bc778b03 -q
$ touch z
$ hg add z
$ hg commit -m 'a commit that will merge without conflicts' -q
$ hg merge -r 79361b8cdbb -q
$ hg status
M a
# The repository is in an unfinished *merge* state.
# To continue: hg commit
# To abort: hg update --clean . (warning: this will discard uncommitted changes)
Test hg status is normal after merge commit (no output)
$ hg commit -m 'merge commit' -q
$ hg status
Test interrupted update state, without active bookmark and REV is a hash
$ breakupdate
$ hg update -C 2977a57ce863
$ hg status
# The repository is in an unfinished *update* state.
# To continue: hg update -C 2977a57ce863
# To abort: hg update --clean . (warning: this will discard uncommitted changes)
Test interrupted update state, with active bookmark and REV is a bookmark
$ hg bookmark b1
$ hg bookmark -r 79361b8cdbb5 b2
$ hg update b2
$ hg status
# The repository is in an unfinished *update* state.
# To continue: hg update b2
# To abort: hg update --clean b1 (warning: this will discard uncommitted changes)
Test update state can be reset using bookmark
$ hg update b1 -q
$ hg bookmark -d b1 -q
$ hg status
Test interrupted update state, without active bookmark and REV is specified using date
$ echo a >> a
$ hg commit --date "1234567890 0" -m m -q
$ hg update --date 1970-1-1 -q
$ hg status
# The repository is in an unfinished *update* state.
# To continue: hg update --date 1970-1-1 -q
# To abort: hg update --clean . (warning: this will discard uncommitted changes)
$ unbreakupdate
Test update state can be reset using .
$ hg update . -q
$ hg status
Test args escaping in continue command
$ breakupdate
$ hg bookmark b1
$ hg --config extensions.fsmonitor=! --config ui.ssh="ssh -oControlMaster=no" update -C 2977a57ce863
$ hg status
# The repository is in an unfinished *update* state.
# To continue: hg --config 'extensions.fsmonitor=!' --config 'ui.ssh=ssh -oControlMaster=no' update -C 2977a57ce863
# To abort: hg update --clean b1 (warning: this will discard uncommitted changes)
$ unbreakupdate
$ hg update --clean b1
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ hg status
Test bisect search status (after cleaning up previous setup)
$ echo 'z' > z
$ hg commit -Am 'z' -q
$ hg bisect --bad
$ hg bisect --good 0efcea34f18a
Testing changeset 69a19f24e505 (5 changesets remaining, ~2 tests)
2 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ hg status
# The repository is in an unfinished *bisect* state.
# Current bisect state: 1 good commit(s), 1 bad commit(s), 0 skip commit(s)
#
# Current Tracker: bad commit current good commit
# 547e426ae373...69a19f24e505...0efcea34f18a
# Commits remaining: 5
# Estimated bisects remaining: 3
# To mark the changeset good: hg bisect --good
# To mark the changeset bad: hg bisect --bad
# To abort: hg bisect --reset
Test hg status is normal after bisect reset
$ hg bisect --reset
$ hg status