--- /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