##// END OF EJS Templates
i18n: use UTF-8 string to lower filename for case collision check...
i18n: use UTF-8 string to lower filename for case collision check Some character sets, cp932 (known as Shift-JIS for Japanese) for example, use 0x41('A') - 0x5A('Z') and 0x61('a') - 0x7A('z') as second or later character. In such character set, case collision checking recognizes different files as CASEFOLDED same file, if filenames are treated as byte sequence. win32mbcs extension is not appropriate to handle this problem, because this problem can occur on other than Windows platform only if problematic character set is used. Callers of util.checkcase() use known ASCII filenames as last component of path, and string.lower() is not applied to directory part of path. So, util.checkcase() is kept intact, even though it applies string.lower() to filenames.

File last commit:

r10282:08a0f04b default
r14980:28e98a8b stable
Show More
test-hgweb-auth.py
64 lines | 1.9 KiB | text/x-python | PythonLexer
from mercurial import demandimport; demandimport.enable()
from mercurial import ui
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):
print 'CFG:', dumpdict(auth)
prefixes = set()
for k in auth:
prefixes.add(k.split('.', 1)[0])
for p in prefixes:
auth.update({p + '.username': p, p + '.password': p})
ui = writeauth(auth)
def _test(uri):
print 'URI:', uri
try:
pm = url.passwordmgr(ui)
print ' ', pm.find_user_password('test', uri)
except Abort, e:
print 'abort'
_test('http://example.org/foo')
_test('http://example.org/foo/bar')
_test('http://example.org/bar')
_test('https://example.org/foo')
_test('https://example.org/foo/bar')
_test('https://example.org/bar')
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'})