comparison tests/test-revset.t @ 29768:8e4841944e68

revset: add test for resolution of infix/suffix ambiguity of x^:y This is the test for 805651777188, and I'm going to fix the failure of 'x^A' where 'revsetalias.A=:y'.
author Yuya Nishihara <yuya@tcha.org>
date Sat, 06 Aug 2016 19:59:28 +0900
parents 9e8d258708bb
children abe4eecc3253
comparison
equal deleted inserted replaced
29767:e5b794063fd4 29768:8e4841944e68
476 $ hg book only -r 9 476 $ hg book only -r 9
477 $ log 'only(only)' # Outer "only" is a function, inner "only" is the bookmark 477 $ log 'only(only)' # Outer "only" is a function, inner "only" is the bookmark
478 8 478 8
479 9 479 9
480 480
481 infix/suffix resolution of ^ operator (issue2884):
482
483 x^:y means (x^):y
484
485 $ try --optimize '1^:2'
486 (parent
487 ('symbol', '1')
488 (rangepre
489 ('symbol', '2')))
490 * optimized:
491 (range
492 (parentpost
493 ('symbol', '1'))
494 ('symbol', '2'))
495 * set:
496 <spanset+ 0:2>
497 0
498 1
499 2
500
501 $ try --optimize '1^::2'
502 (parent
503 ('symbol', '1')
504 (dagrangepre
505 ('symbol', '2')))
506 * optimized:
507 (dagrange
508 (parentpost
509 ('symbol', '1'))
510 ('symbol', '2'))
511 * set:
512 <baseset+ [0, 1, 2]>
513 0
514 1
515 2
516
517 x^:y should be resolved before omitting group operators
518
519 $ try --optimize '1^(:2)'
520 (parent
521 ('symbol', '1')
522 (group
523 (rangepre
524 ('symbol', '2'))))
525 * optimized:
526 (parent
527 ('symbol', '1')
528 (range
529 ('string', '0')
530 ('symbol', '2')))
531 hg: parse error: ^ expects a number 0, 1, or 2
532 [255]
533
534 x^:y should be resolved recursively
535
536 $ try --optimize 'sort(1^:2)'
537 (func
538 ('symbol', 'sort')
539 (parent
540 ('symbol', '1')
541 (rangepre
542 ('symbol', '2'))))
543 * optimized:
544 (func
545 ('symbol', 'sort')
546 (range
547 (parentpost
548 ('symbol', '1'))
549 ('symbol', '2')))
550 * set:
551 <spanset+ 0:2>
552 0
553 1
554 2
555
556 $ try --optimize '(3^:4)^:2'
557 (parent
558 (group
559 (parent
560 ('symbol', '3')
561 (rangepre
562 ('symbol', '4'))))
563 (rangepre
564 ('symbol', '2')))
565 * optimized:
566 (range
567 (parentpost
568 (range
569 (parentpost
570 ('symbol', '3'))
571 ('symbol', '4')))
572 ('symbol', '2'))
573 * set:
574 <spanset+ 0:2>
575 0
576 1
577 2
578
579 $ try --optimize '(3^::4)^::2'
580 (parent
581 (group
582 (parent
583 ('symbol', '3')
584 (dagrangepre
585 ('symbol', '4'))))
586 (dagrangepre
587 ('symbol', '2')))
588 * optimized:
589 (dagrange
590 (parentpost
591 (dagrange
592 (parentpost
593 ('symbol', '3'))
594 ('symbol', '4')))
595 ('symbol', '2'))
596 * set:
597 <baseset+ [0, 1, 2]>
598 0
599 1
600 2
601
602 x^ in alias should also be resolved
603
604 $ try --optimize 'A' --config 'revsetalias.A=1^:2'
605 ('symbol', 'A')
606 * expanded:
607 (parent
608 ('symbol', '1')
609 (rangepre
610 ('symbol', '2')))
611 * optimized:
612 (range
613 (parentpost
614 ('symbol', '1'))
615 ('symbol', '2'))
616 * set:
617 <spanset+ 0:2>
618 0
619 1
620 2
621
622 $ try --optimize 'A:2' --config 'revsetalias.A=1^'
623 (range
624 ('symbol', 'A')
625 ('symbol', '2'))
626 * expanded:
627 (range
628 (parentpost
629 ('symbol', '1'))
630 ('symbol', '2'))
631 * optimized:
632 (range
633 (parentpost
634 ('symbol', '1'))
635 ('symbol', '2'))
636 * set:
637 <spanset+ 0:2>
638 0
639 1
640 2
641
642 but not beyond the boundary of alias expansion, because the resolution should
643 be made at the parsing stage
644
645 $ try --optimize '1^A' --config 'revsetalias.A=:2'
646 (parent
647 ('symbol', '1')
648 ('symbol', 'A'))
649 * expanded:
650 (parent
651 ('symbol', '1')
652 (rangepre
653 ('symbol', '2')))
654 * optimized:
655 (range
656 (parentpost
657 ('symbol', '1'))
658 ('symbol', '2'))
659 * set:
660 <spanset+ 0:2>
661 0
662 1
663 2
664 BROKEN: should be parsed as '1^(:2)'
665
481 ancestor can accept 0 or more arguments 666 ancestor can accept 0 or more arguments
482 667
483 $ log 'ancestor()' 668 $ log 'ancestor()'
484 $ log 'ancestor(1)' 669 $ log 'ancestor(1)'
485 1 670 1