[PATCH 1 of 6 V2] test: add testing of checkheads behavior with obsolete

Pierre-Yves David pierre-yves.david at ens-lyon.org
Sat Aug 25 18:54:01 CDT 2012


# HG changeset patch
# User Pierre-Yves David <pierre-yves.david at logilab.fr>
# Date 1343842505 -7200
# Node ID 409b6e1e7da93ca12b7b5c791d08cc94e4455ce4
# Parent  99a2a4ae35e2180b7f825ef2677c36d538eac4ba
test: add testing of checkheads behavior with obsolete

Expected behavior are quite complexe. Explicite testing with clear scenario are
welcome.

diff --git a/tests/test-obsolete-checkheads.t b/tests/test-obsolete-checkheads.t
new file mode 100644
--- /dev/null
+++ b/tests/test-obsolete-checkheads.t
@@ -0,0 +1,102 @@
+Check that obsolete properly strip heads
+  $ cat > obs.py << EOF
+  > import mercurial.obsolete
+  > mercurial.obsolete._enabled = True
+  > EOF
+  $ cat >> $HGRCPATH << EOF
+  > [phases]
+  > # public changeset are not obsolete
+  > publish=false
+  > [ui]
+  > logtemplate='{node|short} ({phase}) {desc|firstline}\n'
+  > [extensions]
+  > graphlog=
+  > EOF
+  $ echo "obs=${TESTTMP}/obs.py" >> $HGRCPATH
+  $ mkcommit() {
+  >    echo "$1" > "$1"
+  >    hg add "$1"
+  >    hg ci -m "add $1"
+  > }
+  $ getid() {
+  >    hg id --debug -ir "desc('$1')"
+  > }
+
+
+  $ hg init remote
+  $ cd remote
+  $ mkcommit base
+  $ hg phase --public .
+  $ cd ..
+  $ cp -r remote base
+  $ hg clone remote local
+  updating to branch default
+  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+  $ cd local
+
+New head replace old head
+==========================
+
+setup
+
+  $ mkcommit old
+  $ hg push
+  pushing to $TESTTMP/remote
+  searching for changes
+  adding changesets
+  adding manifests
+  adding file changes
+  added 1 changesets with 1 changes to 1 files
+  $ hg up -q '.^'
+  $ mkcommit new
+  created new head
+  $ hg debugobsolete `getid old` `getid new`
+  $ hg glog --hidden
+  @  71e3228bffe1 (draft) add new
+  |
+  | x  c70b08862e08 (draft) add old
+  |/
+  o  b4952fcf48cf (public) add base
+  
+  $ cp -r ../remote ../backup1
+
+old exist remotely as draft. It is obsoleted by new that we now push.
+Push should not warn about creating new head
+
+  $ hg push
+  pushing to $TESTTMP/remote
+  searching for changes
+  adding changesets
+  adding manifests
+  adding file changes
+  added 1 changesets with 1 changes to 1 files (+1 heads)
+
+old head is obsolete but remplacement in not pushed
+===========================================================
+
+setup
+
+  $ rm -fr ../remote
+  $ cp -r ../backup1 ../remote
+  $ hg up -q '.^'
+  $ mkcommit other
+  created new head
+  $ hg glog --hidden
+  @  d7d41ccbd4de (draft) add other
+  |
+  | o  71e3228bffe1 (draft) add new
+  |/
+  | x  c70b08862e08 (draft) add old
+  |/
+  o  b4952fcf48cf (public) add base
+  
+
+old exist remotely as draft. It is obsoleted by new but we don't push new.
+Push should abort n new head
+
+  $ hg push -r 'desc("other")'
+  pushing to $TESTTMP/remote
+  searching for changes
+  abort: push creates new remote head d7d41ccbd4de!
+  (did you forget to merge? use push -f to force)
+  [255]


More information about the Mercurial-devel mailing list