##// END OF EJS Templates
tests: finally fix up test-fuzz-targets.t...
tests: finally fix up test-fuzz-targets.t It's been failing on my workstation for a while, since I have a new enough LLVM that I had the fuzzer goo, but not so new that I actually had FuzzedDataProvider. This is a better solution all around in my opinion. I _believe_ this should let us run these tests on most systems, even those using GCC instead of clang. That said, my one attempt to test this on my macOS laptop failed miserably, and I don't feel like doing more work on this right now. Differential Revision: https://phab.mercurial-scm.org/D7566

File last commit:

r43812:2fe6121c default
r44267:19da643d default
Show More
test-wsgirequest.py
439 lines | 17.6 KiB | text/x-python | PythonLexer
/ tests / test-wsgirequest.py
Gregory Szorc
tests: add test coverage for parsing WSGI requests...
r36912 from __future__ import absolute_import, print_function
import unittest
Augie Fackler
formatting: blacken the codebase...
r43346 from mercurial.hgweb import request as requestmod
from mercurial import error
Gregory Szorc
tests: add test coverage for parsing WSGI requests...
r36912
DEFAULT_ENV = {
Augie Fackler
cleanup: remove pointless r-prefixes on single-quoted strings...
r43906 'REQUEST_METHOD': 'GET',
'SERVER_NAME': 'testserver',
'SERVER_PORT': '80',
'SERVER_PROTOCOL': 'http',
'wsgi.version': (1, 0),
'wsgi.url_scheme': 'http',
'wsgi.input': None,
'wsgi.errors': None,
'wsgi.multithread': False,
'wsgi.multiprocess': True,
'wsgi.run_once': False,
Gregory Szorc
tests: add test coverage for parsing WSGI requests...
r36912 }
Augie Fackler
formatting: blacken the codebase...
r43346
Gregory Szorc
hgweb: remove wsgirequest (API)...
r36928 def parse(env, reponame=None, altbaseurl=None, extra=None):
Gregory Szorc
tests: add test coverage for parsing WSGI requests...
r36912 env = dict(env)
env.update(extra or {})
Augie Fackler
formatting: blacken the codebase...
r43346 return requestmod.parserequestfromenv(
env, reponame=reponame, altbaseurl=altbaseurl
)
Gregory Szorc
tests: add test coverage for parsing WSGI requests...
r36912
class ParseRequestTests(unittest.TestCase):
def testdefault(self):
r = parse(DEFAULT_ENV)
self.assertEqual(r.url, b'http://testserver')
self.assertEqual(r.baseurl, b'http://testserver')
self.assertEqual(r.advertisedurl, b'http://testserver')
self.assertEqual(r.advertisedbaseurl, b'http://testserver')
self.assertEqual(r.urlscheme, b'http')
self.assertEqual(r.method, b'GET')
self.assertIsNone(r.remoteuser)
self.assertIsNone(r.remotehost)
self.assertEqual(r.apppath, b'')
self.assertEqual(r.dispatchparts, [])
Gregory Szorc
hgweb: change how dispatch path is reported...
r36914 self.assertIsNone(r.dispatchpath)
Gregory Szorc
tests: add test coverage for parsing WSGI requests...
r36912 self.assertIsNone(r.reponame)
self.assertEqual(r.querystring, b'')
self.assertEqual(len(r.qsparams), 0)
self.assertEqual(len(r.headers), 0)
def testcustomport(self):
Augie Fackler
cleanup: remove pointless r-prefixes on single-quoted strings...
r43906 r = parse(DEFAULT_ENV, extra={'SERVER_PORT': '8000',})
Gregory Szorc
tests: add test coverage for parsing WSGI requests...
r36912
self.assertEqual(r.url, b'http://testserver:8000')
self.assertEqual(r.baseurl, b'http://testserver:8000')
self.assertEqual(r.advertisedurl, b'http://testserver:8000')
self.assertEqual(r.advertisedbaseurl, b'http://testserver:8000')
Augie Fackler
formatting: blacken the codebase...
r43346 r = parse(
DEFAULT_ENV,
Augie Fackler
cleanup: remove pointless r-prefixes on single-quoted strings...
r43906 extra={'SERVER_PORT': '4000', 'wsgi.url_scheme': 'https',},
Augie Fackler
formatting: blacken the codebase...
r43346 )
Gregory Szorc
tests: add test coverage for parsing WSGI requests...
r36912
self.assertEqual(r.url, b'https://testserver:4000')
self.assertEqual(r.baseurl, b'https://testserver:4000')
self.assertEqual(r.advertisedurl, b'https://testserver:4000')
self.assertEqual(r.advertisedbaseurl, b'https://testserver:4000')
def testhttphost(self):
Augie Fackler
cleanup: remove pointless r-prefixes on single-quoted strings...
r43906 r = parse(DEFAULT_ENV, extra={'HTTP_HOST': 'altserver',})
Gregory Szorc
tests: add test coverage for parsing WSGI requests...
r36912
self.assertEqual(r.url, b'http://altserver')
self.assertEqual(r.baseurl, b'http://altserver')
self.assertEqual(r.advertisedurl, b'http://testserver')
self.assertEqual(r.advertisedbaseurl, b'http://testserver')
def testscriptname(self):
Augie Fackler
cleanup: remove pointless r-prefixes on single-quoted strings...
r43906 r = parse(DEFAULT_ENV, extra={'SCRIPT_NAME': '',})
Gregory Szorc
tests: add test coverage for parsing WSGI requests...
r36912
self.assertEqual(r.url, b'http://testserver')
self.assertEqual(r.baseurl, b'http://testserver')
self.assertEqual(r.advertisedurl, b'http://testserver')
self.assertEqual(r.advertisedbaseurl, b'http://testserver')
self.assertEqual(r.apppath, b'')
self.assertEqual(r.dispatchparts, [])
Gregory Szorc
hgweb: change how dispatch path is reported...
r36914 self.assertIsNone(r.dispatchpath)
Gregory Szorc
tests: add test coverage for parsing WSGI requests...
r36912
Augie Fackler
cleanup: remove pointless r-prefixes on single-quoted strings...
r43906 r = parse(DEFAULT_ENV, extra={'SCRIPT_NAME': '/script',})
Gregory Szorc
tests: add test coverage for parsing WSGI requests...
r36912
self.assertEqual(r.url, b'http://testserver/script')
self.assertEqual(r.baseurl, b'http://testserver')
self.assertEqual(r.advertisedurl, b'http://testserver/script')
self.assertEqual(r.advertisedbaseurl, b'http://testserver')
self.assertEqual(r.apppath, b'/script')
self.assertEqual(r.dispatchparts, [])
Gregory Szorc
hgweb: change how dispatch path is reported...
r36914 self.assertIsNone(r.dispatchpath)
Gregory Szorc
tests: add test coverage for parsing WSGI requests...
r36912
Augie Fackler
cleanup: remove pointless r-prefixes on single-quoted strings...
r43906 r = parse(DEFAULT_ENV, extra={'SCRIPT_NAME': '/multiple words',})
Gregory Szorc
tests: add test coverage for parsing WSGI requests...
r36912
self.assertEqual(r.url, b'http://testserver/multiple%20words')
self.assertEqual(r.baseurl, b'http://testserver')
self.assertEqual(r.advertisedurl, b'http://testserver/multiple%20words')
self.assertEqual(r.advertisedbaseurl, b'http://testserver')
self.assertEqual(r.apppath, b'/multiple words')
self.assertEqual(r.dispatchparts, [])
Gregory Szorc
hgweb: change how dispatch path is reported...
r36914 self.assertIsNone(r.dispatchpath)
Gregory Szorc
tests: add test coverage for parsing WSGI requests...
r36912
def testpathinfo(self):
Augie Fackler
cleanup: remove pointless r-prefixes on single-quoted strings...
r43906 r = parse(DEFAULT_ENV, extra={'PATH_INFO': '',})
Gregory Szorc
tests: add test coverage for parsing WSGI requests...
r36912
self.assertEqual(r.url, b'http://testserver')
self.assertEqual(r.baseurl, b'http://testserver')
self.assertEqual(r.advertisedurl, b'http://testserver')
self.assertEqual(r.advertisedbaseurl, b'http://testserver')
self.assertEqual(r.apppath, b'')
self.assertEqual(r.dispatchparts, [])
self.assertEqual(r.dispatchpath, b'')
Augie Fackler
cleanup: remove pointless r-prefixes on single-quoted strings...
r43906 r = parse(DEFAULT_ENV, extra={'PATH_INFO': '/pathinfo',})
Gregory Szorc
tests: add test coverage for parsing WSGI requests...
r36912
self.assertEqual(r.url, b'http://testserver/pathinfo')
self.assertEqual(r.baseurl, b'http://testserver')
self.assertEqual(r.advertisedurl, b'http://testserver/pathinfo')
self.assertEqual(r.advertisedbaseurl, b'http://testserver')
self.assertEqual(r.apppath, b'')
self.assertEqual(r.dispatchparts, [b'pathinfo'])
self.assertEqual(r.dispatchpath, b'pathinfo')
Augie Fackler
cleanup: remove pointless r-prefixes on single-quoted strings...
r43906 r = parse(DEFAULT_ENV, extra={'PATH_INFO': '/one/two/',})
Gregory Szorc
tests: add test coverage for parsing WSGI requests...
r36912
self.assertEqual(r.url, b'http://testserver/one/two/')
self.assertEqual(r.baseurl, b'http://testserver')
self.assertEqual(r.advertisedurl, b'http://testserver/one/two/')
self.assertEqual(r.advertisedbaseurl, b'http://testserver')
self.assertEqual(r.apppath, b'')
self.assertEqual(r.dispatchparts, [b'one', b'two'])
self.assertEqual(r.dispatchpath, b'one/two')
def testscriptandpathinfo(self):
Augie Fackler
formatting: blacken the codebase...
r43346 r = parse(
DEFAULT_ENV,
Augie Fackler
cleanup: remove pointless r-prefixes on single-quoted strings...
r43906 extra={'SCRIPT_NAME': '/script', 'PATH_INFO': '/pathinfo',},
Augie Fackler
formatting: blacken the codebase...
r43346 )
Gregory Szorc
tests: add test coverage for parsing WSGI requests...
r36912
self.assertEqual(r.url, b'http://testserver/script/pathinfo')
self.assertEqual(r.baseurl, b'http://testserver')
self.assertEqual(r.advertisedurl, b'http://testserver/script/pathinfo')
self.assertEqual(r.advertisedbaseurl, b'http://testserver')
self.assertEqual(r.apppath, b'/script')
self.assertEqual(r.dispatchparts, [b'pathinfo'])
self.assertEqual(r.dispatchpath, b'pathinfo')
Augie Fackler
formatting: blacken the codebase...
r43346 r = parse(
DEFAULT_ENV,
extra={
Augie Fackler
cleanup: remove pointless r-prefixes on single-quoted strings...
r43906 'SCRIPT_NAME': '/script1/script2',
'PATH_INFO': '/path1/path2',
Augie Fackler
formatting: blacken the codebase...
r43346 },
)
Gregory Szorc
tests: add test coverage for parsing WSGI requests...
r36912
Augie Fackler
formatting: blacken the codebase...
r43346 self.assertEqual(
r.url, b'http://testserver/script1/script2/path1/path2'
)
Gregory Szorc
tests: add test coverage for parsing WSGI requests...
r36912 self.assertEqual(r.baseurl, b'http://testserver')
Augie Fackler
formatting: blacken the codebase...
r43346 self.assertEqual(
r.advertisedurl, b'http://testserver/script1/script2/path1/path2'
)
Gregory Szorc
tests: add test coverage for parsing WSGI requests...
r36912 self.assertEqual(r.advertisedbaseurl, b'http://testserver')
self.assertEqual(r.apppath, b'/script1/script2')
self.assertEqual(r.dispatchparts, [b'path1', b'path2'])
self.assertEqual(r.dispatchpath, b'path1/path2')
Augie Fackler
formatting: blacken the codebase...
r43346 r = parse(
DEFAULT_ENV,
extra={
Augie Fackler
cleanup: remove pointless r-prefixes on single-quoted strings...
r43906 'HTTP_HOST': 'hostserver',
'SCRIPT_NAME': '/script',
'PATH_INFO': '/pathinfo',
Augie Fackler
formatting: blacken the codebase...
r43346 },
)
Gregory Szorc
tests: add test coverage for parsing WSGI requests...
r36912
self.assertEqual(r.url, b'http://hostserver/script/pathinfo')
self.assertEqual(r.baseurl, b'http://hostserver')
self.assertEqual(r.advertisedurl, b'http://testserver/script/pathinfo')
self.assertEqual(r.advertisedbaseurl, b'http://testserver')
self.assertEqual(r.apppath, b'/script')
self.assertEqual(r.dispatchparts, [b'pathinfo'])
self.assertEqual(r.dispatchpath, b'pathinfo')
Augie Fackler
cleanup: polyfill assertRaisesRegex so we can avoid assertRaisesRegexp...
r37733 if not getattr(unittest.TestCase, 'assertRaisesRegex', False):
# Python 3.7 deprecates the regex*p* version, but 2.7 lacks
# the regex version.
Augie Fackler
formatting: blacken the codebase...
r43346 assertRaisesRegex = ( # camelcase-required
unittest.TestCase.assertRaisesRegexp
)
Augie Fackler
cleanup: polyfill assertRaisesRegex so we can avoid assertRaisesRegexp...
r37733
Gregory Szorc
tests: add test coverage for parsing WSGI requests...
r36912 def testreponame(self):
Gregory Szorc
hgweb: refactor repository name URL parsing...
r36913 """repository path components get stripped from URL."""
Augie Fackler
formatting: blacken the codebase...
r43346 with self.assertRaisesRegex(
error.ProgrammingError, 'reponame requires PATH_INFO'
):
Gregory Szorc
hgweb: refactor repository name URL parsing...
r36913 parse(DEFAULT_ENV, reponame=b'repo')
Gregory Szorc
tests: add test coverage for parsing WSGI requests...
r36912
Augie Fackler
formatting: blacken the codebase...
r43346 with self.assertRaisesRegex(
error.ProgrammingError, 'PATH_INFO does not begin with repo ' 'name'
):
parse(
DEFAULT_ENV,
reponame=b'repo',
Augie Fackler
cleanup: remove pointless r-prefixes on single-quoted strings...
r43906 extra={'PATH_INFO': '/pathinfo',},
Augie Fackler
formatting: blacken the codebase...
r43346 )
Gregory Szorc
tests: add test coverage for parsing WSGI requests...
r36912
Augie Fackler
formatting: blacken the codebase...
r43346 with self.assertRaisesRegex(
error.ProgrammingError, 'reponame prefix of PATH_INFO'
):
parse(
DEFAULT_ENV,
reponame=b'repo',
Augie Fackler
cleanup: remove pointless r-prefixes on single-quoted strings...
r43906 extra={'PATH_INFO': '/repoextra/path',},
Augie Fackler
formatting: blacken the codebase...
r43346 )
Gregory Szorc
hgweb: refactor repository name URL parsing...
r36913
Augie Fackler
formatting: blacken the codebase...
r43346 r = parse(
DEFAULT_ENV,
reponame=b'repo',
Augie Fackler
cleanup: remove pointless r-prefixes on single-quoted strings...
r43906 extra={'PATH_INFO': '/repo/path1/path2',},
Augie Fackler
formatting: blacken the codebase...
r43346 )
Gregory Szorc
tests: add test coverage for parsing WSGI requests...
r36912
self.assertEqual(r.url, b'http://testserver/repo/path1/path2')
self.assertEqual(r.baseurl, b'http://testserver')
self.assertEqual(r.advertisedurl, b'http://testserver/repo/path1/path2')
self.assertEqual(r.advertisedbaseurl, b'http://testserver')
self.assertEqual(r.apppath, b'/repo')
self.assertEqual(r.dispatchparts, [b'path1', b'path2'])
self.assertEqual(r.dispatchpath, b'path1/path2')
self.assertEqual(r.reponame, b'repo')
Augie Fackler
formatting: blacken the codebase...
r43346 r = parse(
DEFAULT_ENV,
reponame=b'prefix/repo',
Augie Fackler
cleanup: remove pointless r-prefixes on single-quoted strings...
r43906 extra={'PATH_INFO': '/prefix/repo/path1/path2',},
Augie Fackler
formatting: blacken the codebase...
r43346 )
Gregory Szorc
tests: add test coverage for parsing WSGI requests...
r36912
self.assertEqual(r.url, b'http://testserver/prefix/repo/path1/path2')
self.assertEqual(r.baseurl, b'http://testserver')
Augie Fackler
formatting: blacken the codebase...
r43346 self.assertEqual(
r.advertisedurl, b'http://testserver/prefix/repo/path1/path2'
)
Gregory Szorc
tests: add test coverage for parsing WSGI requests...
r36912 self.assertEqual(r.advertisedbaseurl, b'http://testserver')
self.assertEqual(r.apppath, b'/prefix/repo')
self.assertEqual(r.dispatchparts, [b'path1', b'path2'])
self.assertEqual(r.dispatchpath, b'path1/path2')
self.assertEqual(r.reponame, b'prefix/repo')
Gregory Szorc
hgweb: support constructing URLs from an alternate base URL...
r36916 def testaltbaseurl(self):
# Simple hostname remap.
Augie Fackler
tests: migrate test-wsgirequest.py to Python 3...
r37912 r = parse(DEFAULT_ENV, altbaseurl=b'http://altserver')
Gregory Szorc
hgweb: support constructing URLs from an alternate base URL...
r36916
self.assertEqual(r.url, b'http://testserver')
self.assertEqual(r.baseurl, b'http://testserver')
self.assertEqual(r.advertisedurl, b'http://altserver')
self.assertEqual(r.advertisedbaseurl, b'http://altserver')
self.assertEqual(r.urlscheme, b'http')
self.assertEqual(r.apppath, b'')
self.assertEqual(r.dispatchparts, [])
self.assertIsNone(r.dispatchpath)
self.assertIsNone(r.reponame)
# With a custom port.
Augie Fackler
tests: migrate test-wsgirequest.py to Python 3...
r37912 r = parse(DEFAULT_ENV, altbaseurl=b'http://altserver:8000')
Gregory Szorc
hgweb: support constructing URLs from an alternate base URL...
r36916 self.assertEqual(r.url, b'http://testserver')
self.assertEqual(r.baseurl, b'http://testserver')
self.assertEqual(r.advertisedurl, b'http://altserver:8000')
self.assertEqual(r.advertisedbaseurl, b'http://altserver:8000')
self.assertEqual(r.urlscheme, b'http')
self.assertEqual(r.apppath, b'')
self.assertEqual(r.dispatchparts, [])
self.assertIsNone(r.dispatchpath)
self.assertIsNone(r.reponame)
# With a changed protocol.
Augie Fackler
tests: migrate test-wsgirequest.py to Python 3...
r37912 r = parse(DEFAULT_ENV, altbaseurl=b'https://altserver')
Gregory Szorc
hgweb: support constructing URLs from an alternate base URL...
r36916 self.assertEqual(r.url, b'http://testserver')
self.assertEqual(r.baseurl, b'http://testserver')
self.assertEqual(r.advertisedurl, b'https://altserver')
self.assertEqual(r.advertisedbaseurl, b'https://altserver')
# URL scheme is defined as the actual scheme, not advertised.
self.assertEqual(r.urlscheme, b'http')
self.assertEqual(r.apppath, b'')
self.assertEqual(r.dispatchparts, [])
self.assertIsNone(r.dispatchpath)
self.assertIsNone(r.reponame)
# Need to specify explicit port number for proper https:// alt URLs.
Augie Fackler
tests: migrate test-wsgirequest.py to Python 3...
r37912 r = parse(DEFAULT_ENV, altbaseurl=b'https://altserver:443')
Gregory Szorc
hgweb: support constructing URLs from an alternate base URL...
r36916 self.assertEqual(r.url, b'http://testserver')
self.assertEqual(r.baseurl, b'http://testserver')
self.assertEqual(r.advertisedurl, b'https://altserver')
self.assertEqual(r.advertisedbaseurl, b'https://altserver')
self.assertEqual(r.urlscheme, b'http')
self.assertEqual(r.apppath, b'')
self.assertEqual(r.dispatchparts, [])
self.assertIsNone(r.dispatchpath)
self.assertIsNone(r.reponame)
# With only PATH_INFO defined.
Augie Fackler
formatting: blacken the codebase...
r43346 r = parse(
DEFAULT_ENV,
altbaseurl=b'http://altserver',
Augie Fackler
cleanup: remove pointless r-prefixes on single-quoted strings...
r43906 extra={'PATH_INFO': '/path1/path2',},
Augie Fackler
formatting: blacken the codebase...
r43346 )
Gregory Szorc
hgweb: support constructing URLs from an alternate base URL...
r36916 self.assertEqual(r.url, b'http://testserver/path1/path2')
self.assertEqual(r.baseurl, b'http://testserver')
self.assertEqual(r.advertisedurl, b'http://altserver/path1/path2')
self.assertEqual(r.advertisedbaseurl, b'http://altserver')
self.assertEqual(r.urlscheme, b'http')
self.assertEqual(r.apppath, b'')
self.assertEqual(r.dispatchparts, [b'path1', b'path2'])
self.assertEqual(r.dispatchpath, b'path1/path2')
self.assertIsNone(r.reponame)
# Path on alt URL.
Augie Fackler
tests: migrate test-wsgirequest.py to Python 3...
r37912 r = parse(DEFAULT_ENV, altbaseurl=b'http://altserver/altpath')
Gregory Szorc
hgweb: support constructing URLs from an alternate base URL...
r36916 self.assertEqual(r.url, b'http://testserver')
self.assertEqual(r.baseurl, b'http://testserver')
self.assertEqual(r.advertisedurl, b'http://altserver/altpath')
self.assertEqual(r.advertisedbaseurl, b'http://altserver')
self.assertEqual(r.urlscheme, b'http')
self.assertEqual(r.apppath, b'/altpath')
self.assertEqual(r.dispatchparts, [])
self.assertIsNone(r.dispatchpath)
self.assertIsNone(r.reponame)
# With a trailing slash.
Augie Fackler
tests: migrate test-wsgirequest.py to Python 3...
r37912 r = parse(DEFAULT_ENV, altbaseurl=b'http://altserver/altpath/')
Gregory Szorc
hgweb: support constructing URLs from an alternate base URL...
r36916 self.assertEqual(r.url, b'http://testserver')
self.assertEqual(r.baseurl, b'http://testserver')
self.assertEqual(r.advertisedurl, b'http://altserver/altpath/')
self.assertEqual(r.advertisedbaseurl, b'http://altserver')
self.assertEqual(r.urlscheme, b'http')
self.assertEqual(r.apppath, b'/altpath/')
self.assertEqual(r.dispatchparts, [])
self.assertIsNone(r.dispatchpath)
self.assertIsNone(r.reponame)
# PATH_INFO + path on alt URL.
Augie Fackler
formatting: blacken the codebase...
r43346 r = parse(
DEFAULT_ENV,
altbaseurl=b'http://altserver/altpath',
Augie Fackler
cleanup: remove pointless r-prefixes on single-quoted strings...
r43906 extra={'PATH_INFO': '/path1/path2',},
Augie Fackler
formatting: blacken the codebase...
r43346 )
Gregory Szorc
hgweb: support constructing URLs from an alternate base URL...
r36916 self.assertEqual(r.url, b'http://testserver/path1/path2')
self.assertEqual(r.baseurl, b'http://testserver')
Augie Fackler
formatting: blacken the codebase...
r43346 self.assertEqual(
r.advertisedurl, b'http://altserver/altpath/path1/path2'
)
Gregory Szorc
hgweb: support constructing URLs from an alternate base URL...
r36916 self.assertEqual(r.advertisedbaseurl, b'http://altserver')
self.assertEqual(r.urlscheme, b'http')
self.assertEqual(r.apppath, b'/altpath')
self.assertEqual(r.dispatchparts, [b'path1', b'path2'])
self.assertEqual(r.dispatchpath, b'path1/path2')
self.assertIsNone(r.reponame)
# PATH_INFO + path on alt URL with trailing slash.
Augie Fackler
formatting: blacken the codebase...
r43346 r = parse(
DEFAULT_ENV,
altbaseurl=b'http://altserver/altpath/',
Augie Fackler
cleanup: remove pointless r-prefixes on single-quoted strings...
r43906 extra={'PATH_INFO': '/path1/path2',},
Augie Fackler
formatting: blacken the codebase...
r43346 )
Gregory Szorc
hgweb: support constructing URLs from an alternate base URL...
r36916 self.assertEqual(r.url, b'http://testserver/path1/path2')
self.assertEqual(r.baseurl, b'http://testserver')
Augie Fackler
formatting: blacken the codebase...
r43346 self.assertEqual(
r.advertisedurl, b'http://altserver/altpath//path1/path2'
)
Gregory Szorc
hgweb: support constructing URLs from an alternate base URL...
r36916 self.assertEqual(r.advertisedbaseurl, b'http://altserver')
self.assertEqual(r.urlscheme, b'http')
self.assertEqual(r.apppath, b'/altpath/')
self.assertEqual(r.dispatchparts, [b'path1', b'path2'])
self.assertEqual(r.dispatchpath, b'path1/path2')
self.assertIsNone(r.reponame)
# Local SCRIPT_NAME is ignored.
Augie Fackler
formatting: blacken the codebase...
r43346 r = parse(
DEFAULT_ENV,
altbaseurl=b'http://altserver',
Augie Fackler
cleanup: remove pointless r-prefixes on single-quoted strings...
r43906 extra={'SCRIPT_NAME': '/script', 'PATH_INFO': '/path1/path2',},
Augie Fackler
formatting: blacken the codebase...
r43346 )
Gregory Szorc
hgweb: support constructing URLs from an alternate base URL...
r36916 self.assertEqual(r.url, b'http://testserver/script/path1/path2')
self.assertEqual(r.baseurl, b'http://testserver')
self.assertEqual(r.advertisedurl, b'http://altserver/path1/path2')
self.assertEqual(r.advertisedbaseurl, b'http://altserver')
self.assertEqual(r.urlscheme, b'http')
self.assertEqual(r.apppath, b'')
self.assertEqual(r.dispatchparts, [b'path1', b'path2'])
self.assertEqual(r.dispatchpath, b'path1/path2')
self.assertIsNone(r.reponame)
# Use remote's path for script name, app path
Augie Fackler
formatting: blacken the codebase...
r43346 r = parse(
DEFAULT_ENV,
altbaseurl=b'http://altserver/altroot',
Augie Fackler
cleanup: remove pointless r-prefixes on single-quoted strings...
r43906 extra={'SCRIPT_NAME': '/script', 'PATH_INFO': '/path1/path2',},
Augie Fackler
formatting: blacken the codebase...
r43346 )
Gregory Szorc
hgweb: support constructing URLs from an alternate base URL...
r36916 self.assertEqual(r.url, b'http://testserver/script/path1/path2')
self.assertEqual(r.baseurl, b'http://testserver')
Augie Fackler
formatting: blacken the codebase...
r43346 self.assertEqual(
r.advertisedurl, b'http://altserver/altroot/path1/path2'
)
Gregory Szorc
hgweb: support constructing URLs from an alternate base URL...
r36916 self.assertEqual(r.advertisedbaseurl, b'http://altserver')
self.assertEqual(r.urlscheme, b'http')
self.assertEqual(r.apppath, b'/altroot')
self.assertEqual(r.dispatchparts, [b'path1', b'path2'])
self.assertEqual(r.dispatchpath, b'path1/path2')
self.assertIsNone(r.reponame)
# reponame is factored in properly.
Augie Fackler
formatting: blacken the codebase...
r43346 r = parse(
DEFAULT_ENV,
reponame=b'repo',
altbaseurl=b'http://altserver/altroot',
Augie Fackler
cleanup: remove pointless r-prefixes on single-quoted strings...
r43906 extra={'SCRIPT_NAME': '/script', 'PATH_INFO': '/repo/path1/path2',},
Augie Fackler
formatting: blacken the codebase...
r43346 )
Gregory Szorc
hgweb: support constructing URLs from an alternate base URL...
r36916
self.assertEqual(r.url, b'http://testserver/script/repo/path1/path2')
self.assertEqual(r.baseurl, b'http://testserver')
Augie Fackler
formatting: blacken the codebase...
r43346 self.assertEqual(
r.advertisedurl, b'http://altserver/altroot/repo/path1/path2'
)
Gregory Szorc
hgweb: support constructing URLs from an alternate base URL...
r36916 self.assertEqual(r.advertisedbaseurl, b'http://altserver')
self.assertEqual(r.apppath, b'/altroot/repo')
self.assertEqual(r.dispatchparts, [b'path1', b'path2'])
self.assertEqual(r.dispatchpath, b'path1/path2')
self.assertEqual(r.reponame, b'repo')
Augie Fackler
formatting: blacken the codebase...
r43346
Gregory Szorc
tests: add test coverage for parsing WSGI requests...
r36912 if __name__ == '__main__':
import silenttestrunner
Augie Fackler
formatting: blacken the codebase...
r43346
Gregory Szorc
tests: add test coverage for parsing WSGI requests...
r36912 silenttestrunner.main(__name__)