Show More
@@ -306,6 +306,12 b' def processbundle(repo, unbundler, trans' | |||||
306 | part.read() |
|
306 | part.read() | |
307 | continue |
|
307 | continue | |
308 |
|
308 | |||
|
309 | unknownparams = part.mandatorykeys - handler.params | |||
|
310 | if unknownparams: | |||
|
311 | unknownparams = list(unknownparams) | |||
|
312 | unknownparams.sort() | |||
|
313 | raise error.BundleValueError(parttype=key, params=unknownparams) | |||
|
314 | ||||
309 | # handler is called outside the above try block so that we don't |
|
315 | # handler is called outside the above try block so that we don't | |
310 | # risk catching KeyErrors from anything other than the |
|
316 | # risk catching KeyErrors from anything other than the | |
311 | # parthandlermapping lookup (any KeyError raised by handler() |
|
317 | # parthandlermapping lookup (any KeyError raised by handler() |
@@ -64,6 +64,7 b' Create an extension to test bundle2 API' | |||||
64 | > @command('bundle2', |
|
64 | > @command('bundle2', | |
65 | > [('', 'param', [], 'stream level parameter'), |
|
65 | > [('', 'param', [], 'stream level parameter'), | |
66 | > ('', 'unknown', False, 'include an unknown mandatory part in the bundle'), |
|
66 | > ('', 'unknown', False, 'include an unknown mandatory part in the bundle'), | |
|
67 | > ('', 'unknownparams', False, 'include an unknown part parameters in the bundle'), | |||
67 | > ('', 'parts', False, 'include some arbitrary parts to the bundle'), |
|
68 | > ('', 'parts', False, 'include some arbitrary parts to the bundle'), | |
68 | > ('', 'reply', False, 'produce a reply bundle'), |
|
69 | > ('', 'reply', False, 'produce a reply bundle'), | |
69 | > ('', 'pushrace', False, 'includes a check:head part with unknown nodes'), |
|
70 | > ('', 'pushrace', False, 'includes a check:head part with unknown nodes'), | |
@@ -113,6 +114,8 b' Create an extension to test bundle2 API' | |||||
113 | > mathpart.data = '42' |
|
114 | > mathpart.data = '42' | |
114 | > if opts['unknown']: |
|
115 | > if opts['unknown']: | |
115 | > bundler.newpart('test:UNKNOWN', data='some random content') |
|
116 | > bundler.newpart('test:UNKNOWN', data='some random content') | |
|
117 | > if opts['unknownparams']: | |||
|
118 | > bundler.newpart('test:SONG', [('randomparams', '')]) | |||
116 | > if opts['parts']: |
|
119 | > if opts['parts']: | |
117 | > bundler.newpart('test:ping') |
|
120 | > bundler.newpart('test:ping') | |
118 | > |
|
121 | > | |
@@ -540,6 +543,16 b' Unbundle with an unknown mandatory part' | |||||
540 | abort: missing support for test:unknown |
|
543 | abort: missing support for test:unknown | |
541 | [255] |
|
544 | [255] | |
542 |
|
545 | |||
|
546 | Unbundle with an unknown mandatory part parameters | |||
|
547 | (should abort) | |||
|
548 | ||||
|
549 | $ hg bundle2 --unknownparams ../unknown.hg2 | |||
|
550 | ||||
|
551 | $ hg unbundle2 < ../unknown.hg2 | |||
|
552 | 0 unread bytes | |||
|
553 | abort: missing support for test:song - randomparams | |||
|
554 | [255] | |||
|
555 | ||||
543 | unbundle with a reply |
|
556 | unbundle with a reply | |
544 |
|
557 | |||
545 | $ hg bundle2 --parts --reply ../parts-reply.hg2 |
|
558 | $ hg bundle2 --parts --reply ../parts-reply.hg2 |
General Comments 0
You need to be logged in to leave comments.
Login now