# HG changeset patch # User Nicolas Dumazet # Date 1283142212 -32400 # Node ID 256d447a0fe3af525c7cadd2ade368e01160ec2e # Parent 437579a0068a3830f18221b3ef16d5f6a1af78ec tests: unify test-revset diff -r 437579a0068a -r 256d447a0fe3 tests/test-revset --- a/tests/test-revset Mon Aug 30 13:18:19 2010 +0900 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,146 +0,0 @@ -#!/bin/sh - -HGENCODING=utf-8 -export HGENCODING - -try() { - echo '% 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 -Aqm0 - -echo b > b -hg branch b -hg ci -Aqm1 - -rm a -hg branch a-b-c- -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 -Aqm4 -d "May 12 2005" - -hg co 3 -hg branch /a/b/c/ -hg ci -Aqm"5 bug" - -hg merge 4 -hg branch _a_b_c_ -hg ci -Aqm"6 issue619" - -hg branch .a.b.c. -hg ci -Aqm7 - -hg branch all -hg ci --close-branch -Aqm8 - -hg co 4 -hg branch é -hg ci -Aqm9 - -hg tag -r6 1.0 - -hg clone --quiet -U -r 7 . ../remote1 -hg clone --quiet -U -r 8 . ../remote2 -echo "[paths]" >> .hg/hgrc -echo "default = ../remote1" >> .hg/hgrc - -# names that should work without quoting -try a -try b-a -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-"-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 'ancestor(4,5) and 4' -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 'min(contains(a))' -log 'merge()' -log 'modifies(b)' -log 'outgoing()' -log 'outgoing("../remote1")' -log 'outgoing("../remote2")' -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")' - -log 'not 0 and 0:2' -log 'not 1 and 0:2' -log 'not 2 and 0:2' -log '(1 and 2)::' -log '(1 and 2):' -log '(1 and 2):3' -log 'sort(head(), -rev)' diff -r 437579a0068a -r 256d447a0fe3 tests/test-revset.out --- a/tests/test-revset.out Mon Aug 30 13:18:19 2010 +0900 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,237 +0,0 @@ -marked working directory as branch a -marked working directory as branch b -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: 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 'ancestor(4,5) and 4' -% 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 -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 'min(contains(a))' -0 -% log 'merge()' -6 -% log 'modifies(b)' -4 -% log 'outgoing()' -8 -9 -% log 'outgoing("../remote1")' -8 -9 -% log 'outgoing("../remote2")' -3 -5 -6 -7 -9 -% 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 -% log 'not 0 and 0:2' -1 -2 -% log 'not 1 and 0:2' -0 -2 -% log 'not 2 and 0:2' -0 -1 -% log '(1 and 2)::' -% log '(1 and 2):' -% log '(1 and 2):3' -% log 'sort(head(), -rev)' -9 -7 -6 -5 -4 -3 -2 -1 -0 diff -r 437579a0068a -r 256d447a0fe3 tests/test-revset.t --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/test-revset.t Mon Aug 30 13:23:32 2010 +0900 @@ -0,0 +1,307 @@ + $ HGENCODING=utf-8 + $ export HGENCODING + + $ try() { + > hg debugrevspec --debug $@ + > } + + $ log() { + > hg log --template '{rev}\n' -r "$1" + > } + + $ hg init repo + $ cd repo + + $ echo a > a + $ hg branch a + marked working directory as branch a + $ hg ci -Aqm0 + + $ echo b > b + $ hg branch b + marked working directory as branch b + $ hg ci -Aqm1 + + $ rm a + $ hg branch a-b-c- + marked working directory as branch a-b-c- + $ hg ci -Aqm2 -u Bob + + $ hg co 1 + 1 files updated, 0 files merged, 0 files removed, 0 files unresolved + $ hg branch +a+b+c+ + marked working directory as branch +a+b+c+ + $ hg ci -Aqm3 + + $ hg co 2 # interleave + 0 files updated, 0 files merged, 1 files removed, 0 files unresolved + $ echo bb > b + $ hg branch -- -a-b-c- + marked working directory as branch -a-b-c- + $ hg ci -Aqm4 -d "May 12 2005" + + $ hg co 3 + 2 files updated, 0 files merged, 0 files removed, 0 files unresolved + $ hg branch /a/b/c/ + marked working directory as branch /a/b/c/ + $ hg ci -Aqm"5 bug" + + $ hg merge 4 + 1 files updated, 0 files merged, 1 files removed, 0 files unresolved + (branch merge, don't forget to commit) + $ hg branch _a_b_c_ + marked working directory as branch _a_b_c_ + $ hg ci -Aqm"6 issue619" + + $ hg branch .a.b.c. + marked working directory as branch .a.b.c. + $ hg ci -Aqm7 + + $ hg branch all + marked working directory as branch all + $ hg ci --close-branch -Aqm8 + abort: can only close branch heads + + $ hg co 4 + 0 files updated, 0 files merged, 0 files removed, 0 files unresolved + $ hg branch é + marked working directory as branch é + $ hg ci -Aqm9 + + $ hg tag -r6 1.0 + + $ hg clone --quiet -U -r 7 . ../remote1 + $ hg clone --quiet -U -r 8 . ../remote2 + $ echo "[paths]" >> .hg/hgrc + $ echo "default = ../remote1" >> .hg/hgrc + +names that should work without quoting + + $ try a + ('symbol', 'a') + 0 + $ try b-a + ('minus', ('symbol', 'b'), ('symbol', 'a')) + 1 + $ try _a_b_c_ + ('symbol', '_a_b_c_') + 6 + $ try _a_b_c_-a + ('minus', ('symbol', '_a_b_c_'), ('symbol', 'a')) + 6 + $ try .a.b.c. + ('symbol', '.a.b.c.') + 7 + $ try .a.b.c.-a + ('minus', ('symbol', '.a.b.c.'), ('symbol', 'a')) + 7 + $ try -- '-a-b-c-' # complains + hg: parse error at 7: not a prefix: end + $ log -a-b-c- # succeeds with fallback + 4 + $ try -- -a-b-c--a # complains + ('minus', ('minus', ('minus', ('negate', ('symbol', 'a')), ('symbol', 'b')), ('symbol', 'c')), ('negate', ('symbol', 'a'))) + abort: unknown revision '-a'! + $ try é + ('symbol', '\xc3\xa9') + 9 + +quoting needed + + $ try '"-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' + $ try '1&2|3' # precedence - and is higher + ('or', ('and', ('symbol', '1'), ('symbol', '2')), ('symbol', '3')) + 3 + $ try '1|2&3' + ('or', ('symbol', '1'), ('and', ('symbol', '2'), ('symbol', '3'))) + 1 + $ try '1&2&3' # associativity + ('and', ('and', ('symbol', '1'), ('symbol', '2')), ('symbol', '3')) + $ try '1|(2|3)' + ('or', ('symbol', '1'), ('group', ('or', ('symbol', '2'), ('symbol', '3')))) + 1 + 2 + 3 + $ log '1.0' # tag + 6 + $ log 'a' # branch + 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 'ancestor(4,5) and 4' + $ 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 + 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 'min(contains(a))' + 0 + $ log 'merge()' + 6 + $ log 'modifies(b)' + 4 + $ log 'outgoing()' + 8 + 9 + $ log 'outgoing("../remote1")' + 8 + 9 + $ log 'outgoing("../remote2")' + 3 + 5 + 6 + 7 + 9 + $ 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 + + $ log 'not 0 and 0:2' + 1 + 2 + $ log 'not 1 and 0:2' + 0 + 2 + $ log 'not 2 and 0:2' + 0 + 1 + $ log '(1 and 2)::' + $ log '(1 and 2):' + $ log '(1 and 2):3' + $ log 'sort(head(), -rev)' + 9 + 7 + 6 + 5 + 4 + 3 + 2 + 1 + 0