tests: demonstrate that .hgsubstate isn't updated on amend stable
authorYuya Nishihara <yuya@tcha.org>
Sat, 04 Nov 2017 18:54:57 +0900
branchstable
changeset 35024 3f909147a2c3
parent 35023 5f40efa472db
child 35025 5c6b96b832c2
tests: demonstrate that .hgsubstate isn't updated on amend Loosely based on test-amend.t and test-subrepo.t
tests/test-amend-subrepo.t
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-amend-subrepo.t	Sat Nov 04 18:54:57 2017 +0900
@@ -0,0 +1,213 @@
+#testcases obsstore-off obsstore-on
+
+  $ cat << EOF >> $HGRCPATH
+  > [extensions]
+  > amend =
+  > EOF
+
+#if obsstore-on
+  $ cat << EOF >> $HGRCPATH
+  > [experimental]
+  > evolution.createmarkers = True
+  > EOF
+#endif
+
+Prepare parent repo
+-------------------
+
+  $ hg init r
+  $ cd r
+
+  $ echo a > a
+  $ hg ci -Am0
+  adding a
+
+Link first subrepo
+------------------
+
+  $ echo 's = s' >> .hgsub
+  $ hg add .hgsub
+  $ hg init s
+
+amend without .hgsub
+
+BROKEN: should say "can't commit subrepos without .hgsub"
+  $ hg amend s
+  nothing changed
+  [1]
+
+amend with subrepo
+
+BROKEN: should update .hgsubstate
+  $ hg amend
+  saved backup bundle to * (glob) (obsstore-off !)
+  $ hg status --change .
+  A .hgsub
+  A a
+
+FIX UP .hgsubstate
+
+  $ hg ci -mfix
+  $ hg rollback -q
+  $ hg add .hgsubstate
+  $ hg amend
+  saved backup bundle to * (glob) (obsstore-off !)
+
+  $ cat .hgsubstate
+  0000000000000000000000000000000000000000 s
+
+Update subrepo
+--------------
+
+add new commit to be amended
+
+  $ echo a >> a
+  $ hg ci -m1
+
+amend with dirty subrepo
+
+  $ echo a >> s/a
+  $ hg add -R s
+  adding s/a
+BROKEN: should say "uncommitted changes in subrepository"
+  $ hg amend
+  nothing changed
+  [1]
+
+amend with modified subrepo
+
+  $ hg ci -R s -m0
+BROKEN: should update .hgsubstate
+  $ hg amend
+  nothing changed
+  [1]
+  $ hg status --change .
+  M a
+
+FIX UP .hgsubstate
+
+  $ hg ci -mfix
+  $ hg rollback -q
+  $ hg amend
+  saved backup bundle to * (glob) (obsstore-off !)
+
+  $ cat .hgsubstate
+  f7b1eb17ad24730a1651fccd46c43826d1bbc2ac s
+
+revert subrepo change
+
+  $ hg up -R s -q null
+BROKEN: should update .hgsubstate
+  $ hg amend
+  nothing changed
+  [1]
+
+FIX UP .hgsubstate
+
+  $ hg ci -mfix
+  $ hg rollback -q
+  $ hg amend
+  saved backup bundle to * (glob) (obsstore-off !)
+
+  $ hg status --change .
+  M a
+
+Link another subrepo
+--------------------
+
+add new commit to be amended
+
+  $ echo b >> b
+  $ hg ci -qAm2
+
+also checks if non-subrepo change is included
+
+  $ echo a >> a
+
+amend with another subrepo
+
+  $ hg init t
+  $ echo b >> t/b
+  $ hg ci -R t -Am0
+  adding b
+  $ echo 't = t' >> .hgsub
+BROKEN: should update .hgsubstate
+  $ hg amend
+  saved backup bundle to * (glob) (obsstore-off !)
+  $ hg status --change .
+  M .hgsub
+  M a
+  A b
+
+FIX UP .hgsubstate
+
+  $ hg ci -mfix
+  $ hg rollback -q
+  $ hg amend
+  saved backup bundle to * (glob) (obsstore-off !)
+
+  $ cat .hgsubstate
+  0000000000000000000000000000000000000000 s
+  bfb1a4fb358498a9533dabf4f2043d94162f1fcd t
+
+Unlink one subrepo
+------------------
+
+add new commit to be amended
+
+  $ echo a >> a
+  $ hg ci -m3
+
+amend with one subrepo dropped
+
+  $ echo 't = t' > .hgsub
+BROKEN: should update .hgsubstate
+  $ hg amend
+  saved backup bundle to * (glob) (obsstore-off !)
+  $ hg status --change .
+  M .hgsub
+  M a
+
+FIX UP .hgsubstate
+
+  $ echo 's = s' > .hgsub
+  $ hg amend -q
+  $ echo 't = t' > .hgsub
+  $ hg ci -mfix
+  $ hg rollback -q
+  $ hg amend
+  saved backup bundle to * (glob) (obsstore-off !)
+
+  $ cat .hgsubstate
+  bfb1a4fb358498a9533dabf4f2043d94162f1fcd t
+
+Unlink subrepos completely
+--------------------------
+
+add new commit to be amended
+
+  $ echo a >> a
+  $ hg ci -m3
+
+amend with .hgsub removed
+
+  $ hg rm .hgsub
+BROKEN: should update .hgsubstate
+  $ hg amend
+  saved backup bundle to * (glob) (obsstore-off !)
+  $ hg status --change .
+  M a
+  R .hgsub
+
+FIX UP .hgsubstate
+
+  $ hg forget .hgsubstate
+  $ hg amend
+  saved backup bundle to * (glob) (obsstore-off !)
+
+  $ hg status --change .
+  M a
+  R .hgsub
+  R .hgsubstate
+
+  $ cd ..