hgweb: replace .sourcelast with .bottomline that does the same
In paper and Coal, basically, div.sourcelast was only used to make a 1px border
on the bottom of file source view (and only there). It's better to use
bottomline class, that also exists for the same purpose (visually), but is used
more widely and works without needing an empty <div>.
from mercurial import demandimport; demandimport.enable()
import urllib2
from mercurial import ui, util
from mercurial import url
from mercurial.error import Abort
class myui(ui.ui):
def interactive(self):
return False
origui = myui()
def writeauth(items):
ui = origui.copy()
for name, value in items.iteritems():
ui.setconfig('auth', name, value)
return ui
def dumpdict(dict):
return '{' + ', '.join(['%s: %s' % (k, dict[k])
for k in sorted(dict.iterkeys())]) + '}'
def test(auth, urls=None):
print 'CFG:', dumpdict(auth)
prefixes = set()
for k in auth:
prefixes.add(k.split('.', 1)[0])
for p in prefixes:
for name in ('.username', '.password'):
if (p + name) not in auth:
auth[p + name] = p
auth = dict((k, v) for k, v in auth.iteritems() if v is not None)
ui = writeauth(auth)
def _test(uri):
print 'URI:', uri
try:
pm = url.passwordmgr(ui)
u, authinfo = util.url(uri).authinfo()
if authinfo is not None:
pm.add_password(*authinfo)
print ' ', pm.find_user_password('test', u)
except Abort:
print 'abort'
if not urls:
urls = [
'http://example.org/foo',
'http://example.org/foo/bar',
'http://example.org/bar',
'https://example.org/foo',
'https://example.org/foo/bar',
'https://example.org/bar',
'https://x@example.org/bar',
'https://y@example.org/bar',
]
for u in urls:
_test(u)
print '\n*** Test in-uri schemes\n'
test({'x.prefix': 'http://example.org'})
test({'x.prefix': 'https://example.org'})
test({'x.prefix': 'http://example.org', 'x.schemes': 'https'})
test({'x.prefix': 'https://example.org', 'x.schemes': 'http'})
print '\n*** Test separately configured schemes\n'
test({'x.prefix': 'example.org', 'x.schemes': 'http'})
test({'x.prefix': 'example.org', 'x.schemes': 'https'})
test({'x.prefix': 'example.org', 'x.schemes': 'http https'})
print '\n*** Test prefix matching\n'
test({'x.prefix': 'http://example.org/foo',
'y.prefix': 'http://example.org/bar'})
test({'x.prefix': 'http://example.org/foo',
'y.prefix': 'http://example.org/foo/bar'})
test({'x.prefix': '*', 'y.prefix': 'https://example.org/bar'})
print '\n*** Test user matching\n'
test({'x.prefix': 'http://example.org/foo',
'x.username': None,
'x.password': 'xpassword'},
urls=['http://y@example.org/foo'])
test({'x.prefix': 'http://example.org/foo',
'x.username': None,
'x.password': 'xpassword',
'y.prefix': 'http://example.org/foo',
'y.username': 'y',
'y.password': 'ypassword'},
urls=['http://y@example.org/foo'])
test({'x.prefix': 'http://example.org/foo/bar',
'x.username': None,
'x.password': 'xpassword',
'y.prefix': 'http://example.org/foo',
'y.username': 'y',
'y.password': 'ypassword'},
urls=['http://y@example.org/foo/bar'])
def testauthinfo(fullurl, authurl):
print 'URIs:', fullurl, authurl
pm = urllib2.HTTPPasswordMgrWithDefaultRealm()
pm.add_password(*util.url(fullurl).authinfo()[1])
print pm.find_user_password('test', authurl)
print '\n*** Test urllib2 and util.url\n'
testauthinfo('http://user@example.com:8080/foo', 'http://example.com:8080/foo')