##// END OF EJS Templates
tests: setup dummyssh as the default ssh...
tests: setup dummyssh as the default ssh To significantly reduce boilerplate in tests. One test is updated to show that it works, I expect to do the rest in follow up commits. Differential Revision: https://phab.mercurial-scm.org/D11244

File last commit:

r47739:3f87d2af default
r48731:a28a7dcb default
Show More
test-bundle2-remote-changegroup.t
610 lines | 20.6 KiB | text/troff | Tads3Lexer
/ tests / test-bundle2-remote-changegroup.t
Gregory Szorc
tests: test using both versions of SSH protocol...
r36235 #testcases sshv1 sshv2
#if sshv2
$ cat >> $HGRCPATH << EOF
> [experimental]
> sshpeer.advertise-v2 = true
> sshserver.support-v2 = true
> EOF
#endif
Mike Hommey
bundle2: client side support for a part to import external bundles...
r23029 Create an extension to test bundle2 remote-changegroup parts
$ cat > bundle2.py << EOF
> """A small extension to test bundle2 remote-changegroup parts.
>
> Current bundle2 implementation doesn't provide a way to generate those
> parts, so they must be created by extensions.
> """
Yuya Nishihara
py3: don't str() to byte-stringify object in test-bundle2-remote-changegroup.t
r38722 > from mercurial import (
> bundle2,
> changegroup,
> discovery,
> exchange,
> pycompat,
> util,
> )
Mike Hommey
bundle2: client side support for a part to import external bundles...
r23029 >
> def _getbundlechangegrouppart(bundler, repo, source, bundlecaps=None,
> b2caps=None, heads=None, common=None,
> **kwargs):
> """this function replaces the changegroup part handler for getbundle.
> It allows to create a set of arbitrary parts containing changegroups
> and remote-changegroups, as described in a bundle2maker file in the
> repository .hg/ directory.
>
> Each line of that bundle2maker file contain a description of the
> part to add:
> - changegroup common_revset heads_revset
> Creates a changegroup part based, using common_revset and
Pierre-Yves David
getchangegroup: take an 'outgoing' object as argument (API)...
r29807 > heads_revset for outgoing
Mike Hommey
bundle2: client side support for a part to import external bundles...
r23029 > - remote-changegroup url file
> Creates a remote-changegroup part for a bundle at the given
> url. Size and digest, as required by the client, are computed
> from the given file.
> - raw-remote-changegroup <python expression>
> Creates a remote-changegroup part with the data given in the
Augie Fackler
tests: capitalize Python when it's not used as a command name...
r33261 > Python expression as parameters. The Python expression is
Mike Hommey
bundle2: client side support for a part to import external bundles...
r23029 > evaluated with eval, and is expected to be a dict.
> """
Yuya Nishihara
py3: byte-stringify literals in extension in test-bundle2-remote-changegroup.t...
r38721 > def newpart(name, data=b''):
Mike Hommey
bundle2: client side support for a part to import external bundles...
r23029 > """wrapper around bundler.newpart adding an extra part making the
> client output information about each processed part"""
Yuya Nishihara
py3: byte-stringify literals in extension in test-bundle2-remote-changegroup.t...
r38721 > bundler.newpart(b'output', data=name)
Mike Hommey
bundle2: client side support for a part to import external bundles...
r23029 > part = bundler.newpart(name, data=data)
> return part
>
Yuya Nishihara
py3: byte-stringify literals in extension in test-bundle2-remote-changegroup.t...
r38721 > for line in open(repo.vfs.join(b'bundle2maker'), 'rb'):
Mike Hommey
bundle2: client side support for a part to import external bundles...
r23029 > line = line.strip()
> try:
> verb, args = line.split(None, 1)
> except ValueError:
Yuya Nishihara
py3: byte-stringify literals in extension in test-bundle2-remote-changegroup.t...
r38721 > verb, args = line, b''
> if verb == b'remote-changegroup':
Mike Hommey
bundle2: client side support for a part to import external bundles...
r23029 > url, file = args.split()
> bundledata = open(file, 'rb').read()
Yuya Nishihara
py3: byte-stringify literals in extension in test-bundle2-remote-changegroup.t...
r38721 > digest = util.digester.preferred(b2caps[b'digests'])
Mike Hommey
bundle2: client side support for a part to import external bundles...
r23029 > d = util.digester([digest], bundledata)
Yuya Nishihara
py3: byte-stringify literals in extension in test-bundle2-remote-changegroup.t...
r38721 > part = newpart(b'remote-changegroup')
> part.addparam(b'url', url)
Yuya Nishihara
py3: don't str() to byte-stringify object in test-bundle2-remote-changegroup.t
r38722 > part.addparam(b'size', b'%d' % len(bundledata))
Yuya Nishihara
py3: byte-stringify literals in extension in test-bundle2-remote-changegroup.t...
r38721 > part.addparam(b'digests', digest)
> part.addparam(b'digest:%s' % digest, d[digest])
> elif verb == b'raw-remote-changegroup':
> part = newpart(b'remote-changegroup')
Mike Hommey
bundle2: client side support for a part to import external bundles...
r23029 > for k, v in eval(args).items():
Yuya Nishihara
py3: don't str() to byte-stringify object in test-bundle2-remote-changegroup.t
r38722 > part.addparam(pycompat.sysbytes(k), pycompat.bytestr(v))
Yuya Nishihara
py3: byte-stringify literals in extension in test-bundle2-remote-changegroup.t...
r38721 > elif verb == b'changegroup':
Mike Hommey
bundle2: client side support for a part to import external bundles...
r23029 > _common, heads = args.split()
Martin von Zweigbergk
tests: avoid repo.lookup() for converting revnum to nodeid...
r37326 > common.extend(repo[r].node() for r in repo.revs(_common))
> heads = [repo[r].node() for r in repo.revs(heads)]
Pierre-Yves David
getchangegroup: take an 'outgoing' object as argument (API)...
r29807 > outgoing = discovery.outgoing(repo, common, heads)
Yuya Nishihara
py3: byte-stringify literals in extension in test-bundle2-remote-changegroup.t...
r38721 > cg = changegroup.makechangegroup(repo, outgoing, b'01',
> b'changegroup')
> newpart(b'changegroup', cg.getchunks())
Mike Hommey
bundle2: client side support for a part to import external bundles...
r23029 > else:
> raise Exception('unknown verb')
>
Yuya Nishihara
py3: byte-stringify literals in extension in test-bundle2-remote-changegroup.t...
r38721 > exchange.getbundle2partsmapping[b'changegroup'] = _getbundlechangegrouppart
Mike Hommey
bundle2: client side support for a part to import external bundles...
r23029 > EOF
Start a simple HTTP server to serve bundles
Matt Harbison
tests: quote PYTHON usage...
r39743 $ "$PYTHON" "$TESTDIR/dumbhttp.py" -p $HGPORT --pid dumb.pid
Mike Hommey
bundle2: client side support for a part to import external bundles...
r23029 $ cat dumb.pid >> $DAEMON_PIDS
$ cat >> $HGRCPATH << EOF
> [ui]
Matt Harbison
tests: quote PYTHON usage...
r39743 > ssh="$PYTHON" "$TESTDIR/dummyssh"
Martin von Zweigbergk
config: add a new [command-templates] section for templates defined by hg...
r46350 > [command-templates]
> log={rev}:{node|short} {phase} {author} {bookmarks} {desc|firstline}
Mike Hommey
bundle2: client side support for a part to import external bundles...
r23029 > EOF
$ hg init repo
$ hg -R repo unbundle $TESTDIR/bundles/rebase.hg
adding changesets
adding manifests
adding file changes
added 8 changesets with 7 changes to 7 files (+2 heads)
Boris Feld
phase: report number of non-public changeset alongside the new range...
r39516 new changesets cd010b8cd998:02de42196ebe (8 drafts)
Mike Hommey
bundle2: client side support for a part to import external bundles...
r23029 (run 'hg heads' to see heads, 'hg merge' to merge)
$ hg -R repo log -G
o 7:02de42196ebe draft Nicolas Dumazet <nicdumz.commits@gmail.com> H
|
| o 6:eea13746799a draft Nicolas Dumazet <nicdumz.commits@gmail.com> G
|/|
o | 5:24b6387c8c8c draft Nicolas Dumazet <nicdumz.commits@gmail.com> F
| |
| o 4:9520eea781bc draft Nicolas Dumazet <nicdumz.commits@gmail.com> E
|/
| o 3:32af7686d403 draft Nicolas Dumazet <nicdumz.commits@gmail.com> D
| |
| o 2:5fddd98957c8 draft Nicolas Dumazet <nicdumz.commits@gmail.com> C
| |
| o 1:42ccdea3bb16 draft Nicolas Dumazet <nicdumz.commits@gmail.com> B
|/
o 0:cd010b8cd998 draft Nicolas Dumazet <nicdumz.commits@gmail.com> A
$ hg clone repo orig
updating to branch default
3 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ cat > repo/.hg/hgrc << EOF
> [extensions]
> bundle2=$TESTTMP/bundle2.py
> EOF
Test a pull with an remote-changegroup
Pierre-Yves David
test: enforce v1 type in 'test-bundle2-remote-changegroup.t'...
r26773 $ hg bundle -R repo --type v1 --base '0:4' -r '5:7' bundle.hg
Mike Hommey
bundle2: client side support for a part to import external bundles...
r23029 3 changesets found
$ cat > repo/.hg/bundle2maker << EOF
> remote-changegroup http://localhost:$HGPORT/bundle.hg bundle.hg
> EOF
$ hg clone orig clone -r 3 -r 4
adding changesets
adding manifests
adding file changes
added 5 changesets with 5 changes to 5 files (+1 heads)
Denis Laxalde
transaction-summary: show the range of new revisions upon pull/unbundle (BC)...
r34662 new changesets cd010b8cd998:9520eea781bc
Mike Hommey
bundle2: client side support for a part to import external bundles...
r23029 updating to branch default
4 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ hg pull -R clone ssh://user@dummy/repo
pulling from ssh://user@dummy/repo
searching for changes
Pierre-Yves David
bundle2: rename format, parts and config to final names...
r24686 remote: remote-changegroup
Mike Hommey
bundle2: client side support for a part to import external bundles...
r23029 adding changesets
adding manifests
adding file changes
added 3 changesets with 2 changes to 2 files (+1 heads)
Denis Laxalde
transaction-summary: show the range of new revisions upon pull/unbundle (BC)...
r34662 new changesets 24b6387c8c8c:02de42196ebe
Mike Hommey
bundle2: client side support for a part to import external bundles...
r23029 (run 'hg heads .' to see heads, 'hg merge' to merge)
$ hg -R clone log -G
o 7:02de42196ebe public Nicolas Dumazet <nicdumz.commits@gmail.com> H
|
| o 6:eea13746799a public Nicolas Dumazet <nicdumz.commits@gmail.com> G
|/|
o | 5:24b6387c8c8c public Nicolas Dumazet <nicdumz.commits@gmail.com> F
| |
| o 4:9520eea781bc public Nicolas Dumazet <nicdumz.commits@gmail.com> E
|/
| @ 3:32af7686d403 public Nicolas Dumazet <nicdumz.commits@gmail.com> D
| |
| o 2:5fddd98957c8 public Nicolas Dumazet <nicdumz.commits@gmail.com> C
| |
| o 1:42ccdea3bb16 public Nicolas Dumazet <nicdumz.commits@gmail.com> B
|/
o 0:cd010b8cd998 public Nicolas Dumazet <nicdumz.commits@gmail.com> A
$ rm -rf clone
Test a pull with an remote-changegroup and a following changegroup
Pierre-Yves David
test: enforce v1 type in 'test-bundle2-remote-changegroup.t'...
r26773 $ hg bundle -R repo --type v1 --base 2 -r '3:4' bundle2.hg
Mike Hommey
bundle2: client side support for a part to import external bundles...
r23029 2 changesets found
$ cat > repo/.hg/bundle2maker << EOF
> remote-changegroup http://localhost:$HGPORT/bundle2.hg bundle2.hg
> changegroup 0:4 5:7
> EOF
$ hg clone orig clone -r 2
adding changesets
adding manifests
adding file changes
added 3 changesets with 3 changes to 3 files
Denis Laxalde
transaction-summary: show the range of new revisions upon pull/unbundle (BC)...
r34662 new changesets cd010b8cd998:5fddd98957c8
Mike Hommey
bundle2: client side support for a part to import external bundles...
r23029 updating to branch default
3 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ hg pull -R clone ssh://user@dummy/repo
pulling from ssh://user@dummy/repo
searching for changes
Pierre-Yves David
bundle2: rename format, parts and config to final names...
r24686 remote: remote-changegroup
Mike Hommey
bundle2: client side support for a part to import external bundles...
r23029 adding changesets
adding manifests
adding file changes
Pierre-Yves David
bundle2: rename format, parts and config to final names...
r24686 remote: changegroup
Mike Hommey
bundle2: client side support for a part to import external bundles...
r23029 adding changesets
adding manifests
adding file changes
changegroup: move message about added changes to transaction summary...
r43167 added 5 changesets with 4 changes to 4 files (+2 heads)
Denis Laxalde
transaction-summary: show the range of new revisions upon pull/unbundle (BC)...
r34662 new changesets 32af7686d403:02de42196ebe
Mike Hommey
bundle2: client side support for a part to import external bundles...
r23029 (run 'hg heads' to see heads, 'hg merge' to merge)
$ hg -R clone log -G
o 7:02de42196ebe public Nicolas Dumazet <nicdumz.commits@gmail.com> H
|
| o 6:eea13746799a public Nicolas Dumazet <nicdumz.commits@gmail.com> G
|/|
o | 5:24b6387c8c8c public Nicolas Dumazet <nicdumz.commits@gmail.com> F
| |
| o 4:9520eea781bc public Nicolas Dumazet <nicdumz.commits@gmail.com> E
|/
| o 3:32af7686d403 public Nicolas Dumazet <nicdumz.commits@gmail.com> D
| |
| @ 2:5fddd98957c8 public Nicolas Dumazet <nicdumz.commits@gmail.com> C
| |
| o 1:42ccdea3bb16 public Nicolas Dumazet <nicdumz.commits@gmail.com> B
|/
o 0:cd010b8cd998 public Nicolas Dumazet <nicdumz.commits@gmail.com> A
$ rm -rf clone
Test a pull with a changegroup followed by an remote-changegroup
Pierre-Yves David
test: enforce v1 type in 'test-bundle2-remote-changegroup.t'...
r26773 $ hg bundle -R repo --type v1 --base '0:4' -r '5:7' bundle3.hg
Mike Hommey
bundle2: client side support for a part to import external bundles...
r23029 3 changesets found
$ cat > repo/.hg/bundle2maker << EOF
> changegroup 000000000000 :4
> remote-changegroup http://localhost:$HGPORT/bundle3.hg bundle3.hg
> EOF
$ hg clone orig clone -r 2
adding changesets
adding manifests
adding file changes
added 3 changesets with 3 changes to 3 files
Denis Laxalde
transaction-summary: show the range of new revisions upon pull/unbundle (BC)...
r34662 new changesets cd010b8cd998:5fddd98957c8
Mike Hommey
bundle2: client side support for a part to import external bundles...
r23029 updating to branch default
3 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ hg pull -R clone ssh://user@dummy/repo
pulling from ssh://user@dummy/repo
searching for changes
Pierre-Yves David
bundle2: rename format, parts and config to final names...
r24686 remote: changegroup
Mike Hommey
bundle2: client side support for a part to import external bundles...
r23029 adding changesets
adding manifests
adding file changes
Pierre-Yves David
bundle2: rename format, parts and config to final names...
r24686 remote: remote-changegroup
Mike Hommey
bundle2: client side support for a part to import external bundles...
r23029 adding changesets
adding manifests
adding file changes
changegroup: move message about added changes to transaction summary...
r43167 added 5 changesets with 4 changes to 4 files (+2 heads)
Denis Laxalde
transaction-summary: show the range of new revisions upon pull/unbundle (BC)...
r34662 new changesets 32af7686d403:02de42196ebe
Mike Hommey
bundle2: client side support for a part to import external bundles...
r23029 (run 'hg heads' to see heads, 'hg merge' to merge)
$ hg -R clone log -G
o 7:02de42196ebe public Nicolas Dumazet <nicdumz.commits@gmail.com> H
|
| o 6:eea13746799a public Nicolas Dumazet <nicdumz.commits@gmail.com> G
|/|
o | 5:24b6387c8c8c public Nicolas Dumazet <nicdumz.commits@gmail.com> F
| |
| o 4:9520eea781bc public Nicolas Dumazet <nicdumz.commits@gmail.com> E
|/
| o 3:32af7686d403 public Nicolas Dumazet <nicdumz.commits@gmail.com> D
| |
| @ 2:5fddd98957c8 public Nicolas Dumazet <nicdumz.commits@gmail.com> C
| |
| o 1:42ccdea3bb16 public Nicolas Dumazet <nicdumz.commits@gmail.com> B
|/
o 0:cd010b8cd998 public Nicolas Dumazet <nicdumz.commits@gmail.com> A
$ rm -rf clone
Test a pull with two remote-changegroups and a changegroup
Pierre-Yves David
test: enforce v1 type in 'test-bundle2-remote-changegroup.t'...
r26773 $ hg bundle -R repo --type v1 --base 2 -r '3:4' bundle4.hg
Mike Hommey
bundle2: client side support for a part to import external bundles...
r23029 2 changesets found
Pierre-Yves David
test: enforce v1 type in 'test-bundle2-remote-changegroup.t'...
r26773 $ hg bundle -R repo --type v1 --base '3:4' -r '5:6' bundle5.hg
Mike Hommey
bundle2: client side support for a part to import external bundles...
r23029 2 changesets found
$ cat > repo/.hg/bundle2maker << EOF
> remote-changegroup http://localhost:$HGPORT/bundle4.hg bundle4.hg
> remote-changegroup http://localhost:$HGPORT/bundle5.hg bundle5.hg
> changegroup 0:6 7
> EOF
$ hg clone orig clone -r 2
adding changesets
adding manifests
adding file changes
added 3 changesets with 3 changes to 3 files
Denis Laxalde
transaction-summary: show the range of new revisions upon pull/unbundle (BC)...
r34662 new changesets cd010b8cd998:5fddd98957c8
Mike Hommey
bundle2: client side support for a part to import external bundles...
r23029 updating to branch default
3 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ hg pull -R clone ssh://user@dummy/repo
pulling from ssh://user@dummy/repo
searching for changes
Pierre-Yves David
bundle2: rename format, parts and config to final names...
r24686 remote: remote-changegroup
Mike Hommey
bundle2: client side support for a part to import external bundles...
r23029 adding changesets
adding manifests
adding file changes
Pierre-Yves David
bundle2: rename format, parts and config to final names...
r24686 remote: remote-changegroup
Mike Hommey
bundle2: client side support for a part to import external bundles...
r23029 adding changesets
adding manifests
adding file changes
Pierre-Yves David
bundle2: rename format, parts and config to final names...
r24686 remote: changegroup
Mike Hommey
bundle2: client side support for a part to import external bundles...
r23029 adding changesets
adding manifests
adding file changes
changegroup: move message about added changes to transaction summary...
r43167 added 5 changesets with 4 changes to 4 files (+2 heads)
Denis Laxalde
transaction-summary: show the range of new revisions upon pull/unbundle (BC)...
r34662 new changesets 32af7686d403:02de42196ebe
Mike Hommey
bundle2: client side support for a part to import external bundles...
r23029 (run 'hg heads' to see heads, 'hg merge' to merge)
$ hg -R clone log -G
o 7:02de42196ebe public Nicolas Dumazet <nicdumz.commits@gmail.com> H
|
| o 6:eea13746799a public Nicolas Dumazet <nicdumz.commits@gmail.com> G
|/|
o | 5:24b6387c8c8c public Nicolas Dumazet <nicdumz.commits@gmail.com> F
| |
| o 4:9520eea781bc public Nicolas Dumazet <nicdumz.commits@gmail.com> E
|/
| o 3:32af7686d403 public Nicolas Dumazet <nicdumz.commits@gmail.com> D
| |
| @ 2:5fddd98957c8 public Nicolas Dumazet <nicdumz.commits@gmail.com> C
| |
| o 1:42ccdea3bb16 public Nicolas Dumazet <nicdumz.commits@gmail.com> B
|/
o 0:cd010b8cd998 public Nicolas Dumazet <nicdumz.commits@gmail.com> A
$ rm -rf clone
Hash digest tests
Pierre-Yves David
test: enforce v1 type in 'test-bundle2-remote-changegroup.t'...
r26773 $ hg bundle -R repo --type v1 -a bundle6.hg
Mike Hommey
bundle2: client side support for a part to import external bundles...
r23029 8 changesets found
$ cat > repo/.hg/bundle2maker << EOF
> raw-remote-changegroup {'url': 'http://localhost:$HGPORT/bundle6.hg', 'size': 1663, 'digests': 'sha1', 'digest:sha1': '2c880cfec23cff7d8f80c2f12958d1563cbdaba6'}
> EOF
$ hg clone ssh://user@dummy/repo clone
requesting all changes
Pierre-Yves David
bundle2: rename format, parts and config to final names...
r24686 remote: remote-changegroup
Mike Hommey
bundle2: client side support for a part to import external bundles...
r23029 adding changesets
adding manifests
adding file changes
added 8 changesets with 7 changes to 7 files (+2 heads)
Denis Laxalde
transaction-summary: show the range of new revisions upon pull/unbundle (BC)...
r34662 new changesets cd010b8cd998:02de42196ebe
Mike Hommey
bundle2: client side support for a part to import external bundles...
r23029 updating to branch default
3 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ rm -rf clone
$ cat > repo/.hg/bundle2maker << EOF
> raw-remote-changegroup {'url': 'http://localhost:$HGPORT/bundle6.hg', 'size': 1663, 'digests': 'md5', 'digest:md5': 'e22172c2907ef88794b7bea6642c2394'}
> EOF
$ hg clone ssh://user@dummy/repo clone
requesting all changes
Pierre-Yves David
bundle2: rename format, parts and config to final names...
r24686 remote: remote-changegroup
Mike Hommey
bundle2: client side support for a part to import external bundles...
r23029 adding changesets
adding manifests
adding file changes
added 8 changesets with 7 changes to 7 files (+2 heads)
Denis Laxalde
transaction-summary: show the range of new revisions upon pull/unbundle (BC)...
r34662 new changesets cd010b8cd998:02de42196ebe
Mike Hommey
bundle2: client side support for a part to import external bundles...
r23029 updating to branch default
3 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ rm -rf clone
Hash digest mismatch throws an error
$ cat > repo/.hg/bundle2maker << EOF
> raw-remote-changegroup {'url': 'http://localhost:$HGPORT/bundle6.hg', 'size': 1663, 'digests': 'sha1', 'digest:sha1': '0' * 40}
> EOF
$ hg clone ssh://user@dummy/repo clone
requesting all changes
Pierre-Yves David
bundle2: rename format, parts and config to final names...
r24686 remote: remote-changegroup
Mike Hommey
bundle2: client side support for a part to import external bundles...
r23029 adding changesets
adding manifests
adding file changes
transaction abort!
rollback completed
abort: bundle at http://localhost:$HGPORT/bundle6.hg is corrupted:
sha1 mismatch: expected 0000000000000000000000000000000000000000, got 2c880cfec23cff7d8f80c2f12958d1563cbdaba6
[255]
Multiple hash digests can be given
$ cat > repo/.hg/bundle2maker << EOF
> raw-remote-changegroup {'url': 'http://localhost:$HGPORT/bundle6.hg', 'size': 1663, 'digests': 'md5 sha1', 'digest:md5': 'e22172c2907ef88794b7bea6642c2394', 'digest:sha1': '2c880cfec23cff7d8f80c2f12958d1563cbdaba6'}
> EOF
$ hg clone ssh://user@dummy/repo clone
requesting all changes
Pierre-Yves David
bundle2: rename format, parts and config to final names...
r24686 remote: remote-changegroup
Mike Hommey
bundle2: client side support for a part to import external bundles...
r23029 adding changesets
adding manifests
adding file changes
added 8 changesets with 7 changes to 7 files (+2 heads)
Denis Laxalde
transaction-summary: show the range of new revisions upon pull/unbundle (BC)...
r34662 new changesets cd010b8cd998:02de42196ebe
Mike Hommey
bundle2: client side support for a part to import external bundles...
r23029 updating to branch default
3 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ rm -rf clone
If either of the multiple hash digests mismatches, an error is thrown
$ cat > repo/.hg/bundle2maker << EOF
> raw-remote-changegroup {'url': 'http://localhost:$HGPORT/bundle6.hg', 'size': 1663, 'digests': 'md5 sha1', 'digest:md5': '0' * 32, 'digest:sha1': '2c880cfec23cff7d8f80c2f12958d1563cbdaba6'}
> EOF
$ hg clone ssh://user@dummy/repo clone
requesting all changes
Pierre-Yves David
bundle2: rename format, parts and config to final names...
r24686 remote: remote-changegroup
Mike Hommey
bundle2: client side support for a part to import external bundles...
r23029 adding changesets
adding manifests
adding file changes
transaction abort!
rollback completed
abort: bundle at http://localhost:$HGPORT/bundle6.hg is corrupted:
md5 mismatch: expected 00000000000000000000000000000000, got e22172c2907ef88794b7bea6642c2394
[255]
$ cat > repo/.hg/bundle2maker << EOF
> raw-remote-changegroup {'url': 'http://localhost:$HGPORT/bundle6.hg', 'size': 1663, 'digests': 'md5 sha1', 'digest:md5': 'e22172c2907ef88794b7bea6642c2394', 'digest:sha1': '0' * 40}
> EOF
$ hg clone ssh://user@dummy/repo clone
requesting all changes
Pierre-Yves David
bundle2: rename format, parts and config to final names...
r24686 remote: remote-changegroup
Mike Hommey
bundle2: client side support for a part to import external bundles...
r23029 adding changesets
adding manifests
adding file changes
transaction abort!
rollback completed
abort: bundle at http://localhost:$HGPORT/bundle6.hg is corrupted:
sha1 mismatch: expected 0000000000000000000000000000000000000000, got 2c880cfec23cff7d8f80c2f12958d1563cbdaba6
[255]
Corruption tests
$ hg clone orig clone -r 2
adding changesets
adding manifests
adding file changes
added 3 changesets with 3 changes to 3 files
Denis Laxalde
transaction-summary: show the range of new revisions upon pull/unbundle (BC)...
r34662 new changesets cd010b8cd998:5fddd98957c8
Mike Hommey
bundle2: client side support for a part to import external bundles...
r23029 updating to branch default
3 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ cat > repo/.hg/bundle2maker << EOF
> remote-changegroup http://localhost:$HGPORT/bundle4.hg bundle4.hg
> raw-remote-changegroup {'url': 'http://localhost:$HGPORT/bundle5.hg', 'size': 578, 'digests': 'sha1', 'digest:sha1': '0' * 40}
> changegroup 0:6 7
> EOF
$ hg pull -R clone ssh://user@dummy/repo
pulling from ssh://user@dummy/repo
searching for changes
Pierre-Yves David
bundle2: rename format, parts and config to final names...
r24686 remote: remote-changegroup
Mike Hommey
bundle2: client side support for a part to import external bundles...
r23029 adding changesets
adding manifests
adding file changes
Pierre-Yves David
bundle2: rename format, parts and config to final names...
r24686 remote: remote-changegroup
Mike Hommey
bundle2: client side support for a part to import external bundles...
r23029 adding changesets
adding manifests
adding file changes
transaction abort!
rollback completed
abort: bundle at http://localhost:$HGPORT/bundle5.hg is corrupted:
sha1 mismatch: expected 0000000000000000000000000000000000000000, got f29485d6bfd37db99983cfc95ecb52f8ca396106
[255]
The entire transaction has been rolled back in the pull above
$ hg -R clone log -G
@ 2:5fddd98957c8 public Nicolas Dumazet <nicdumz.commits@gmail.com> C
|
o 1:42ccdea3bb16 public Nicolas Dumazet <nicdumz.commits@gmail.com> B
|
o 0:cd010b8cd998 public Nicolas Dumazet <nicdumz.commits@gmail.com> A
No params
$ cat > repo/.hg/bundle2maker << EOF
> raw-remote-changegroup {}
> EOF
$ hg pull -R clone ssh://user@dummy/repo
pulling from ssh://user@dummy/repo
searching for changes
Pierre-Yves David
bundle2: rename format, parts and config to final names...
r24686 remote: remote-changegroup
Mike Hommey
bundle2: client side support for a part to import external bundles...
r23029 abort: remote-changegroup: missing "url" param
[255]
Missing size
$ cat > repo/.hg/bundle2maker << EOF
> raw-remote-changegroup {'url': 'http://localhost:$HGPORT/bundle4.hg'}
> EOF
$ hg pull -R clone ssh://user@dummy/repo
pulling from ssh://user@dummy/repo
searching for changes
Pierre-Yves David
bundle2: rename format, parts and config to final names...
r24686 remote: remote-changegroup
Mike Hommey
bundle2: client side support for a part to import external bundles...
r23029 abort: remote-changegroup: missing "size" param
[255]
Invalid size
$ cat > repo/.hg/bundle2maker << EOF
> raw-remote-changegroup {'url': 'http://localhost:$HGPORT/bundle4.hg', 'size': 'foo'}
> EOF
$ hg pull -R clone ssh://user@dummy/repo
pulling from ssh://user@dummy/repo
searching for changes
Pierre-Yves David
bundle2: rename format, parts and config to final names...
r24686 remote: remote-changegroup
Mike Hommey
bundle2: client side support for a part to import external bundles...
r23029 abort: remote-changegroup: invalid value for param "size"
[255]
Size mismatch
$ cat > repo/.hg/bundle2maker << EOF
> raw-remote-changegroup {'url': 'http://localhost:$HGPORT/bundle4.hg', 'size': 42}
> EOF
$ hg pull -R clone ssh://user@dummy/repo
pulling from ssh://user@dummy/repo
searching for changes
Pierre-Yves David
bundle2: rename format, parts and config to final names...
r24686 remote: remote-changegroup
Mike Hommey
bundle2: client side support for a part to import external bundles...
r23029 adding changesets
adding manifests
adding file changes
transaction abort!
rollback completed
abort: bundle at http://localhost:$HGPORT/bundle4.hg is corrupted:
size mismatch: expected 42, got 581
[255]
Unknown digest
$ cat > repo/.hg/bundle2maker << EOF
> raw-remote-changegroup {'url': 'http://localhost:$HGPORT/bundle4.hg', 'size': 581, 'digests': 'foo', 'digest:foo': 'bar'}
> EOF
$ hg pull -R clone ssh://user@dummy/repo
pulling from ssh://user@dummy/repo
searching for changes
Pierre-Yves David
bundle2: rename format, parts and config to final names...
r24686 remote: remote-changegroup
abort: missing support for remote-changegroup - digest:foo
Martin von Zweigbergk
errors: raise RemoteError in some places in exchange.py...
r47739 [100]
Mike Hommey
bundle2: client side support for a part to import external bundles...
r23029
Missing digest
$ cat > repo/.hg/bundle2maker << EOF
> raw-remote-changegroup {'url': 'http://localhost:$HGPORT/bundle4.hg', 'size': 581, 'digests': 'sha1'}
> EOF
$ hg pull -R clone ssh://user@dummy/repo
pulling from ssh://user@dummy/repo
searching for changes
Pierre-Yves David
bundle2: rename format, parts and config to final names...
r24686 remote: remote-changegroup
Mike Hommey
bundle2: client side support for a part to import external bundles...
r23029 abort: remote-changegroup: missing "digest:sha1" param
[255]
Not an HTTP url
$ cat > repo/.hg/bundle2maker << EOF
> raw-remote-changegroup {'url': 'ssh://localhost:$HGPORT/bundle4.hg', 'size': 581}
> EOF
$ hg pull -R clone ssh://user@dummy/repo
pulling from ssh://user@dummy/repo
searching for changes
Pierre-Yves David
bundle2: rename format, parts and config to final names...
r24686 remote: remote-changegroup
Mike Hommey
bundle2: client side support for a part to import external bundles...
r23029 abort: remote-changegroup does not support ssh urls
[255]
Not a bundle
$ cat > notbundle.hg << EOF
> foo
> EOF
$ cat > repo/.hg/bundle2maker << EOF
> remote-changegroup http://localhost:$HGPORT/notbundle.hg notbundle.hg
> EOF
$ hg pull -R clone ssh://user@dummy/repo
pulling from ssh://user@dummy/repo
searching for changes
Pierre-Yves David
bundle2: rename format, parts and config to final names...
r24686 remote: remote-changegroup
Mike Hommey
bundle2: client side support for a part to import external bundles...
r23029 abort: http://localhost:$HGPORT/notbundle.hg: not a Mercurial bundle
[255]
Not a bundle 1.0
$ cat > notbundle10.hg << EOF
Pierre-Yves David
bundle2: rename format, parts and config to final names...
r24686 > HG20
Mike Hommey
bundle2: client side support for a part to import external bundles...
r23029 > EOF
$ cat > repo/.hg/bundle2maker << EOF
> remote-changegroup http://localhost:$HGPORT/notbundle10.hg notbundle10.hg
> EOF
$ hg pull -R clone ssh://user@dummy/repo
pulling from ssh://user@dummy/repo
searching for changes
Pierre-Yves David
bundle2: rename format, parts and config to final names...
r24686 remote: remote-changegroup
Mike Hommey
bundle2: client side support for a part to import external bundles...
r23029 abort: http://localhost:$HGPORT/notbundle10.hg: not a bundle version 1.0
[255]
$ hg -R clone log -G
@ 2:5fddd98957c8 public Nicolas Dumazet <nicdumz.commits@gmail.com> C
|
o 1:42ccdea3bb16 public Nicolas Dumazet <nicdumz.commits@gmail.com> B
|
o 0:cd010b8cd998 public Nicolas Dumazet <nicdumz.commits@gmail.com> A
$ rm -rf clone
Matt Mackall
tests: drop DAEMON_PIDS from killdaemons calls
r25474 $ killdaemons.py