##// END OF EJS Templates
bundle2: support for capabilities with values...
Pierre-Yves David -
r21136:b6fd496e default
parent child Browse files
Show More
@@ -344,7 +344,7 b' class bundle20(object):'
344 344 self.ui = ui
345 345 self._params = []
346 346 self._parts = []
347 self.capabilities = set(capabilities)
347 self.capabilities = dict(capabilities)
348 348
349 349 def addparam(self, name, value=None):
350 350 """add a stream level parameter"""
@@ -697,8 +697,22 b' def handleoutput(op, inpart):'
697 697 def handlereplycaps(op, inpart):
698 698 """Notify that a reply bundle should be created
699 699
700 the part payload is a list of capabilities (one per line)"""
701 caps = [c for c in inpart.read().splitlines() if c]
700 The part payload is a list of capabilities (one per line)
701 Capabilities may have values using a line of form::
702
703 capability=value1,value2,value3
704
705 The value are alway a list."""
706 caps = {}
707 for line in inpart.read().splitlines():
708 if not line:
709 continue
710 if '=' not in line:
711 key, vals = line, ()
712 else:
713 key, vals = line.split('=', 1)
714 vals = vals.split(',')
715 caps[key] = vals
702 716 if op.reply is None:
703 717 op.reply = bundle20(op.ui, caps)
704 718
@@ -51,6 +51,9 b' Create an extension to test bundle2 API'
51 51 > op.ui.write('debugreply: capabilities:\n')
52 52 > for cap in sorted(op.reply.capabilities):
53 53 > op.ui.write('debugreply: %r\n' % cap)
54 > for val in op.reply.capabilities[cap]:
55 > op.ui.write('debugreply: %r\n' % val)
56 >
54 57 > @command('bundle2',
55 58 > [('', 'param', [], 'stream level parameter'),
56 59 > ('', 'unknown', False, 'include an unknown mandatory part in the bundle'),
@@ -69,7 +72,7 b' Create an extension to test bundle2 API'
69 72 > raise util.Abort('%s' % exc)
70 73 >
71 74 > if opts['reply']:
72 > capsstring = 'ping-pong\nelephants'
75 > capsstring = 'ping-pong\nelephants=babar,celeste\ncity=celesteville'
73 76 > bundler.addpart(bundle2.bundlepart('replycaps', data=capsstring))
74 77 >
75 78 > revs = opts['rev']
@@ -544,8 +547,12 b' The reply is a bundle'
544 547 Patali Dirapata, Cromda Cromda Ripalo, Pata Pata, Ko Ko Ko
545 548 Bokoro Dipoulito, Rondi Rondi Pepino, Pata Pata, Ko Ko Ko
546 549 Emana Karassoli, Loucra Loucra Ponponto, Pata Pata, Ko Ko Ko.
547 \x00\x00\x00\x00\x00\x1b\x06output\x00\x00\x00\x01\x00\x01\x0b\x01in-reply-to4\x00\x00\x00Rdebugreply: capabilities: (esc)
550 \x00\x00\x00\x00\x00\x1b\x06output\x00\x00\x00\x01\x00\x01\x0b\x01in-reply-to4\x00\x00\x00\xc6debugreply: capabilities: (esc)
551 debugreply: 'city'
552 debugreply: 'celesteville'
548 553 debugreply: 'elephants'
554 debugreply: 'babar'
555 debugreply: 'celeste'
549 556 debugreply: 'ping-pong'
550 557 \x00\x00\x00\x00\x00\x1e test:pong\x00\x00\x00\x02\x01\x00\x0b\x01in-reply-to6\x00\x00\x00\x00\x00\x1b\x06output\x00\x00\x00\x03\x00\x01\x0b\x01in-reply-to6\x00\x00\x00=received ping request (id 6) (esc)
551 558 replying to ping request (id 6)
@@ -562,7 +569,7 b' The reply is valid'
562 569 :output:
563 570 mandatory: 0
564 571 advisory: 1
565 payload: 82 bytes
572 payload: 198 bytes
566 573 :test:pong:
567 574 mandatory: 1
568 575 advisory: 0
@@ -581,7 +588,11 b' Unbundle the reply to get the output:'
581 588 remote: Bokoro Dipoulito, Rondi Rondi Pepino, Pata Pata, Ko Ko Ko
582 589 remote: Emana Karassoli, Loucra Loucra Ponponto, Pata Pata, Ko Ko Ko.
583 590 remote: debugreply: capabilities:
591 remote: debugreply: 'city'
592 remote: debugreply: 'celesteville'
584 593 remote: debugreply: 'elephants'
594 remote: debugreply: 'babar'
595 remote: debugreply: 'celeste'
585 596 remote: debugreply: 'ping-pong'
586 597 remote: received ping request (id 6)
587 598 remote: replying to ping request (id 6)
General Comments 0
You need to be logged in to leave comments. Login now