tests/test-revset.t
changeset 12104 256d447a0fe3
parent 12103 437579a0068a
--- /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