Patchwork [01,of,17] obsolescence: add test utility for the "branch replacement" logic during push

login
register
mail settings
Submitter Pierre-Yves David
Date April 13, 2017, 2:40 p.m.
Message ID <dabd8890b002c3cf3ae5.1492094408@nodosa.octopoid.net>
Download mbox | patch
Permalink /patch/20164/
State Accepted
Headers show

Comments

Pierre-Yves David - April 13, 2017, 2:40 p.m.
# HG changeset patch
# User Pierre-Yves David <pierre-yves.david@ens-lyon.org>
# Date 1492093345 -7200
#      Thu Apr 13 16:22:25 2017 +0200
# Node ID dabd8890b002c3cf3ae59526a956404b381e6d3e
# Parent  2bf73e351eb1bb086e30c9f58543817fb05e558c
# EXP-Topic push.checkheads
# Available At https://www.mercurial-scm.org/repo/users/marmoute/mercurial/
#              hg pull https://www.mercurial-scm.org/repo/users/marmoute/mercurial/ -r dabd8890b002
obsolescence: add test utility for the "branch replacement" logic during push

Mercurial checks for the introduction of new heads on push. Evolution comes
into play to detect if existing branches on the server are being replaced by
some of the new one we push.

The current code for this logic is very basic (eg: issue4354) and was poorly
tested. We have a better implementation coming in the evolve extension fixing
these issues and with more serious tests coverage. In the process of upstreaming
this improved logic, we start with adding the test case that are already passing
with the current implementation. Once they are all in, we'll upstream the better
implementation and the extra test case.

This changeset introduce the common setup script used by these tests.
Sean Farley - April 14, 2017, 6:38 p.m.
Pierre-Yves David <pierre-yves.david@ens-lyon.org> writes:

> # HG changeset patch
> # User Pierre-Yves David <pierre-yves.david@ens-lyon.org>
> # Date 1492093695 -7200
> #      Thu Apr 13 16:28:15 2017 +0200
> # Node ID d106f22c0f397303727ce045698076a3dc4474ba
> # Parent  6020bb1b76c86bf0b42b174c3348f98e5909e0b2
> # EXP-Topic push.checkheads
> # Available At https://www.mercurial-scm.org/repo/users/marmoute/mercurial/
> #              hg pull https://www.mercurial-scm.org/repo/users/marmoute/mercurial/ -r d106f22c0f39
> obsolescence: add test for the "branch replacement" logic during push, case D6
>
> Mercurial checks for the introduction of new heads on push. Evolution comes
> into play to detect if existing branches on the server are being replaced by
> some of the new one we push.
>
> The current code for this logic is very basic (eg: issue4354) and was poorly
> tested. We have a better implementation coming in the evolve extension fixing
> these issues and with more serious tests coverage. In the process of upstreaming
> this improved logic, we start with adding the test case that are already passing
> with the current implementation. Once they are all in, we'll upstream the better
> implementation and the extra test cases.
>
> See inline documentation for details about the test case added in this
> changeset.

Sure, seems fine to me again.
Yuya Nishihara - April 15, 2017, 7:42 a.m.
On Fri, 14 Apr 2017 11:38:35 -0700, Sean Farley wrote:
> Pierre-Yves David <pierre-yves.david@ens-lyon.org> writes:
> 
> > # HG changeset patch
> > # User Pierre-Yves David <pierre-yves.david@ens-lyon.org>
> > # Date 1492093695 -7200
> > #      Thu Apr 13 16:28:15 2017 +0200
> > # Node ID d106f22c0f397303727ce045698076a3dc4474ba
> > # Parent  6020bb1b76c86bf0b42b174c3348f98e5909e0b2
> > # EXP-Topic push.checkheads
> > # Available At https://www.mercurial-scm.org/repo/users/marmoute/mercurial/
> > #              hg pull https://www.mercurial-scm.org/repo/users/marmoute/mercurial/ -r d106f22c0f39
> > obsolescence: add test for the "branch replacement" logic during push, case D6
> >
> > Mercurial checks for the introduction of new heads on push. Evolution comes
> > into play to detect if existing branches on the server are being replaced by
> > some of the new one we push.
> >
> > The current code for this logic is very basic (eg: issue4354) and was poorly
> > tested. We have a better implementation coming in the evolve extension fixing
> > these issues and with more serious tests coverage. In the process of upstreaming
> > this improved logic, we start with adding the test case that are already passing
> > with the current implementation. Once they are all in, we'll upstream the better
> > implementation and the extra test cases.
> >
> > See inline documentation for details about the test case added in this
> > changeset.
> 
> Sure, seems fine to me again.

Queued per review, thanks.

Patch

diff --git a/tests/testlib/push-checkheads-util.sh b/tests/testlib/push-checkheads-util.sh
new file mode 100644
--- /dev/null
+++ b/tests/testlib/push-checkheads-util.sh
@@ -0,0 +1,44 @@ 
+# setup config and various utility to test new heads checks on push
+
+cat >> $HGRCPATH <<EOF
+[ui]
+# simpler log output
+logtemplate ="{node|short} ({phase}): {desc}\n"
+
+[phases]
+# non publishing server
+publish=False
+
+[extensions]
+# we need to strip some changeset for some test cases
+strip=
+
+[experimental]
+# enable evolution
+evolution=all
+
+[alias]
+# fix date used to create obsolete markers.
+debugobsolete=debugobsolete -d '0 0'
+EOF
+
+mkcommit() {
+   echo "$1" > "$1"
+   hg add "$1"
+   hg ci -m "$1"
+}
+
+getid() {
+   hg log --hidden --template '{node}\n' --rev "$1"
+}
+
+setuprepos() {
+    echo creating basic server and client repo
+    hg init server
+    cd server
+    mkcommit root
+    hg phase --public .
+    mkcommit A0
+    cd ..
+    hg clone server client
+}