Mercurial > hg
changeset 8174:29bc5d18714a
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.
author | Martijn Pieters <mj@zopatista.com> |
---|---|
date | Fri, 24 Apr 2009 18:17:42 +0200 |
parents | d3fb413667e5 |
children | c8cb471fc9c2 |
files | mercurial/hg.py tests/test-hg-parseurl.py tests/test-hg-parseurl.py.out |
diffstat | 3 files changed, 18 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- 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'