test-bundle2.t
112 lines
| 2.4 KiB
| text/troff
|
Tads3Lexer
/ tests / test-bundle2.t
Pierre-Yves David
|
r20801 | |||
Create an extension to test bundle2 API | ||||
$ cat > bundle2.py << EOF | ||||
> """A small extension to test bundle2 implementation | ||||
> | ||||
> Current bundle2 implementation is far too limited to be used in any core | ||||
> code. We still need to be able to test it while it grow up. | ||||
> """ | ||||
> | ||||
Pierre-Yves David
|
r20802 | > import sys | ||
Pierre-Yves David
|
r20801 | > from mercurial import cmdutil | ||
> from mercurial import bundle2 | ||||
> cmdtable = {} | ||||
> command = cmdutil.command(cmdtable) | ||||
> | ||||
Pierre-Yves David
|
r20804 | > @command('bundle2', | ||
> [('', 'param', [], 'stream level parameter'),], | ||||
> '') | ||||
> def cmdbundle2(ui, repo, **opts): | ||||
Pierre-Yves David
|
r20801 | > """write a bundle2 container on standard ouput""" | ||
Pierre-Yves David
|
r20804 | > bundler = bundle2.bundle20() | ||
> for p in opts['param']: | ||||
> bundler.addparam(p) | ||||
> for chunk in bundler.getchunks(): | ||||
Pierre-Yves David
|
r20801 | > ui.write(chunk) | ||
Pierre-Yves David
|
r20802 | > | ||
> @command('unbundle2', [], '') | ||||
> def cmdunbundle2(ui, repo): | ||||
> """read a bundle2 container from standard input""" | ||||
> unbundler = bundle2.unbundle20(sys.stdin) | ||||
> ui.write('options count: %i\n' % len(unbundler.params)) | ||||
Pierre-Yves David
|
r20805 | > for key in sorted(unbundler.params): | ||
> ui.write('- %s\n' % key) | ||||
Pierre-Yves David
|
r20802 | > parts = list(unbundler) | ||
> ui.write('parts count: %i\n' % len(parts)) | ||||
Pierre-Yves David
|
r20801 | > EOF | ||
$ cat >> $HGRCPATH << EOF | ||||
> [extensions] | ||||
> bundle2=$TESTTMP/bundle2.py | ||||
> EOF | ||||
The extension requires a repo (currently unused) | ||||
$ hg init main | ||||
$ cd main | ||||
Pierre-Yves David
|
r20803 | $ touch a | ||
$ hg add a | ||||
$ hg commit -m 'a' | ||||
Pierre-Yves David
|
r20801 | |||
Pierre-Yves David
|
r20804 | |||
Empty bundle | ||||
================= | ||||
- no option | ||||
- no parts | ||||
Test bundling | ||||
Pierre-Yves David
|
r20801 | |||
$ hg bundle2 | ||||
HG20\x00\x00\x00\x00 (no-eol) (esc) | ||||
Pierre-Yves David
|
r20802 | |||
Pierre-Yves David
|
r20804 | Test unbundling | ||
Pierre-Yves David
|
r20802 | |||
$ hg bundle2 | hg unbundle2 | ||||
options count: 0 | ||||
parts count: 0 | ||||
Pierre-Yves David
|
r20803 | |||
Test old style bundle are detected and refused | ||||
$ hg bundle --all ../bundle.hg | ||||
1 changesets found | ||||
$ hg unbundle2 < ../bundle.hg | ||||
abort: unknown bundle version 10 | ||||
[255] | ||||
Pierre-Yves David
|
r20804 | |||
Test parameters | ||||
================= | ||||
- some options | ||||
- no parts | ||||
advisory parameters, no value | ||||
------------------------------- | ||||
Simplest possible parameters form | ||||
Pierre-Yves David
|
r20805 | Test generation simple option | ||
Pierre-Yves David
|
r20804 | |||
$ hg bundle2 --param 'caution' | ||||
HG20\x00\x07caution\x00\x00 (no-eol) (esc) | ||||
Pierre-Yves David
|
r20805 | Test unbundling | ||
$ hg bundle2 --param 'caution' | hg unbundle2 | ||||
options count: 1 | ||||
- caution | ||||
parts count: 0 | ||||
Pierre-Yves David
|
r20804 | Test generation multiple option | ||
$ hg bundle2 --param 'caution' --param 'meal' | ||||
HG20\x00\x0ccaution meal\x00\x00 (no-eol) (esc) | ||||
Pierre-Yves David
|
r20805 | |||
Test unbundling | ||||
$ hg bundle2 --param 'caution' --param 'meal' | hg unbundle2 | ||||
options count: 2 | ||||
- caution | ||||
- meal | ||||
parts count: 0 | ||||