tests/test-revset.t
changeset 29769 abe4eecc3253
parent 29768 8e4841944e68
child 29770 9c51a5de76db
equal deleted inserted replaced
29768:8e4841944e68 29769:abe4eecc3253
   480 
   480 
   481 infix/suffix resolution of ^ operator (issue2884):
   481 infix/suffix resolution of ^ operator (issue2884):
   482 
   482 
   483  x^:y means (x^):y
   483  x^:y means (x^):y
   484 
   484 
   485   $ try --optimize '1^:2'
   485   $ try '1^:2'
   486   (parent
       
   487     ('symbol', '1')
       
   488     (rangepre
       
   489       ('symbol', '2')))
       
   490   * optimized:
       
   491   (range
   486   (range
   492     (parentpost
   487     (parentpost
   493       ('symbol', '1'))
   488       ('symbol', '1'))
   494     ('symbol', '2'))
   489     ('symbol', '2'))
   495   * set:
   490   * set:
   496   <spanset+ 0:2>
   491   <spanset+ 0:2>
   497   0
   492   0
   498   1
   493   1
   499   2
   494   2
   500 
   495 
   501   $ try --optimize '1^::2'
   496   $ try '1^::2'
   502   (parent
       
   503     ('symbol', '1')
       
   504     (dagrangepre
       
   505       ('symbol', '2')))
       
   506   * optimized:
       
   507   (dagrange
   497   (dagrange
   508     (parentpost
   498     (parentpost
   509       ('symbol', '1'))
   499       ('symbol', '1'))
   510     ('symbol', '2'))
   500     ('symbol', '2'))
   511   * set:
   501   * set:
   514   1
   504   1
   515   2
   505   2
   516 
   506 
   517  x^:y should be resolved before omitting group operators
   507  x^:y should be resolved before omitting group operators
   518 
   508 
   519   $ try --optimize '1^(:2)'
   509   $ try '1^(:2)'
   520   (parent
   510   (parent
   521     ('symbol', '1')
   511     ('symbol', '1')
   522     (group
   512     (group
   523       (rangepre
   513       (rangepre
   524         ('symbol', '2'))))
   514         ('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
   515   hg: parse error: ^ expects a number 0, 1, or 2
   532   [255]
   516   [255]
   533 
   517 
   534  x^:y should be resolved recursively
   518  x^:y should be resolved recursively
   535 
   519 
   536   $ try --optimize 'sort(1^:2)'
   520   $ try 'sort(1^:2)'
   537   (func
       
   538     ('symbol', 'sort')
       
   539     (parent
       
   540       ('symbol', '1')
       
   541       (rangepre
       
   542         ('symbol', '2'))))
       
   543   * optimized:
       
   544   (func
   521   (func
   545     ('symbol', 'sort')
   522     ('symbol', 'sort')
   546     (range
   523     (range
   547       (parentpost
   524       (parentpost
   548         ('symbol', '1'))
   525         ('symbol', '1'))
   551   <spanset+ 0:2>
   528   <spanset+ 0:2>
   552   0
   529   0
   553   1
   530   1
   554   2
   531   2
   555 
   532 
   556   $ try --optimize '(3^:4)^:2'
   533   $ try '(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
   534   (range
   567     (parentpost
   535     (parentpost
   568       (range
   536       (group
   569         (parentpost
   537         (range
   570           ('symbol', '3'))
   538           (parentpost
   571         ('symbol', '4')))
   539             ('symbol', '3'))
       
   540           ('symbol', '4'))))
   572     ('symbol', '2'))
   541     ('symbol', '2'))
   573   * set:
   542   * set:
   574   <spanset+ 0:2>
   543   <spanset+ 0:2>
   575   0
   544   0
   576   1
   545   1
   577   2
   546   2
   578 
   547 
   579   $ try --optimize '(3^::4)^::2'
   548   $ try '(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
   549   (dagrange
   590     (parentpost
   550     (parentpost
   591       (dagrange
   551       (group
   592         (parentpost
   552         (dagrange
   593           ('symbol', '3'))
   553           (parentpost
   594         ('symbol', '4')))
   554             ('symbol', '3'))
       
   555           ('symbol', '4'))))
   595     ('symbol', '2'))
   556     ('symbol', '2'))
   596   * set:
   557   * set:
   597   <baseset+ [0, 1, 2]>
   558   <baseset+ [0, 1, 2]>
   598   0
   559   0
   599   1
   560   1
   600   2
   561   2
   601 
   562 
   602  x^ in alias should also be resolved
   563  x^ in alias should also be resolved
   603 
   564 
   604   $ try --optimize 'A' --config 'revsetalias.A=1^:2'
   565   $ try 'A' --config 'revsetalias.A=1^:2'
   605   ('symbol', 'A')
   566   ('symbol', 'A')
   606   * expanded:
   567   * expanded:
   607   (parent
       
   608     ('symbol', '1')
       
   609     (rangepre
       
   610       ('symbol', '2')))
       
   611   * optimized:
       
   612   (range
   568   (range
   613     (parentpost
   569     (parentpost
   614       ('symbol', '1'))
   570       ('symbol', '1'))
   615     ('symbol', '2'))
   571     ('symbol', '2'))
   616   * set:
   572   * set:
   617   <spanset+ 0:2>
   573   <spanset+ 0:2>
   618   0
   574   0
   619   1
   575   1
   620   2
   576   2
   621 
   577 
   622   $ try --optimize 'A:2' --config 'revsetalias.A=1^'
   578   $ try 'A:2' --config 'revsetalias.A=1^'
   623   (range
   579   (range
   624     ('symbol', 'A')
   580     ('symbol', 'A')
   625     ('symbol', '2'))
   581     ('symbol', '2'))
   626   * expanded:
   582   * expanded:
   627   (range
   583   (range
   628     (parentpost
   584     (parentpost
   629       ('symbol', '1'))
   585       ('symbol', '1'))
   630     ('symbol', '2'))
   586     ('symbol', '2'))
   631   * optimized:
       
   632   (range
       
   633     (parentpost
       
   634       ('symbol', '1'))
       
   635     ('symbol', '2'))
       
   636   * set:
   587   * set:
   637   <spanset+ 0:2>
   588   <spanset+ 0:2>
   638   0
   589   0
   639   1
   590   1
   640   2
   591   2
   641 
   592 
   642  but not beyond the boundary of alias expansion, because the resolution should
   593  but not beyond the boundary of alias expansion, because the resolution should
   643  be made at the parsing stage
   594  be made at the parsing stage
   644 
   595 
   645   $ try --optimize '1^A' --config 'revsetalias.A=:2'
   596   $ try '1^A' --config 'revsetalias.A=:2'
   646   (parent
   597   (parent
   647     ('symbol', '1')
   598     ('symbol', '1')
   648     ('symbol', 'A'))
   599     ('symbol', 'A'))
   649   * expanded:
   600   * expanded:
   650   (parent
   601   (parent
   651     ('symbol', '1')
   602     ('symbol', '1')
   652     (rangepre
   603     (rangepre
   653       ('symbol', '2')))
   604       ('symbol', '2')))
   654   * optimized:
   605   hg: parse error: ^ expects a number 0, 1, or 2
   655   (range
   606   [255]
   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 
   607 
   666 ancestor can accept 0 or more arguments
   608 ancestor can accept 0 or more arguments
   667 
   609 
   668   $ log 'ancestor()'
   610   $ log 'ancestor()'
   669   $ log 'ancestor(1)'
   611   $ log 'ancestor(1)'