Mercurial > hg
view tests/test-hgweb-auth.py @ 10669:181cbb23572e stable
test-extension: fix disabled extension tests for run-tests.py --local
One test that requires inserting a broken extension into hgext does this
by modifying PYTHONPATH. This doesn't work when run with --local because
the 'hg' script being used is in the same directory as the local hgext.
Instead of modifying PYTHONPATH, a secondary extension is enabled using
--config that inserts the dummy hgext at the beginning of sys.path,
before the script's path.
author | Brodie Rao <me+hg@dackz.net> |
---|---|
date | Fri, 05 Mar 2010 17:38:02 -0500 |
parents | 08a0f04b56bd |
children | 4a43e23b8c55 |
line wrap: on
line source
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'})