tests/test-revset.t
changeset 29935 e34cd85dc5b1
parent 29934 2c6a05b938d8
child 29943 80c86b9bb40b
equal deleted inserted replaced
29934:2c6a05b938d8 29935:e34cd85dc5b1
  1279       ('symbol', '_list')
  1279       ('symbol', '_list')
  1280       ('string', '0\x001\x002')
  1280       ('string', '0\x001\x002')
  1281       follow)
  1281       follow)
  1282     define)
  1282     define)
  1283   * set:
  1283   * set:
  1284   <baseset [0, 1, 2]>
  1284   <filteredset
  1285   0
  1285     <spanset- 0:2>,
  1286   1
  1286     <baseset [0, 1, 2]>>
  1287   2
  1287   2
  1288  BROKEN: should be '2 1 0'
  1288   1
       
  1289   0
  1289 
  1290 
  1290  'A + B' should take the ordering of the left expression:
  1291  'A + B' should take the ordering of the left expression:
  1291 
  1292 
  1292   $ try --optimize '2:0 & (0:1 + 2)'
  1293   $ try --optimize '2:0 & (0:1 + 2)'
  1293   (and
  1294   (and
  1348       define)
  1349       define)
  1349     define)
  1350     define)
  1350   * set:
  1351   * set:
  1351   <filteredset
  1352   <filteredset
  1352     <spanset- 0:2>,
  1353     <spanset- 0:2>,
  1353     <baseset [0, 1, 2]>>
  1354     <baseset+ [0, 1, 2]>>
  1354   2
  1355   2
  1355   1
  1356   1
  1356   0
  1357   0
  1357 
  1358 
  1358   $ trylist --optimize '%ld & 2:0' 0 2 1
  1359   $ trylist --optimize '%ld & 2:0' 0 2 1
  1403       ('symbol', '_hexlist')
  1404       ('symbol', '_hexlist')
  1404       ('string', '*') (glob)
  1405       ('string', '*') (glob)
  1405       follow)
  1406       follow)
  1406     define)
  1407     define)
  1407   * set:
  1408   * set:
  1408   <baseset [0, 1, 2]>
  1409   <filteredset
  1409   0
  1410     <spanset- 0:2>,
  1410   1
  1411     <baseset [0, 1, 2]>>
  1411   2
  1412   2
  1412  BROKEN: should be '2 1 0'
  1413   1
       
  1414   0
  1413 
  1415 
  1414   $ trylist --optimize --bin '%ln & 2:0' `hg log -T '{node} ' -r0+2+1`
  1416   $ trylist --optimize --bin '%ln & 2:0' `hg log -T '{node} ' -r0+2+1`
  1415   (and
  1417   (and
  1416     (func
  1418     (func
  1417       ('symbol', '_hexlist')
  1419       ('symbol', '_hexlist')
  1433   * set:
  1435   * set:
  1434   <baseset [0, 2, 1]>
  1436   <baseset [0, 2, 1]>
  1435   0
  1437   0
  1436   2
  1438   2
  1437   1
  1439   1
       
  1440 
       
  1441  '_list' should not go through the slow follow-order path if order doesn't
       
  1442  matter:
       
  1443 
       
  1444   $ try -p optimized '2:0 & not (0 + 1)'
       
  1445   * optimized:
       
  1446   (difference
       
  1447     (range
       
  1448       ('symbol', '2')
       
  1449       ('symbol', '0')
       
  1450       define)
       
  1451     (func
       
  1452       ('symbol', '_list')
       
  1453       ('string', '0\x001')
       
  1454       any)
       
  1455     define)
       
  1456   * set:
       
  1457   <filteredset
       
  1458     <spanset- 0:2>,
       
  1459     <not
       
  1460       <baseset [0, 1]>>>
       
  1461   2
       
  1462 
       
  1463   $ try -p optimized '2:0 & not (0:2 & (0 + 1))'
       
  1464   * optimized:
       
  1465   (difference
       
  1466     (range
       
  1467       ('symbol', '2')
       
  1468       ('symbol', '0')
       
  1469       define)
       
  1470     (and
       
  1471       (range
       
  1472         ('symbol', '0')
       
  1473         ('symbol', '2')
       
  1474         any)
       
  1475       (func
       
  1476         ('symbol', '_list')
       
  1477         ('string', '0\x001')
       
  1478         any)
       
  1479       any)
       
  1480     define)
       
  1481   * set:
       
  1482   <filteredset
       
  1483     <spanset- 0:2>,
       
  1484     <not
       
  1485       <baseset [0, 1]>>>
       
  1486   2
  1438 
  1487 
  1439  'present()' should do nothing other than suppressing an error:
  1488  'present()' should do nothing other than suppressing an error:
  1440 
  1489 
  1441   $ try --optimize '2:0 & present(0 + 1 + 2)'
  1490   $ try --optimize '2:0 & present(0 + 1 + 2)'
  1442   (and
  1491   (and
  1660   <filteredset
  1709   <filteredset
  1661     <baseset [1]>,
  1710     <baseset [1]>,
  1662     <spanset- 0:2>>
  1711     <spanset- 0:2>>
  1663   1
  1712   1
  1664 
  1713 
  1665  'A & B' can be rewritten as 'B & A' by weight, but the ordering rule should
  1714  'A & B' can be rewritten as 'B & A' by weight, but that's fine as long as
  1666  be determined before the optimization (i.e. 'B' should take the ordering of
  1715  the ordering rule is determined before the rewrite; in this example,
  1667  'A'):
  1716  'B' follows the order of the initial set, which is the same order as 'A'
       
  1717  since 'A' also follows the order:
  1668 
  1718 
  1669   $ try --optimize 'contains("glob:*") & (2 + 0 + 1)'
  1719   $ try --optimize 'contains("glob:*") & (2 + 0 + 1)'
  1670   (and
  1720   (and
  1671     (func
  1721     (func
  1672       ('symbol', 'contains')
  1722       ('symbol', 'contains')
  1688       ('string', 'glob:*')
  1738       ('string', 'glob:*')
  1689       define)
  1739       define)
  1690     define)
  1740     define)
  1691   * set:
  1741   * set:
  1692   <filteredset
  1742   <filteredset
  1693     <baseset [2, 0, 1]>,
  1743     <baseset+ [0, 1, 2]>,
  1694     <contains 'glob:*'>>
  1744     <contains 'glob:*'>>
  1695   2
  1745   0
  1696   0
  1746   1
  1697   1
  1747   2
  1698  BROKEN: should be '0 1 2'
  1748 
       
  1749  and in this example, 'A & B' is rewritten as 'B & A', but 'A' overrides
       
  1750  the order appropriately:
  1699 
  1751 
  1700   $ try --optimize 'reverse(contains("glob:*")) & (0 + 2 + 1)'
  1752   $ try --optimize 'reverse(contains("glob:*")) & (0 + 2 + 1)'
  1701   (and
  1753   (and
  1702     (func
  1754     (func
  1703       ('symbol', 'reverse')
  1755       ('symbol', 'reverse')
  1724         define)
  1776         define)
  1725       define)
  1777       define)
  1726     define)
  1778     define)
  1727   * set:
  1779   * set:
  1728   <filteredset
  1780   <filteredset
  1729     <baseset [1, 2, 0]>,
  1781     <baseset- [0, 1, 2]>,
  1730     <contains 'glob:*'>>
  1782     <contains 'glob:*'>>
  1731   1
  1783   2
  1732   2
  1784   1
  1733   0
  1785   0
  1734  BROKEN: should be '2 1 0'
       
  1735 
  1786 
  1736 test sort revset
  1787 test sort revset
  1737 --------------------------------------------
  1788 --------------------------------------------
  1738 
  1789 
  1739 test when adding two unordered revsets
  1790 test when adding two unordered revsets