##// END OF EJS Templates
bundle2: enforce all parameters in a part to be handled...
Pierre-Yves David -
r21625:511f5fa6 default
parent child Browse files
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