hg: allow hg.parseurl(url, None)
In many places hg.parseurl is called with a url and "opts.get('rev')",
suggesting the second, optional argument can be None. Because opts['rev']
usually defaults to [] this never happens in practice.
However, extensions don't necessarily behave the same, but do copy this
pattern.
Also, include wider hg.parseurl tests, beyond a demonstration of the problem.
--- a/mercurial/hg.py Fri Apr 24 17:00:18 2009 -0500
+++ b/mercurial/hg.py Fri Apr 24 18:17:42 2009 +0200
@@ -25,7 +25,7 @@
url, branch = url.split('#', 1)
checkout = revs and revs[-1] or branch
- return url, revs + [branch], checkout
+ return url, (revs or []) + [branch], checkout
schemes = {
'bundle': bundlerepo,
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-hg-parseurl.py Fri Apr 24 18:17:42 2009 +0200
@@ -0,0 +1,12 @@
+#!/usr/bin/env python
+
+from mercurial.hg import parseurl
+
+def testparse(url, rev=[]):
+ print '%s, revs: %r, checkout: %r' % parseurl(url, rev)
+
+testparse('http://example.com/no/anchor')
+testparse('http://example.com/an/anchor#foo')
+testparse('http://example.com/no/anchor/revs', rev=['foo'])
+testparse('http://example.com/an/anchor/revs#bar', rev=['foo'])
+testparse('http://example.com/an/anchor/rev-None#foo', rev=None)
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-hg-parseurl.py.out Fri Apr 24 18:17:42 2009 +0200
@@ -0,0 +1,5 @@
+http://example.com/no/anchor, revs: None, checkout: None
+http://example.com/an/anchor, revs: ['foo'], checkout: 'foo'
+http://example.com/no/anchor/revs, revs: ['foo'], checkout: 'foo'
+http://example.com/an/anchor/revs, revs: ['foo', 'bar'], checkout: 'foo'
+http://example.com/an/anchor/rev-None, revs: ['foo'], checkout: 'foo'