##// 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:

r33097:fce4ed29 default
r36916:219b2335 default
Show More
test-bad-extension.t
101 lines | 3.4 KiB | text/troff | Tads3Lexer
/ tests / test-bad-extension.t
Bryan O'Sullivan
atexit: test failing handlers
r31957 ensure that failing ui.atexit handlers report sensibly
$ cat > $TESTTMP/bailatexit.py <<EOF
> from mercurial import util
> def bail():
> raise RuntimeError('ui.atexit handler exception')
>
> def extsetup(ui):
> ui.atexit(bail)
> EOF
$ hg -q --config extensions.bailatexit=$TESTTMP/bailatexit.py \
> help help
hg help [-ecks] [TOPIC]
show help for a given topic or a help overview
error in exit handlers:
Traceback (most recent call last):
File "*/mercurial/dispatch.py", line *, in _runexithandlers (glob)
func(*args, **kwargs)
File "$TESTTMP/bailatexit.py", line *, in bail (glob)
raise RuntimeError('ui.atexit handler exception')
RuntimeError: ui.atexit handler exception
[255]
$ rm $TESTTMP/bailatexit.py
another bad extension
Martin Geisler
tests: unify test-bad-extension
r11858 $ echo 'raise Exception("bit bucket overflow")' > badext.py
Simon Farnsworth
tests: confirm that a badly documented extension doesn't cause a crash...
r28083 $ abspathexc=`pwd`/badext.py
$ cat >baddocext.py <<EOF
> """
> baddocext is bad
> """
> EOF
$ abspathdoc=`pwd`/baddocext.py
Martin Geisler
tests: unify test-bad-extension
r11858
Yuya Nishihara
tests: write hgrc of more than two lines by using shell heredoc...
r23172 $ cat <<EOF >> $HGRCPATH
> [extensions]
> gpg =
> hgext.gpg =
Simon Farnsworth
tests: confirm that a badly documented extension doesn't cause a crash...
r28083 > badext = $abspathexc
> baddocext = $abspathdoc
Yuya Nishihara
tests: write hgrc of more than two lines by using shell heredoc...
r23172 > badext2 =
> EOF
Martin Geisler
tests: unify test-bad-extension
r11858
timeless@mozdev.org
test-bad-extension: reduce dependencies on other things...
r26239 $ hg -q help help 2>&1 |grep extension
Mads Kiilerich
tests: remove redundant globs...
r12640 *** failed to import extension badext from $TESTTMP/badext.py: bit bucket overflow
Brodie Rao
tests: require regexes in unified tests to be marked with " (re)"...
r12375 *** failed to import extension badext2: No module named badext2
Yuya Nishihara
extensions: show traceback on load failure if --traceback flag is set...
r25364
show traceback
timeless@mozdev.org
test-bad-extension: reduce dependencies on other things...
r26239 $ hg -q help help --traceback 2>&1 | egrep ' extension|^Exception|Traceback|ImportError'
Yuya Nishihara
extensions: show traceback on load failure if --traceback flag is set...
r25364 *** failed to import extension badext from $TESTTMP/badext.py: bit bucket overflow
Traceback (most recent call last):
Exception: bit bucket overflow
*** failed to import extension badext2: No module named badext2
Traceback (most recent call last):
ImportError: No module named badext2
Jun Wu
extensions: add notloaded method to return extensions failed to load...
r28155 names of extensions failed to load can be accessed via extensions.notloaded()
$ cat <<EOF > showbadexts.py
Yuya Nishihara
registrar: move cmdutil.command to registrar module (API)...
r32337 > from mercurial import commands, extensions, registrar
Jun Wu
extensions: add notloaded method to return extensions failed to load...
r28155 > cmdtable = {}
Yuya Nishihara
registrar: move cmdutil.command to registrar module (API)...
r32337 > command = registrar.command(cmdtable)
Pulkit Goyal
py3: make sure commands name are bytes in tests
r33097 > @command(b'showbadexts', norepo=True)
Jun Wu
extensions: add notloaded method to return extensions failed to load...
r28155 > def showbadexts(ui, *pats, **opts):
Danek Duvall
tests: Solaris grep doesn't add a trailing newline when it's missing...
r28338 > ui.write('BADEXTS: %s\n' % ' '.join(sorted(extensions.notloaded())))
Jun Wu
extensions: add notloaded method to return extensions failed to load...
r28155 > EOF
$ hg --config extensions.badexts=showbadexts.py showbadexts 2>&1 | grep '^BADEXTS'
BADEXTS: badext badext2
Yuya Nishihara
extensions: show traceback on load failure if --traceback flag is set...
r25364 show traceback for ImportError of hgext.name if debug is set
(note that --debug option isn't applied yet when loading extensions)
timeless@mozdev.org
test-bad-extension: reduce dependencies on other things...
r26239 $ (hg -q help help --traceback --config ui.debug=True 2>&1) \
> | grep -v '^ ' \
> | egrep 'extension..[^p]|^Exception|Traceback|ImportError|not import'
Yuya Nishihara
extensions: show traceback on load failure if --traceback flag is set...
r25364 *** failed to import extension badext from $TESTTMP/badext.py: bit bucket overflow
Traceback (most recent call last):
Exception: bit bucket overflow
Pierre-Yves David
extensions: fix a debug message when searching for extensions...
r30027 could not import hgext.badext2 (No module named *badext2): trying hgext3rd.badext2 (glob)
Yuya Nishihara
extensions: show traceback on load failure if --traceback flag is set...
r25364 Traceback (most recent call last):
Bryan O'Sullivan
test-bad-extension: account for PyPy/CPython error difference
r27538 ImportError: No module named *badext2 (glob)
Maciej Fijalkowski
pypy: fix overspecific test checks...
r28737 could not import hgext3rd.badext2 (No module named *badext2): trying badext2 (glob)
Pierre-Yves David
extensions: also search for extension in the 'hgext3rd' package...
r28541 Traceback (most recent call last):
Maciej Fijalkowski
pypy: fix overspecific test checks...
r28737 ImportError: No module named *badext2 (glob)
Yuya Nishihara
extensions: show traceback on load failure if --traceback flag is set...
r25364 *** failed to import extension badext2: No module named badext2
Traceback (most recent call last):
ImportError: No module named badext2
Simon Farnsworth
tests: confirm that a badly documented extension doesn't cause a crash...
r28083
confirm that there's no crash when an extension's documentation is bad
$ hg help --keyword baddocext
*** failed to import extension badext from $TESTTMP/badext.py: bit bucket overflow
*** failed to import extension badext2: No module named badext2
Topics:
extensions Using Additional Features