##// END OF EJS Templates
debugrevspec: pretty print output...
Patrick Mezard -
r16218:81a1a00f default
parent child Browse files
Show More
@@ -2161,10 +2161,10 b' def debugrevspec(ui, repo, expr):'
2161 2161 """
2162 2162 if ui.verbose:
2163 2163 tree = revset.parse(expr)[0]
2164 ui.note(tree, "\n")
2164 ui.note(revset.prettyformat(tree), "\n")
2165 2165 newtree = revset.findaliases(ui, tree)
2166 2166 if newtree != tree:
2167 ui.note(newtree, "\n")
2167 ui.note(revset.prettyformat(newtree), "\n")
2168 2168 func = revset.match(ui, expr)
2169 2169 for c in func(repo, range(len(repo))):
2170 2170 ui.write("%s\n" % c)
@@ -1319,5 +1319,20 b' def formatspec(expr, *args):'
1319 1319
1320 1320 return ret
1321 1321
1322 def prettyformat(tree):
1323 def _prettyformat(tree, level, lines):
1324 if not isinstance(tree, tuple) or tree[0] in ('string', 'symbol'):
1325 lines.append((level, str(tree)))
1326 else:
1327 lines.append((level, '(%s' % tree[0]))
1328 for s in tree[1:]:
1329 _prettyformat(s, level + 1, lines)
1330 lines[-1:] = [(lines[-1][0], lines[-1][1] + ')')]
1331
1332 lines = []
1333 _prettyformat(tree, 0, lines)
1334 output = '\n'.join((' '*l + s) for l, s in lines)
1335 return output
1336
1322 1337 # tell hggettext to extract docstrings from these functions:
1323 1338 i18nfunctions = symbols.values()
@@ -13,11 +13,17 b''
13 13 $ cd repo
14 14
15 15 $ try 'p1()'
16 ('func', ('symbol', 'p1'), None)
16 (func
17 ('symbol', 'p1')
18 None)
17 19 $ try 'p2()'
18 ('func', ('symbol', 'p2'), None)
20 (func
21 ('symbol', 'p2')
22 None)
19 23 $ try 'parents()'
20 ('func', ('symbol', 'parents'), None)
24 (func
25 ('symbol', 'parents')
26 None)
21 27
22 28 null revision
23 29 $ log 'p1()'
@@ -94,19 +94,25 b' names that should work without quoting'
94 94 ('symbol', 'a')
95 95 0
96 96 $ try b-a
97 ('minus', ('symbol', 'b'), ('symbol', 'a'))
97 (minus
98 ('symbol', 'b')
99 ('symbol', 'a'))
98 100 1
99 101 $ try _a_b_c_
100 102 ('symbol', '_a_b_c_')
101 103 6
102 104 $ try _a_b_c_-a
103 ('minus', ('symbol', '_a_b_c_'), ('symbol', 'a'))
105 (minus
106 ('symbol', '_a_b_c_')
107 ('symbol', 'a'))
104 108 6
105 109 $ try .a.b.c.
106 110 ('symbol', '.a.b.c.')
107 111 7
108 112 $ try .a.b.c.-a
109 ('minus', ('symbol', '.a.b.c.'), ('symbol', 'a'))
113 (minus
114 ('symbol', '.a.b.c.')
115 ('symbol', 'a'))
110 116 7
111 117 $ try -- '-a-b-c-' # complains
112 118 hg: parse error at 7: not a prefix: end
@@ -114,7 +120,15 b' names that should work without quoting'
114 120 $ log -a-b-c- # succeeds with fallback
115 121 4
116 122 $ try -- -a-b-c--a # complains
117 ('minus', ('minus', ('minus', ('negate', ('symbol', 'a')), ('symbol', 'b')), ('symbol', 'c')), ('negate', ('symbol', 'a')))
123 (minus
124 (minus
125 (minus
126 (negate
127 ('symbol', 'a'))
128 ('symbol', 'b'))
129 ('symbol', 'c'))
130 (negate
131 ('symbol', 'a')))
118 132 abort: unknown revision '-a'!
119 133 [255]
120 134 $ try Γ©
@@ -124,7 +138,9 b' names that should work without quoting'
124 138 quoting needed
125 139
126 140 $ try '"-a-b-c-"-a'
127 ('minus', ('string', '-a-b-c-'), ('symbol', 'a'))
141 (minus
142 ('string', '-a-b-c-')
143 ('symbol', 'a'))
128 144 4
129 145
130 146 $ log '1 or 2'
@@ -136,15 +152,32 b' quoting needed'
136 152 $ log '1 and 2'
137 153 $ log '1&2'
138 154 $ try '1&2|3' # precedence - and is higher
139 ('or', ('and', ('symbol', '1'), ('symbol', '2')), ('symbol', '3'))
155 (or
156 (and
157 ('symbol', '1')
158 ('symbol', '2'))
159 ('symbol', '3'))
140 160 3
141 161 $ try '1|2&3'
142 ('or', ('symbol', '1'), ('and', ('symbol', '2'), ('symbol', '3')))
162 (or
163 ('symbol', '1')
164 (and
165 ('symbol', '2')
166 ('symbol', '3')))
143 167 1
144 168 $ try '1&2&3' # associativity
145 ('and', ('and', ('symbol', '1'), ('symbol', '2')), ('symbol', '3'))
169 (and
170 (and
171 ('symbol', '1')
172 ('symbol', '2'))
173 ('symbol', '3'))
146 174 $ try '1|(2|3)'
147 ('or', ('symbol', '1'), ('group', ('or', ('symbol', '2'), ('symbol', '3'))))
175 (or
176 ('symbol', '1')
177 (group
178 (or
179 ('symbol', '2')
180 ('symbol', '3'))))
148 181 1
149 182 2
150 183 3
@@ -226,13 +259,19 b' quoting needed'
226 259 $ log 'grep("issue\d+")'
227 260 6
228 261 $ try 'grep("(")' # invalid regular expression
229 ('func', ('symbol', 'grep'), ('string', '('))
262 (func
263 ('symbol', 'grep')
264 ('string', '('))
230 265 hg: parse error: invalid match pattern: unbalanced parenthesis
231 266 [255]
232 267 $ try 'grep("\bissue\d+")'
233 ('func', ('symbol', 'grep'), ('string', '\x08issue\\d+'))
268 (func
269 ('symbol', 'grep')
270 ('string', '\x08issue\\d+'))
234 271 $ try 'grep(r"\bissue\d+")'
235 ('func', ('symbol', 'grep'), ('string', '\\bissue\\d+'))
272 (func
273 ('symbol', 'grep')
274 ('string', '\\bissue\\d+'))
236 275 6
237 276 $ try 'grep(r"\")'
238 277 hg: parse error at 7: unterminated string
@@ -437,14 +476,20 b' aliases:'
437 476
438 477 $ try m
439 478 ('symbol', 'm')
440 ('func', ('symbol', 'merge'), None)
479 (func
480 ('symbol', 'merge')
481 None)
441 482 6
442 483
443 484 test alias recursion
444 485
445 486 $ try sincem
446 487 ('symbol', 'sincem')
447 ('func', ('symbol', 'descendants'), ('func', ('symbol', 'merge'), None))
488 (func
489 ('symbol', 'descendants')
490 (func
491 ('symbol', 'merge')
492 None))
448 493 6
449 494 7
450 495
@@ -463,8 +508,16 b' test nesting and variable passing'
463 508 $ echo 'nested2($1) = nested3($1)' >> .hg/hgrc
464 509 $ echo 'nested3($1) = max($1)' >> .hg/hgrc
465 510 $ try 'nested(2:5)'
466 ('func', ('symbol', 'nested'), ('range', ('symbol', '2'), ('symbol', '5')))
467 ('func', ('symbol', 'max'), ('range', ('symbol', '2'), ('symbol', '5')))
511 (func
512 ('symbol', 'nested')
513 (range
514 ('symbol', '2')
515 ('symbol', '5')))
516 (func
517 ('symbol', 'max')
518 (range
519 ('symbol', '2')
520 ('symbol', '5')))
468 521 5
469 522
470 523 test variable isolation, variable placeholders are rewritten as string
@@ -474,38 +527,100 b' far away.'
474 527 $ echo 'injectparamasstring = max("$1")' >> .hg/hgrc
475 528 $ echo 'callinjection($1) = descendants(injectparamasstring)' >> .hg/hgrc
476 529 $ try 'callinjection(2:5)'
477 ('func', ('symbol', 'callinjection'), ('range', ('symbol', '2'), ('symbol', '5')))
478 ('func', ('symbol', 'descendants'), ('func', ('symbol', 'max'), ('string', '$1')))
530 (func
531 ('symbol', 'callinjection')
532 (range
533 ('symbol', '2')
534 ('symbol', '5')))
535 (func
536 ('symbol', 'descendants')
537 (func
538 ('symbol', 'max')
539 ('string', '$1')))
479 540 abort: unknown revision '$1'!
480 541 [255]
481 542
482 543 $ try 'd(2:5)'
483 ('func', ('symbol', 'd'), ('range', ('symbol', '2'), ('symbol', '5')))
484 ('func', ('symbol', 'reverse'), ('func', ('symbol', 'sort'), ('list', ('range', ('symbol', '2'), ('symbol', '5')), ('symbol', 'date'))))
544 (func
545 ('symbol', 'd')
546 (range
547 ('symbol', '2')
548 ('symbol', '5')))
549 (func
550 ('symbol', 'reverse')
551 (func
552 ('symbol', 'sort')
553 (list
554 (range
555 ('symbol', '2')
556 ('symbol', '5'))
557 ('symbol', 'date'))))
485 558 4
486 559 5
487 560 3
488 561 2
489 562 $ try 'rs(2 or 3, date)'
490 ('func', ('symbol', 'rs'), ('list', ('or', ('symbol', '2'), ('symbol', '3')), ('symbol', 'date')))
491 ('func', ('symbol', 'reverse'), ('func', ('symbol', 'sort'), ('list', ('or', ('symbol', '2'), ('symbol', '3')), ('symbol', 'date'))))
563 (func
564 ('symbol', 'rs')
565 (list
566 (or
567 ('symbol', '2')
568 ('symbol', '3'))
569 ('symbol', 'date')))
570 (func
571 ('symbol', 'reverse')
572 (func
573 ('symbol', 'sort')
574 (list
575 (or
576 ('symbol', '2')
577 ('symbol', '3'))
578 ('symbol', 'date'))))
492 579 3
493 580 2
494 581 $ try 'rs()'
495 ('func', ('symbol', 'rs'), None)
582 (func
583 ('symbol', 'rs')
584 None)
496 585 hg: parse error: invalid number of arguments: 0
497 586 [255]
498 587 $ try 'rs(2)'
499 ('func', ('symbol', 'rs'), ('symbol', '2'))
588 (func
589 ('symbol', 'rs')
590 ('symbol', '2'))
500 591 hg: parse error: invalid number of arguments: 1
501 592 [255]
502 593 $ try 'rs(2, data, 7)'
503 ('func', ('symbol', 'rs'), ('list', ('list', ('symbol', '2'), ('symbol', 'data')), ('symbol', '7')))
594 (func
595 ('symbol', 'rs')
596 (list
597 (list
598 ('symbol', '2')
599 ('symbol', 'data'))
600 ('symbol', '7')))
504 601 hg: parse error: invalid number of arguments: 3
505 602 [255]
506 603 $ try 'rs4(2 or 3, x, x, date)'
507 ('func', ('symbol', 'rs4'), ('list', ('list', ('list', ('or', ('symbol', '2'), ('symbol', '3')), ('symbol', 'x')), ('symbol', 'x')), ('symbol', 'date')))
508 ('func', ('symbol', 'reverse'), ('func', ('symbol', 'sort'), ('list', ('or', ('symbol', '2'), ('symbol', '3')), ('symbol', 'date'))))
604 (func
605 ('symbol', 'rs4')
606 (list
607 (list
608 (list
609 (or
610 ('symbol', '2')
611 ('symbol', '3'))
612 ('symbol', 'x'))
613 ('symbol', 'x'))
614 ('symbol', 'date')))
615 (func
616 ('symbol', 'reverse')
617 (func
618 ('symbol', 'sort')
619 (list
620 (or
621 ('symbol', '2')
622 ('symbol', '3'))
623 ('symbol', 'date'))))
509 624 3
510 625 2
511 626
General Comments 0
You need to be logged in to leave comments. Login now