Mercurial > hg-stable
changeset 29779: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 | e5b794063fd4 |
children | abe4eecc3253 |
files | tests/test-revset.t |
diffstat | 1 files changed, 185 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/tests/test-revset.t Sun Jul 05 21:11:19 2015 +0900 +++ b/tests/test-revset.t Sat Aug 06 19:59:28 2016 +0900 @@ -478,6 +478,191 @@ 8 9 +infix/suffix resolution of ^ operator (issue2884): + + x^:y means (x^):y + + $ try --optimize '1^:2' + (parent + ('symbol', '1') + (rangepre + ('symbol', '2'))) + * optimized: + (range + (parentpost + ('symbol', '1')) + ('symbol', '2')) + * set: + <spanset+ 0:2> + 0 + 1 + 2 + + $ try --optimize '1^::2' + (parent + ('symbol', '1') + (dagrangepre + ('symbol', '2'))) + * optimized: + (dagrange + (parentpost + ('symbol', '1')) + ('symbol', '2')) + * set: + <baseset+ [0, 1, 2]> + 0 + 1 + 2 + + x^:y should be resolved before omitting group operators + + $ try --optimize '1^(:2)' + (parent + ('symbol', '1') + (group + (rangepre + ('symbol', '2')))) + * optimized: + (parent + ('symbol', '1') + (range + ('string', '0') + ('symbol', '2'))) + hg: parse error: ^ expects a number 0, 1, or 2 + [255] + + x^:y should be resolved recursively + + $ try --optimize 'sort(1^:2)' + (func + ('symbol', 'sort') + (parent + ('symbol', '1') + (rangepre + ('symbol', '2')))) + * optimized: + (func + ('symbol', 'sort') + (range + (parentpost + ('symbol', '1')) + ('symbol', '2'))) + * set: + <spanset+ 0:2> + 0 + 1 + 2 + + $ try --optimize '(3^:4)^:2' + (parent + (group + (parent + ('symbol', '3') + (rangepre + ('symbol', '4')))) + (rangepre + ('symbol', '2'))) + * optimized: + (range + (parentpost + (range + (parentpost + ('symbol', '3')) + ('symbol', '4'))) + ('symbol', '2')) + * set: + <spanset+ 0:2> + 0 + 1 + 2 + + $ try --optimize '(3^::4)^::2' + (parent + (group + (parent + ('symbol', '3') + (dagrangepre + ('symbol', '4')))) + (dagrangepre + ('symbol', '2'))) + * optimized: + (dagrange + (parentpost + (dagrange + (parentpost + ('symbol', '3')) + ('symbol', '4'))) + ('symbol', '2')) + * set: + <baseset+ [0, 1, 2]> + 0 + 1 + 2 + + x^ in alias should also be resolved + + $ try --optimize 'A' --config 'revsetalias.A=1^:2' + ('symbol', 'A') + * expanded: + (parent + ('symbol', '1') + (rangepre + ('symbol', '2'))) + * optimized: + (range + (parentpost + ('symbol', '1')) + ('symbol', '2')) + * set: + <spanset+ 0:2> + 0 + 1 + 2 + + $ try --optimize 'A:2' --config 'revsetalias.A=1^' + (range + ('symbol', 'A') + ('symbol', '2')) + * expanded: + (range + (parentpost + ('symbol', '1')) + ('symbol', '2')) + * optimized: + (range + (parentpost + ('symbol', '1')) + ('symbol', '2')) + * set: + <spanset+ 0:2> + 0 + 1 + 2 + + but not beyond the boundary of alias expansion, because the resolution should + be made at the parsing stage + + $ try --optimize '1^A' --config 'revsetalias.A=:2' + (parent + ('symbol', '1') + ('symbol', 'A')) + * expanded: + (parent + ('symbol', '1') + (rangepre + ('symbol', '2'))) + * optimized: + (range + (parentpost + ('symbol', '1')) + ('symbol', '2')) + * set: + <spanset+ 0:2> + 0 + 1 + 2 +BROKEN: should be parsed as '1^(:2)' + ancestor can accept 0 or more arguments $ log 'ancestor()'