tests: extend revset test
authorMatt Mackall <mpm@selenic.com>
Mon, 21 Jun 2010 13:26:13 -0500
changeset 11419 3cc2e34d7a7d
parent 11418 67bb9d78f05e
child 11420 a99ef3711890
tests: extend revset test
tests/test-revset
tests/test-revset.out
--- a/tests/test-revset	Mon Jun 21 13:25:42 2010 -0500
+++ b/tests/test-revset	Mon Jun 21 13:26:13 2010 -0500
@@ -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_-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")'
--- a/tests/test-revset.out	Mon Jun 21 13:25:42 2010 -0500
+++ b/tests/test-revset.out	Mon Jun 21 13:26:13 2010 -0500
@@ -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