revset: try to handle hyphenated symbols if lookup callback is available
Formerly an expression like "2.4-rc::" was tokenized as 2.4|-|rc|::.
This allows dashes in symbols iff the whole symbol-like string can be
looked up. Otherwise, it's tokenized as a series of symbols and
operators.
No attempt is made to accept dashed symbols inside larger symbol-like
string, for instance foo-bar or bar-baz inside foo-bar-baz.
*** Test in-uri schemes
CFG: {x.prefix: http://example.org}
URI: http://example.org/foo
('x', 'x')
URI: http://example.org/foo/bar
('x', 'x')
URI: http://example.org/bar
('x', 'x')
URI: https://example.org/foo
abort
URI: https://example.org/foo/bar
abort
URI: https://example.org/bar
abort
URI: https://x@example.org/bar
abort
URI: https://y@example.org/bar
abort
CFG: {x.prefix: https://example.org}
URI: http://example.org/foo
abort
URI: http://example.org/foo/bar
abort
URI: http://example.org/bar
abort
URI: https://example.org/foo
('x', 'x')
URI: https://example.org/foo/bar
('x', 'x')
URI: https://example.org/bar
('x', 'x')
URI: https://x@example.org/bar
('x', 'x')
URI: https://y@example.org/bar
abort
CFG: {x.prefix: http://example.org, x.schemes: https}
URI: http://example.org/foo
('x', 'x')
URI: http://example.org/foo/bar
('x', 'x')
URI: http://example.org/bar
('x', 'x')
URI: https://example.org/foo
abort
URI: https://example.org/foo/bar
abort
URI: https://example.org/bar
abort
URI: https://x@example.org/bar
abort
URI: https://y@example.org/bar
abort
CFG: {x.prefix: https://example.org, x.schemes: http}
URI: http://example.org/foo
abort
URI: http://example.org/foo/bar
abort
URI: http://example.org/bar
abort
URI: https://example.org/foo
('x', 'x')
URI: https://example.org/foo/bar
('x', 'x')
URI: https://example.org/bar
('x', 'x')
URI: https://x@example.org/bar
('x', 'x')
URI: https://y@example.org/bar
abort
*** Test separately configured schemes
CFG: {x.prefix: example.org, x.schemes: http}
URI: http://example.org/foo
('x', 'x')
URI: http://example.org/foo/bar
('x', 'x')
URI: http://example.org/bar
('x', 'x')
URI: https://example.org/foo
abort
URI: https://example.org/foo/bar
abort
URI: https://example.org/bar
abort
URI: https://x@example.org/bar
abort
URI: https://y@example.org/bar
abort
CFG: {x.prefix: example.org, x.schemes: https}
URI: http://example.org/foo
abort
URI: http://example.org/foo/bar
abort
URI: http://example.org/bar
abort
URI: https://example.org/foo
('x', 'x')
URI: https://example.org/foo/bar
('x', 'x')
URI: https://example.org/bar
('x', 'x')
URI: https://x@example.org/bar
('x', 'x')
URI: https://y@example.org/bar
abort
CFG: {x.prefix: example.org, x.schemes: http https}
URI: http://example.org/foo
('x', 'x')
URI: http://example.org/foo/bar
('x', 'x')
URI: http://example.org/bar
('x', 'x')
URI: https://example.org/foo
('x', 'x')
URI: https://example.org/foo/bar
('x', 'x')
URI: https://example.org/bar
('x', 'x')
URI: https://x@example.org/bar
('x', 'x')
URI: https://y@example.org/bar
abort
*** Test prefix matching
CFG: {x.prefix: http://example.org/foo, y.prefix: http://example.org/bar}
URI: http://example.org/foo
('x', 'x')
URI: http://example.org/foo/bar
('x', 'x')
URI: http://example.org/bar
('y', 'y')
URI: https://example.org/foo
abort
URI: https://example.org/foo/bar
abort
URI: https://example.org/bar
abort
URI: https://x@example.org/bar
abort
URI: https://y@example.org/bar
abort
CFG: {x.prefix: http://example.org/foo, y.prefix: http://example.org/foo/bar}
URI: http://example.org/foo
('x', 'x')
URI: http://example.org/foo/bar
('y', 'y')
URI: http://example.org/bar
abort
URI: https://example.org/foo
abort
URI: https://example.org/foo/bar
abort
URI: https://example.org/bar
abort
URI: https://x@example.org/bar
abort
URI: https://y@example.org/bar
abort
CFG: {x.prefix: *, y.prefix: https://example.org/bar}
URI: http://example.org/foo
abort
URI: http://example.org/foo/bar
abort
URI: http://example.org/bar
abort
URI: https://example.org/foo
('x', 'x')
URI: https://example.org/foo/bar
('x', 'x')
URI: https://example.org/bar
('y', 'y')
URI: https://x@example.org/bar
('x', 'x')
URI: https://y@example.org/bar
('y', 'y')
*** Test user matching
CFG: {x.password: xpassword, x.prefix: http://example.org/foo, x.username: None}
URI: http://y@example.org/foo
('y', 'xpassword')
CFG: {x.password: xpassword, x.prefix: http://example.org/foo, x.username: None, y.password: ypassword, y.prefix: http://example.org/foo, y.username: y}
URI: http://y@example.org/foo
('y', 'ypassword')
CFG: {x.password: xpassword, x.prefix: http://example.org/foo/bar, x.username: None, y.password: ypassword, y.prefix: http://example.org/foo, y.username: y}
URI: http://y@example.org/foo/bar
('y', 'xpassword')
*** Test urllib2 and util.url
URIs: http://user@example.com:8080/foo http://example.com:8080/foo
('user', '')