428 |
428 |
429 aliases: |
429 aliases: |
430 |
430 |
431 $ echo '[revsetalias]' >> .hg/hgrc |
431 $ echo '[revsetalias]' >> .hg/hgrc |
432 $ echo 'm = merge()' >> .hg/hgrc |
432 $ echo 'm = merge()' >> .hg/hgrc |
|
433 $ echo 'sincem = descendants(m)' >> .hg/hgrc |
433 $ echo 'd($1) = reverse(sort($1, date))' >> .hg/hgrc |
434 $ echo 'd($1) = reverse(sort($1, date))' >> .hg/hgrc |
434 $ echo 'rs(ARG1, ARG2) = reverse(sort(ARG1, ARG2))' >> .hg/hgrc |
435 $ echo 'rs(ARG1, ARG2) = reverse(sort(ARG1, ARG2))' >> .hg/hgrc |
435 $ echo 'rs4(ARG1, ARGA, ARGB, ARG2) = reverse(sort(ARG1, ARG2))' >> .hg/hgrc |
436 $ echo 'rs4(ARG1, ARGA, ARGB, ARG2) = reverse(sort(ARG1, ARG2))' >> .hg/hgrc |
436 |
437 |
437 $ try m |
438 $ try m |
438 ('symbol', 'm') |
439 ('symbol', 'm') |
439 ('func', ('symbol', 'merge'), None) |
440 ('func', ('symbol', 'merge'), None) |
440 6 |
441 6 |
|
442 |
|
443 test alias recursion |
|
444 |
|
445 $ try sincem |
|
446 ('symbol', 'sincem') |
|
447 ('func', ('symbol', 'descendants'), ('func', ('symbol', 'merge'), None)) |
|
448 6 |
|
449 7 |
|
450 |
|
451 test infinite recursion |
|
452 |
|
453 $ echo 'recurse1 = recurse2' >> .hg/hgrc |
|
454 $ echo 'recurse2 = recurse1' >> .hg/hgrc |
|
455 $ try recurse1 |
|
456 ('symbol', 'recurse1') |
|
457 hg: parse error: infinite expansion of revset alias "recurse1" detected |
|
458 [255] |
|
459 |
|
460 test nesting and variable passing |
|
461 |
|
462 $ echo 'nested($1) = nested2($1)' >> .hg/hgrc |
|
463 $ echo 'nested2($1) = nested3($1)' >> .hg/hgrc |
|
464 $ echo 'nested3($1) = max($1)' >> .hg/hgrc |
|
465 $ try 'nested(2:5)' |
|
466 ('func', ('symbol', 'nested'), ('range', ('symbol', '2'), ('symbol', '5'))) |
|
467 ('func', ('symbol', 'max'), ('range', ('symbol', '2'), ('symbol', '5'))) |
|
468 5 |
|
469 |
|
470 test variable isolation, variable placeholders are rewritten as string |
|
471 then parsed and matched again as string. Check they do not leak too |
|
472 far away. |
|
473 |
|
474 $ echo 'injectparamasstring = max("$1")' >> .hg/hgrc |
|
475 $ echo 'callinjection($1) = descendants(injectparamasstring)' >> .hg/hgrc |
|
476 $ try 'callinjection(2:5)' |
|
477 ('func', ('symbol', 'callinjection'), ('range', ('symbol', '2'), ('symbol', '5'))) |
|
478 ('func', ('symbol', 'descendants'), ('func', ('symbol', 'max'), ('string', '$1'))) |
|
479 abort: unknown revision '$1'! |
|
480 [255] |
|
481 |
441 $ try 'd(2:5)' |
482 $ try 'd(2:5)' |
442 ('func', ('symbol', 'd'), ('range', ('symbol', '2'), ('symbol', '5'))) |
483 ('func', ('symbol', 'd'), ('range', ('symbol', '2'), ('symbol', '5'))) |
443 ('func', ('symbol', 'reverse'), ('func', ('symbol', 'sort'), ('list', ('range', ('symbol', '2'), ('symbol', '5')), ('symbol', 'date')))) |
484 ('func', ('symbol', 'reverse'), ('func', ('symbol', 'sort'), ('list', ('range', ('symbol', '2'), ('symbol', '5')), ('symbol', 'date')))) |
444 4 |
485 4 |
445 5 |
486 5 |