diff --git a/tests/test-revset b/tests/test-revset --- a/tests/test-revset +++ b/tests/test-revset @@ -1,28 +1,61 @@ #!/bin/sh +HGENCODING=utf-8 +export HGENCODING + try() { echo '% hg debugrevspec' $@ - hg debugrevspec $@ + hg debugrevspec --debug $@ +} + +log() { + echo "% log '$1'" + hg log --template '{rev}\n' -r "$1" } hg init repo cd repo + +echo a > a hg branch a -hg ci -m "plain name" +hg ci -Aqm0 + +echo b > b hg branch b -hg ci -m "another plain name" +hg ci -Aqm1 + +rm a hg branch a-b-c- -hg ci -m "with dashes" +hg ci -Aqm2 -u Bob + +hg co 1 +hg branch +a+b+c+ +hg ci -Aqm3 + +hg co 2 # interleave +echo bb > b hg branch -- -a-b-c- -hg ci -m "with leading dash" -hg branch +a+b+c+ -hg ci -m "with plusses" +hg ci -Aqm4 -d "May 12 2005" + +hg co 3 hg branch /a/b/c/ -hg ci -m "with slashes" +hg ci -Aqm"5 bug" + +hg merge 4 hg branch _a_b_c_ -hg ci -m "with underscores" +hg ci -Aqm"6 issue619" + hg branch .a.b.c. -hg ci -m "with dots" +hg ci -Aqm7 + +hg branch all +hg ci --close-branch -Aqm8 + +hg co 4 +hg branch é +hg ci -Aqm9 + +hg tag -r6 1.0 # names that should work without quoting try a @@ -31,8 +64,65 @@ try _a_b_c_ try _a_b_c_-a try .a.b.c. try .a.b.c.-a +try -- '-a-b-c-' # complains +log -a-b-c- # succeeds with fallback +try -- -a-b-c--a # complains +try é # quoting needed -try '"-a-b-c-"' try '"-a-b-c-"-a' +log '1 or 2' +log '1|2' +log '1 and 2' +log '1&2' +try '1&2|3' # precedence - and is higher +try '1|2&3' +try '1&2&3' # associativity +try '1|(2|3)' +log '1.0' # tag +log 'a' # branch +log '2785f51ee' +log 'date(2005)' +log 'date(this is a test)' +log 'date()' +log 'date' +log 'date(' +log 'date(tip)' +log '"date"' +log 'date(2005) and 1::' + +log 'ancestor(1)' +log 'ancestor(4,5)' +log 'ancestors(5)' +log 'author(bob)' +log 'branch(é)' +log 'children(ancestor(4,5))' +log 'closed()' +log 'contains(a)' +log 'descendants(2 or 3)' +log 'file(b)' +log 'follow()' +log 'grep("issue\d+")' +log 'head()' +log 'heads(6::)' +log 'keyword(issue)' +log 'limit(head(), 1)' +log 'max(contains(a))' +log 'merge()' +log 'modifies(b)' +log 'p1(merge())' +log 'p2(merge())' +log 'parents(merge())' +log 'removes(a)' +log 'roots(all())' +log 'reverse(2 or 3 or 4 or 5)' +log 'sort(limit(reverse(all()), 3))' +log 'sort(2 or 3 or 4 or 5, date)' +log 'tagged()' +log 'user(bob)' + +log '4::8' +log '4:8' + +log 'sort(!merge() & (modifies(b) | user(bob) | keyword(bug) | keyword(issue) & 1::9), "-date")' diff --git a/tests/test-revset.out b/tests/test-revset.out --- a/tests/test-revset.out +++ b/tests/test-revset.out @@ -1,24 +1,200 @@ marked working directory as branch a marked working directory as branch b marked working directory as branch a-b-c- -marked working directory as branch -a-b-c- +1 files updated, 0 files merged, 0 files removed, 0 files unresolved marked working directory as branch +a+b+c+ +0 files updated, 0 files merged, 1 files removed, 0 files unresolved +marked working directory as branch -a-b-c- +2 files updated, 0 files merged, 0 files removed, 0 files unresolved marked working directory as branch /a/b/c/ +1 files updated, 0 files merged, 1 files removed, 0 files unresolved +(branch merge, don't forget to commit) marked working directory as branch _a_b_c_ marked working directory as branch .a.b.c. +marked working directory as branch all +abort: can only close branch heads +0 files updated, 0 files merged, 0 files removed, 0 files unresolved +marked working directory as branch é % hg debugrevspec a +('symbol', 'a') 0 % hg debugrevspec b-a +('minus', ('symbol', 'b'), ('symbol', 'a')) 1 % hg debugrevspec _a_b_c_ +('symbol', '_a_b_c_') 6 % hg debugrevspec _a_b_c_-a +('minus', ('symbol', '_a_b_c_'), ('symbol', 'a')) 6 % hg debugrevspec .a.b.c. +('symbol', '.a.b.c.') 7 % hg debugrevspec .a.b.c.-a +('minus', ('symbol', '.a.b.c.'), ('symbol', 'a')) 7 -% hg debugrevspec "-a-b-c-" +% hg debugrevspec -- -a-b-c- +hg: parse error at 7: not a prefix: end +% log '-a-b-c-' +4 +% hg debugrevspec -- -a-b-c--a +('minus', ('minus', ('minus', ('negate', ('symbol', 'a')), ('symbol', 'b')), ('symbol', 'c')), ('negate', ('symbol', 'a'))) +abort: unknown revision '-a'! +% hg debugrevspec é +('symbol', '\xc3\xa9') +9 +% hg debugrevspec "-a-b-c-"-a +('minus', ('string', '-a-b-c-'), ('symbol', 'a')) +4 +% log '1 or 2' +1 +2 +% log '1|2' +1 +2 +% log '1 and 2' +% log '1&2' +% hg debugrevspec 1&2|3 +('or', ('and', ('symbol', '1'), ('symbol', '2')), ('symbol', '3')) +3 +% hg debugrevspec 1|2&3 +('or', ('symbol', '1'), ('and', ('symbol', '2'), ('symbol', '3'))) +1 +% hg debugrevspec 1&2&3 +('and', ('and', ('symbol', '1'), ('symbol', '2')), ('symbol', '3')) +% hg debugrevspec 1|(2|3) +('or', ('symbol', '1'), ('group', ('or', ('symbol', '2'), ('symbol', '3')))) +1 +2 +3 +% log '1.0' +6 +% log 'a' +0 +% log '2785f51ee' +0 +% log 'date(2005)' +4 +% log 'date(this is a test)' +hg: parse error at 10: unexpected token: symbol +% log 'date()' +hg: parse error: date wants a string +% log 'date' +hg: parse error: can't use date here +% log 'date(' +hg: parse error at 5: not a prefix: end +% log 'date(tip)' +abort: invalid date: 'tip' +% log '"date"' +abort: unknown revision 'date'! +% log 'date(2005) and 1::' +4 +% log 'ancestor(1)' +hg: parse error: ancestor wants two arguments +% log 'ancestor(4,5)' +1 +% log 'ancestors(5)' +0 +1 +3 +5 +% log 'author(bob)' +2 +% log 'branch(é)' +8 +9 +% log 'children(ancestor(4,5))' +2 +3 +% log 'closed()' +% log 'contains(a)' +0 +1 +3 +5 +% log 'descendants(2 or 3)' +2 3 -% hg debugrevspec "-a-b-c-"-a +4 +5 +6 +7 +8 +9 +% log 'file(b)' +1 +4 +% log 'follow()' +0 +1 +2 +4 +8 +9 +% log 'grep("issue\d+")' +6 +% log 'head()' +0 +1 +2 3 +4 +5 +6 +7 +9 +% log 'heads(6::)' +7 +% log 'keyword(issue)' +6 +% log 'limit(head(), 1)' +0 +% log 'max(contains(a))' +5 +% log 'merge()' +6 +% log 'modifies(b)' +4 +% log 'p1(merge())' +5 +% log 'p2(merge())' +4 +% log 'parents(merge())' +4 +5 +% log 'removes(a)' +2 +6 +% log 'roots(all())' +0 +% log 'reverse(2 or 3 or 4 or 5)' +5 +4 +3 +2 +% log 'sort(limit(reverse(all()), 3))' +7 +8 +9 +% log 'sort(2 or 3 or 4 or 5, date)' +2 +3 +5 +4 +% log 'tagged()' +6 +% log 'user(bob)' +2 +% log '4::8' +4 +8 +% log '4:8' +4 +5 +6 +7 +8 +% log 'sort(!merge() & (modifies(b) | user(bob) | keyword(bug) | keyword(issue) & 1::9), "-date")' +4 +2 +5