##// END OF EJS Templates
hgweb: support constructing URLs from an alternate base URL...
hgweb: support constructing URLs from an alternate base URL The web.baseurl config option allows server operators to define a custom URL for hosted content. The way it works today is that hgwebdir parses this config option into URL components then updates the appropriate WSGI environment variables so the request "lies" about its details. For example, SERVER_NAME is updated to reflect the alternate base URL's hostname. The WSGI environment should not be modified because WSGI applications may want to know the original request details (for debugging, etc). This commit teaches our request parser about the existence of an alternate base URL. If defined, the advertised URL and other self-reflected paths will take the alternate base URL into account. The hgweb WSGI application didn't use web.baseurl. But hgwebdir did. We update hgwebdir to alter the environment parsing accordingly. The old code around environment manipulation has been removed. With this change, parserequestfromenv() has grown to a bit unwieldy. Now that practically everyone is using it, it is obvious that there is some unused features that can be trimmed. So look for this in follow-up commits. Differential Revision: https://phab.mercurial-scm.org/D2822

File last commit:

r35179:898c6f81 stable
r36916:219b2335 default
Show More
test-doctest.py
80 lines | 2.6 KiB | text/x-python | PythonLexer
Mads Kiilerich
tests: fix readline escape characters in output for test-doctest.py
r7041 # this is hack to make sure no escape characters are inserted into the output
Pulkit Goyal
tests: make test-doctest use absolute_import
r28933
from __future__ import absolute_import
import doctest
import os
Yuya Nishihara
doctest: normalize b'', u'' and exception output on Python 3...
r34142 import re
Pulkit Goyal
tests: make test-doctest use absolute_import
r28933 import sys
Yuya Nishihara
tests: allow running doctests selectively on Python 3...
r31438
ispy3 = (sys.version_info[0] >= 3)
Patrick Mezard
test-doctest: remove TERM env variable only if it's there
r7078 if 'TERM' in os.environ:
Dirkjan Ochtman
clean up trailing spaces
r7184 del os.environ['TERM']
Benoit Boissinot
[extendedchangelog] encode/decode function...
r3232
Yuya Nishihara
doctest: normalize b'', u'' and exception output on Python 3...
r34142 class py3docchecker(doctest.OutputChecker):
def check_output(self, want, got, optionflags):
want2 = re.sub(r'''\bu(['"])(.*?)\1''', r'\1\2\1', want) # py2: u''
got2 = re.sub(r'''\bb(['"])(.*?)\1''', r'\1\2\1', got) # py3: b''
# py3: <exc.name>: b'<msg>' -> <name>: <msg>
# <exc.name>: <others> -> <name>: <others>
got2 = re.sub(r'''^mercurial\.\w+\.(\w+): (['"])(.*?)\2''', r'\1: \3',
got2, re.MULTILINE)
got2 = re.sub(r'^mercurial\.\w+\.(\w+): ', r'\1: ', got2, re.MULTILINE)
return any(doctest.OutputChecker.check_output(self, w, g, optionflags)
for w, g in [(want, got), (want2, got2)])
Yuya Nishihara
doctest: drop hack to run py2/3 tests selectively...
r34425 def testmod(name, optionflags=0, testtarget=None):
Mads Kiilerich
tests: make doctest test runner less verbose
r20047 __import__(name)
mod = sys.modules[name]
if testtarget is not None:
mod = getattr(mod, testtarget)
Yuya Nishihara
doctest: normalize b'', u'' and exception output on Python 3...
r34142
# minimal copy of doctest.testmod()
finder = doctest.DocTestFinder()
checker = None
if ispy3:
checker = py3docchecker()
runner = doctest.DocTestRunner(checker=checker, optionflags=optionflags)
for test in finder.find(mod, name):
runner.run(test)
runner.summarize()
Sune Foldager
ui: add configint function and tests
r14171
Augie Fackler
changegroup: introduce cg3, which has support for exchanging treemanifests...
r27432 testmod('mercurial.changegroup')
Mads Kiilerich
tests: make doctest test runner less verbose
r20047 testmod('mercurial.changelog')
Yuya Nishihara
cmdutil: expand filename format string by templater (BC)...
r36528 testmod('mercurial.cmdutil')
Yuya Nishihara
color: insert color code after every "\e[0m" (issue5413)...
r31518 testmod('mercurial.color')
Jun Wu
ui: move configlist parser to config.py...
r31481 testmod('mercurial.config')
Siddharth Agarwal
annotate: add core algorithm to skip a rev...
r32485 testmod('mercurial.context')
Yuya Nishihara
py3: iterate bytes as a byte string in dagparser.py
r34209 testmod('mercurial.dagparser', optionflags=doctest.NORMALIZE_WHITESPACE)
Mads Kiilerich
tests: make doctest test runner less verbose
r20047 testmod('mercurial.dispatch')
Yuya Nishihara
py3: use 'surrogatepass' error handler to process U+DCxx transparently...
r34215 testmod('mercurial.encoding')
Yuya Nishihara
fancyopts: add early-options parser compatible with getopt()...
r35179 testmod('mercurial.fancyopts')
Yuya Nishihara
py3: convert system strings to bytes in doctest of formatter.py
r34257 testmod('mercurial.formatter')
Yuya Nishihara
clone: add doctest for default destination
r20799 testmod('mercurial.hg')
Yuya Nishihara
py3: remove use of str() in hgwebdir...
r34354 testmod('mercurial.hgweb.hgwebdir_mod')
Mads Kiilerich
tests: make doctest test runner less verbose
r20047 testmod('mercurial.match')
Denis Laxalde
mdiff: add a hunkinrange helper function...
r31808 testmod('mercurial.mdiff')
Mads Kiilerich
tests: make doctest test runner less verbose
r20047 testmod('mercurial.minirst')
Yuya Nishihara
py3: fix doctests in patch.py to be compatible with Python 3...
r34254 testmod('mercurial.patch')
Yuya Nishihara
py3: use bytes os.sep in doctest of pathutil.py
r34255 testmod('mercurial.pathutil')
Yuya Nishihara
parser: add helper to reduce nesting of chained infix operations...
r25306 testmod('mercurial.parser')
Yuya Nishihara
doctest: enable tests by default on Python 3...
r34143 testmod('mercurial.pycompat')
Yuya Nishihara
revset: split language services to revsetlang module (API)...
r31024 testmod('mercurial.revsetlang')
Yuya Nishihara
smartset: move set classes and related functions from revset module (API)...
r30881 testmod('mercurial.smartset')
Yuya Nishihara
py3: iterate bytes as a byte string in store.lowerencode()
r34212 testmod('mercurial.store')
Siddharth Agarwal
subrepo: factor out Git version check to add doctests...
r20840 testmod('mercurial.subrepo')
Mads Kiilerich
tests: make doctest test runner less verbose
r20047 testmod('mercurial.templatefilters')
Yuya Nishihara
templater: introduce one-pass parsing of nested template strings...
r25783 testmod('mercurial.templater')
Yuya Nishihara
py3: convert function name to bytes in ui.configwith()
r34205 testmod('mercurial.ui')
Mads Kiilerich
tests: make doctest test runner less verbose
r20047 testmod('mercurial.url')
Yuya Nishihara
py3: work around bytes/unicode divergence in parsedate()
r34358 testmod('mercurial.util')
Mads Kiilerich
tests: make doctest test runner less verbose
r20047 testmod('mercurial.util', testtarget='platform')
Yuya Nishihara
py3: replace str(None) with literal in convcmd.py
r34355 testmod('hgext.convert.convcmd')
Mads Kiilerich
tests: make doctest test runner less verbose
r20047 testmod('hgext.convert.cvsps')
Mads Kiilerich
convert: readability and test of rpairs function
r20048 testmod('hgext.convert.filemap')
Eugene Baranov
convert: unescape Perforce-escaped special characters in filenames
r25788 testmod('hgext.convert.p4')
Mads Kiilerich
convert: make subversion revsplit more stable when meeting revisions without @...
r20419 testmod('hgext.convert.subversion')
Mads Kiilerich
mq: refactor patchheader header ordering to match export (BC)...
r22546 testmod('hgext.mq')
Augie Fackler
drawdag: add a couple of doctests to help with python3 porting
r34203 # Helper scripts in tests/ that have doctests:
testmod('drawdag')