D2396: stack: import Evolve stack test file
lothiraldan (Boris Feld)
phabricator at mercurial-scm.org
Fri Feb 23 10:37:09 UTC 2018
lothiraldan created this revision.
Herald added a subscriber: mercurial-devel.
Herald added a reviewer: hg-reviewers.
REVISION SUMMARY
Import Evolve stack test file for starting to have good coverage on stack
definition.
REPOSITORY
rHG Mercurial
REVISION DETAIL
https://phab.mercurial-scm.org/D2396
AFFECTED FILES
mercurial/debugcommands.py
tests/test-completion.t
tests/test-help.t
tests/test-stack.t
CHANGE DETAILS
diff --git a/tests/test-stack.t b/tests/test-stack.t
new file mode 100644
--- /dev/null
+++ b/tests/test-stack.t
@@ -0,0 +1,213 @@
+
+This test test the low-level definition of stack, agnostic from all formatting
+
+Initial setup
+
+ $ cat << EOF >> $HGRCPATH
+ > [ui]
+ > logtemplate = {rev} {branch} {phase} {desc|firstline}\n
+ > [extensions]
+ > rebase=
+ > [experimental]
+ > evolution=createmarkers,exchange,allowunstable
+ > EOF
+
+ $ hg init main
+ $ cd main
+ $ hg branch other
+ marked working directory as branch other
+ (branches are permanent and global, did you want a bookmark?)
+ $ echo aaa > aaa
+ $ hg add aaa
+ $ hg commit -m c_a
+ $ echo aaa > bbb
+ $ hg add bbb
+ $ hg commit -m c_b
+ $ hg branch foo
+ marked working directory as branch foo
+ $ echo aaa > ccc
+ $ hg add ccc
+ $ hg commit -m c_c
+ $ echo aaa > ddd
+ $ hg add ddd
+ $ hg commit -m c_d
+ $ echo aaa > eee
+ $ hg add eee
+ $ hg commit -m c_e
+ $ echo aaa > fff
+ $ hg add fff
+ $ hg commit -m c_f
+ $ hg log -G
+ @ 5 foo draft c_f
+ |
+ o 4 foo draft c_e
+ |
+ o 3 foo draft c_d
+ |
+ o 2 foo draft c_c
+ |
+ o 1 other draft c_b
+ |
+ o 0 other draft c_a
+
+
+Check that stack doesn't include public changesets
+--------------------------------------------------
+
+ $ hg up other
+ 0 files updated, 0 files merged, 4 files removed, 0 files unresolved
+ $ hg debugstack
+ 1
+ 0
+ $ hg phase --public 'branch("other")'
+ $ hg debugstack
+ $ hg up foo
+ 4 files updated, 0 files merged, 0 files removed, 0 files unresolved
+
+Simple test
+-----------
+
+'hg debugstack' list all changeset in the branch
+
+ $ hg branch
+ foo
+ $ hg debugstack
+ 5
+ 4
+ 3
+ 2
+
+Case with some of the branch unstable
+------------------------------------
+
+ $ hg up 3
+ 0 files updated, 0 files merged, 2 files removed, 0 files unresolved
+ $ echo bbb > ddd
+ $ hg commit --amend
+ 2 new orphan changesets
+ $ hg log -G
+ @ 6 foo draft c_d
+ |
+ | * 5 foo draft c_f
+ | |
+ | * 4 foo draft c_e
+ | |
+ | x 3 foo draft c_d
+ |/
+ o 2 foo draft c_c
+ |
+ o 1 other public c_b
+ |
+ o 0 other public c_a
+
+ $ hg debugstack
+ 6
+ $ hg up -r "desc(c_e)"
+ 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
+ $ hg debugstack
+ 4
+ 3
+ $ hg up -r "desc(c_d)"
+ 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
+
+ $ hg debugstack
+ 6
+
+Case with multiple topological heads
+------------------------------------
+
+Make things linear again
+
+ $ hg rebase -s 'desc(c_e)' -d 'desc(c_d) - obsolete()'
+ rebasing 4:4f2a69f6d380 "c_e"
+ rebasing 5:913c298d8b0a "c_f"
+ $ hg log -G
+ o 8 foo draft c_f
+ |
+ o 7 foo draft c_e
+ |
+ @ 6 foo draft c_d
+ |
+ o 2 foo draft c_c
+ |
+ o 1 other public c_b
+ |
+ o 0 other public c_a
+
+
+Create the second branch
+
+ $ hg up 'desc(c_d)'
+ 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
+ $ echo aaa > ggg
+ $ hg add ggg
+ $ hg commit -m c_g
+ created new head
+ $ echo aaa > hhh
+ $ hg add hhh
+ $ hg commit -m c_h
+ $ hg log -G
+ @ 10 foo draft c_h
+ |
+ o 9 foo draft c_g
+ |
+ | o 8 foo draft c_f
+ | |
+ | o 7 foo draft c_e
+ |/
+ o 6 foo draft c_d
+ |
+ o 2 foo draft c_c
+ |
+ o 1 other public c_b
+ |
+ o 0 other public c_a
+
+
+Test output
+
+ $ hg debugstack
+ 10
+ 9
+ $ hg up 'desc(c_f)'
+ 2 files updated, 0 files merged, 2 files removed, 0 files unresolved
+ $ hg debugstack
+ 8
+ 7
+
+Case with multiple heads with unstability involved
+--------------------------------------------------
+
+We amend the message to make sure the display base pick the right changeset
+
+ $ hg up 'desc(c_d)'
+ 0 files updated, 0 files merged, 2 files removed, 0 files unresolved
+ $ echo ccc > ddd
+ $ hg commit --amend -m 'c_D'
+ 4 new orphan changesets
+ $ hg rebase -d . -s 'desc(c_g)'
+ rebasing 9:2ebb6e48ab8a "c_g"
+ rebasing 10:634f38e27a1d "c_h"
+ $ hg log -G
+ o 13 foo draft c_h
+ |
+ o 12 foo draft c_g
+ |
+ @ 11 foo draft c_D
+ |
+ | * 8 foo draft c_f
+ | |
+ | * 7 foo draft c_e
+ | |
+ | x 6 foo draft c_d
+ |/
+ o 2 foo draft c_c
+ |
+ o 1 other public c_b
+ |
+ o 0 other public c_a
+
+
+We should improve stack definition to also show 12 and 13 here
+ $ hg debugstack
+ 11
diff --git a/tests/test-help.t b/tests/test-help.t
--- a/tests/test-help.t
+++ b/tests/test-help.t
@@ -970,6 +970,7 @@
debugsetparents
manually set the parents of the current working directory
debugssl test a secure connection to a server
+ debugstack (no help text available)
debugsub (no help text available)
debugsuccessorssets
show set of successors for revision
diff --git a/tests/test-completion.t b/tests/test-completion.t
--- a/tests/test-completion.t
+++ b/tests/test-completion.t
@@ -113,6 +113,7 @@
debugrevspec
debugsetparents
debugssl
+ debugstack
debugsub
debugsuccessorssets
debugtemplate
@@ -293,6 +294,7 @@
debugrevspec: optimize, show-revs, show-set, show-stage, no-optimized, verify-optimized
debugsetparents:
debugssl:
+ debugstack:
debugsub: rev
debugsuccessorssets: closest
debugtemplate: rev, define
diff --git a/mercurial/debugcommands.py b/mercurial/debugcommands.py
--- a/mercurial/debugcommands.py
+++ b/mercurial/debugcommands.py
@@ -66,6 +66,7 @@
simplemerge,
smartset,
sslutil,
+ stack,
streamclone,
templater,
treediscovery,
@@ -2311,6 +2312,12 @@
finally:
s.close()
+ at command('debugstack', [])
+def debugstack(ui, repo):
+ revs = stack.getstack(repo)
+ for c in revs:
+ ui.write("%s\n" % c)
+
@command('debugsub',
[('r', 'rev', '',
_('revision to check'), _('REV'))],
To: lothiraldan, #hg-reviewers
Cc: mercurial-devel
More information about the Mercurial-devel
mailing list