Patchwork test-manifestv2.t: test that we can convert to manifestv2 with clone

login
register
mail settings
Submitter Drew Gottlieb
Date May 5, 2015, 10:59 p.m.
Message ID <3df093b5de908329a655.1430866744@waste.org>
Download mbox | patch
Permalink /patch/8917/
State Accepted
Headers show

Comments

Drew Gottlieb - May 5, 2015, 10:59 p.m.
# HG changeset patch
# User Drew Gottlieb <drgott@google.com>
# Date 1430865181 25200
#      Tue May 05 15:33:01 2015 -0700
# Node ID 3df093b5de908329a655061d0d70662e9ec07c4c
# Parent  c5d4f9cc8da7bb2068457e96e4f74ff694514ced
test-manifestv2.t: test that we can convert to manifestv2 with clone

This just adds a test to ensure that we can convert a manifestv1 repo to a
manifestv2 repo (for future commits only) by means of a local clone.
Adrian Buehlmann - May 5, 2015, 11:27 p.m.
On 2015-05-06 00:59, Drew Gottlieb wrote:
> # HG changeset patch
> # User Drew Gottlieb <drgott@google.com>
> # Date 1430865181 25200
> #      Tue May 05 15:33:01 2015 -0700
> # Node ID 3df093b5de908329a655061d0d70662e9ec07c4c
> # Parent  c5d4f9cc8da7bb2068457e96e4f74ff694514ced
> test-manifestv2.t: test that we can convert to manifestv2 with clone
> 
> This just adds a test to ensure that we can convert a manifestv1 repo to a
> manifestv2 repo (for future commits only) by means of a local clone.
> 
> diff --git a/tests/test-manifestv2.t b/tests/test-manifestv2.t
> --- a/tests/test-manifestv2.t
> +++ b/tests/test-manifestv2.t
> @@ -1,4 +1,71 @@
> -Check that entry is added to .hg/requires
> +Create repo with old manifest
> +
> +  $ hg init existing
> +  $ cd existing
> +  $ echo footext > foo
> +  $ hg add foo
> +  $ hg commit -m initial
> +
> +We're using v1, so no manifestv2 entry is in requires yet.
> +
> +  $ grep manifestv2 .hg/requires
> +  [1]
> +
> +Let's clone this with manifestv2 enabled to switch to the new format for
> +future commits.
> +
> +  $ cd ..
> +  $ hg clone --pull existing new --config experimental.manifestv2=1
> +  requesting all changes
> +  adding changesets
> +  adding manifests
> +  adding file changes
> +  added 1 changesets with 1 changes to 1 files
> +  updating to branch default
> +  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
> +  $ cd new
> +
> +Check that entry was added to .hg/requires.
> +
> +  $ grep manifestv2 .hg/requires
> +  manifestv2
> +
> +Make a new commit.
> +
> +  $ echo newfootext > foo
> +  $ hg commit -m new
> +
> +Check that the manifest actually switched to v2.
> +
> +  $ hg debugdata -m 0
> +  foo\x0021e958b1dca695a60ee2e9cf151753204ee0f9e9 (esc)
> +
> +  $ hg debugdata -m 1
> +  \x00 (esc)
> +  \x00foo\x00 (esc)
> +  I\xab\x7f\xb8(\x83\xcas\x15\x9d\xc2\xd3\xd3:5\x08\xbad5_ (esc)
> +
> +Check that manifestv2 is used if the requirement is present, even if it's
> +disabled in the config.
> +
> +  $ echo newerfootext > foo
> +  $ hg --config experimental.manifestv2=False commit -m newer
> +

..

> +  $ grep manifestv2 .hg/requires
> +  manifestv2

Nitpick: I think you can leave away this one (goal: keep tests as
minimal as possible). It's very unlikely that anyone ever manages to get
a patch in which would remove an entry from .hg/requires. That file is
written at repo creation.

> +  $ hg debugdata -m 2
> +  \x00 (esc)
> +  \x00foo\x00 (esc)
> +  \xa6\xb1\xfb\xef]\x91\xa1\x19`\xf3.#\x90S\xf8\x06 \xe2\x19\x00 (esc)
> +
> +Check that we can still read v1 manifests.
> +
> +  $ hg files -r 0
> +  foo
> +
> +  $ cd ..
> +
> +Check that entry is added to .hg/requires on repo creation
>  
>    $ hg --config experimental.manifestv2=True init repo
>    $ cd repo

Other than that: Nice testcase additions!
Drew Gottlieb - May 6, 2015, 1:02 a.m.
I agree. Matt, feel free to drop those two lines.

On Tue, May 5, 2015 at 4:27 PM Adrian Buehlmann <adrian@cadifra.com> wrote:

> On 2015-05-06 00:59, Drew Gottlieb wrote:
> > # HG changeset patch
> > # User Drew Gottlieb <drgott@google.com>
> > # Date 1430865181 25200
> > #      Tue May 05 15:33:01 2015 -0700
> > # Node ID 3df093b5de908329a655061d0d70662e9ec07c4c
> > # Parent  c5d4f9cc8da7bb2068457e96e4f74ff694514ced
> > test-manifestv2.t: test that we can convert to manifestv2 with clone
> >
> > This just adds a test to ensure that we can convert a manifestv1 repo to
> a
> > manifestv2 repo (for future commits only) by means of a local clone.
> >
> > diff --git a/tests/test-manifestv2.t b/tests/test-manifestv2.t
> > --- a/tests/test-manifestv2.t
> > +++ b/tests/test-manifestv2.t
> > @@ -1,4 +1,71 @@
> > -Check that entry is added to .hg/requires
> > +Create repo with old manifest
> > +
> > +  $ hg init existing
> > +  $ cd existing
> > +  $ echo footext > foo
> > +  $ hg add foo
> > +  $ hg commit -m initial
> > +
> > +We're using v1, so no manifestv2 entry is in requires yet.
> > +
> > +  $ grep manifestv2 .hg/requires
> > +  [1]
> > +
> > +Let's clone this with manifestv2 enabled to switch to the new format for
> > +future commits.
> > +
> > +  $ cd ..
> > +  $ hg clone --pull existing new --config experimental.manifestv2=1
> > +  requesting all changes
> > +  adding changesets
> > +  adding manifests
> > +  adding file changes
> > +  added 1 changesets with 1 changes to 1 files
> > +  updating to branch default
> > +  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
> > +  $ cd new
> > +
> > +Check that entry was added to .hg/requires.
> > +
> > +  $ grep manifestv2 .hg/requires
> > +  manifestv2
> > +
> > +Make a new commit.
> > +
> > +  $ echo newfootext > foo
> > +  $ hg commit -m new
> > +
> > +Check that the manifest actually switched to v2.
> > +
> > +  $ hg debugdata -m 0
> > +  foo\x0021e958b1dca695a60ee2e9cf151753204ee0f9e9 (esc)
> > +
> > +  $ hg debugdata -m 1
> > +  \x00 (esc)
> > +  \x00foo\x00 (esc)
> > +  I\xab\x7f\xb8(\x83\xcas\x15\x9d\xc2\xd3\xd3:5\x08\xbad5_ (esc)
> > +
> > +Check that manifestv2 is used if the requirement is present, even if
> it's
> > +disabled in the config.
> > +
> > +  $ echo newerfootext > foo
> > +  $ hg --config experimental.manifestv2=False commit -m newer
> > +
>
> ..
>
> > +  $ grep manifestv2 .hg/requires
> > +  manifestv2
>
> Nitpick: I think you can leave away this one (goal: keep tests as
> minimal as possible). It's very unlikely that anyone ever manages to get
> a patch in which would remove an entry from .hg/requires. That file is
> written at repo creation.
>
> > +  $ hg debugdata -m 2
> > +  \x00 (esc)
> > +  \x00foo\x00 (esc)
> > +  \xa6\xb1\xfb\xef]\x91\xa1\x19`\xf3.#\x90S\xf8\x06 \xe2\x19\x00 (esc)
> > +
> > +Check that we can still read v1 manifests.
> > +
> > +  $ hg files -r 0
> > +  foo
> > +
> > +  $ cd ..
> > +
> > +Check that entry is added to .hg/requires on repo creation
> >
> >    $ hg --config experimental.manifestv2=True init repo
> >    $ cd repo
>
> Other than that: Nice testcase additions!
>
Martin von Zweigbergk - May 6, 2015, 4:42 a.m.
On Tue, May 5, 2015 at 6:03 PM Drew Gottlieb <drgott@google.com> wrote:

> I agree. Matt, feel free to drop those two lines.
>

Done. I'll just go ahead and push this to the clowncopter since we have
already gotten a review by someone outside of our team (thanks, Adrian).


>
> On Tue, May 5, 2015 at 4:27 PM Adrian Buehlmann <adrian@cadifra.com>
> wrote:
>
>> On 2015-05-06 00:59, Drew Gottlieb wrote:
>> > # HG changeset patch
>> > # User Drew Gottlieb <drgott@google.com>
>> > # Date 1430865181 25200
>> > #      Tue May 05 15:33:01 2015 -0700
>> > # Node ID 3df093b5de908329a655061d0d70662e9ec07c4c
>> > # Parent  c5d4f9cc8da7bb2068457e96e4f74ff694514ced
>> > test-manifestv2.t: test that we can convert to manifestv2 with clone
>> >
>> > This just adds a test to ensure that we can convert a manifestv1 repo
>> to a
>> > manifestv2 repo (for future commits only) by means of a local clone.
>> >
>> > diff --git a/tests/test-manifestv2.t b/tests/test-manifestv2.t
>> > --- a/tests/test-manifestv2.t
>> > +++ b/tests/test-manifestv2.t
>> > @@ -1,4 +1,71 @@
>> > -Check that entry is added to .hg/requires
>> > +Create repo with old manifest
>> > +
>> > +  $ hg init existing
>> > +  $ cd existing
>> > +  $ echo footext > foo
>> > +  $ hg add foo
>> > +  $ hg commit -m initial
>> > +
>> > +We're using v1, so no manifestv2 entry is in requires yet.
>> > +
>> > +  $ grep manifestv2 .hg/requires
>> > +  [1]
>> > +
>> > +Let's clone this with manifestv2 enabled to switch to the new format
>> for
>> > +future commits.
>> > +
>> > +  $ cd ..
>> > +  $ hg clone --pull existing new --config experimental.manifestv2=1
>> > +  requesting all changes
>> > +  adding changesets
>> > +  adding manifests
>> > +  adding file changes
>> > +  added 1 changesets with 1 changes to 1 files
>> > +  updating to branch default
>> > +  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
>> > +  $ cd new
>> > +
>> > +Check that entry was added to .hg/requires.
>> > +
>> > +  $ grep manifestv2 .hg/requires
>> > +  manifestv2
>> > +
>> > +Make a new commit.
>> > +
>> > +  $ echo newfootext > foo
>> > +  $ hg commit -m new
>> > +
>> > +Check that the manifest actually switched to v2.
>> > +
>> > +  $ hg debugdata -m 0
>> > +  foo\x0021e958b1dca695a60ee2e9cf151753204ee0f9e9 (esc)
>> > +
>> > +  $ hg debugdata -m 1
>> > +  \x00 (esc)
>> > +  \x00foo\x00 (esc)
>> > +  I\xab\x7f\xb8(\x83\xcas\x15\x9d\xc2\xd3\xd3:5\x08\xbad5_ (esc)
>> > +
>> > +Check that manifestv2 is used if the requirement is present, even if
>> it's
>> > +disabled in the config.
>> > +
>> > +  $ echo newerfootext > foo
>> > +  $ hg --config experimental.manifestv2=False commit -m newer
>> > +
>>
>> ..
>>
>> > +  $ grep manifestv2 .hg/requires
>> > +  manifestv2
>>
>> Nitpick: I think you can leave away this one (goal: keep tests as
>> minimal as possible). It's very unlikely that anyone ever manages to get
>> a patch in which would remove an entry from .hg/requires. That file is
>> written at repo creation.
>>
>> > +  $ hg debugdata -m 2
>> > +  \x00 (esc)
>> > +  \x00foo\x00 (esc)
>> > +  \xa6\xb1\xfb\xef]\x91\xa1\x19`\xf3.#\x90S\xf8\x06 \xe2\x19\x00 (esc)
>> > +
>> > +Check that we can still read v1 manifests.
>> > +
>> > +  $ hg files -r 0
>> > +  foo
>> > +
>> > +  $ cd ..
>> > +
>> > +Check that entry is added to .hg/requires on repo creation
>> >
>> >    $ hg --config experimental.manifestv2=True init repo
>> >    $ cd repo
>>
>> Other than that: Nice testcase additions!
>>
> _______________________________________________
> Mercurial-devel mailing list
> Mercurial-devel@selenic.com
> http://selenic.com/mailman/listinfo/mercurial-devel
>

Patch

diff --git a/tests/test-manifestv2.t b/tests/test-manifestv2.t
--- a/tests/test-manifestv2.t
+++ b/tests/test-manifestv2.t
@@ -1,4 +1,71 @@ 
-Check that entry is added to .hg/requires
+Create repo with old manifest
+
+  $ hg init existing
+  $ cd existing
+  $ echo footext > foo
+  $ hg add foo
+  $ hg commit -m initial
+
+We're using v1, so no manifestv2 entry is in requires yet.
+
+  $ grep manifestv2 .hg/requires
+  [1]
+
+Let's clone this with manifestv2 enabled to switch to the new format for
+future commits.
+
+  $ cd ..
+  $ hg clone --pull existing new --config experimental.manifestv2=1
+  requesting all changes
+  adding changesets
+  adding manifests
+  adding file changes
+  added 1 changesets with 1 changes to 1 files
+  updating to branch default
+  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+  $ cd new
+
+Check that entry was added to .hg/requires.
+
+  $ grep manifestv2 .hg/requires
+  manifestv2
+
+Make a new commit.
+
+  $ echo newfootext > foo
+  $ hg commit -m new
+
+Check that the manifest actually switched to v2.
+
+  $ hg debugdata -m 0
+  foo\x0021e958b1dca695a60ee2e9cf151753204ee0f9e9 (esc)
+
+  $ hg debugdata -m 1
+  \x00 (esc)
+  \x00foo\x00 (esc)
+  I\xab\x7f\xb8(\x83\xcas\x15\x9d\xc2\xd3\xd3:5\x08\xbad5_ (esc)
+
+Check that manifestv2 is used if the requirement is present, even if it's
+disabled in the config.
+
+  $ echo newerfootext > foo
+  $ hg --config experimental.manifestv2=False commit -m newer
+
+  $ grep manifestv2 .hg/requires
+  manifestv2
+  $ hg debugdata -m 2
+  \x00 (esc)
+  \x00foo\x00 (esc)
+  \xa6\xb1\xfb\xef]\x91\xa1\x19`\xf3.#\x90S\xf8\x06 \xe2\x19\x00 (esc)
+
+Check that we can still read v1 manifests.
+
+  $ hg files -r 0
+  foo
+
+  $ cd ..
+
+Check that entry is added to .hg/requires on repo creation
 
   $ hg --config experimental.manifestv2=True init repo
   $ cd repo