# HG changeset patch # User Martijn Pieters # Date 1240589862 -7200 # Node ID 29bc5d18714a8f1a2357b91353f239dde19ee094 # Parent d3fb413667e593964c545ae9a788316248f6044b 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. diff -r d3fb413667e5 -r 29bc5d18714a mercurial/hg.py --- 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, diff -r d3fb413667e5 -r 29bc5d18714a tests/test-hg-parseurl.py --- /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) diff -r d3fb413667e5 -r 29bc5d18714a tests/test-hg-parseurl.py.out --- /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'