tests/hgweberror.py
author Victor Stinner <vstinner@python.org>
Mon, 14 Dec 2020 10:44:29 +0100
changeset 46374 e92ca942ddca
parent 43076 2372284d9457
child 48875 6000f5b25c9b
permissions -rw-r--r--
cext: add Python 3.10 support * Replace "Py_TYPE(obj) = type;" with "Py_SET_TYPE(obj, type);" * Add pythoncapi_compat.h header file to get Py_SET_TYPE() on Python 2.7-3.8. Header file added to mercurial/ and contrib/python-zstandard/zstd/common/. In Python 3.10, Py_TYPE(obj) must not longer be used as an l-value. pythoncapi_compat.h comes from: https://github.com/pythoncapi/pythoncapi_compat Differential Revision: https://phab.mercurial-scm.org/D9825
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
23409
dc4d2cd3aa3e hgweb: send proper HTTP response after uncaught exception
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff changeset
     1
# A dummy extension that installs an hgweb command that throws an Exception.
dc4d2cd3aa3e hgweb: send proper HTTP response after uncaught exception
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff changeset
     2
27299
74e6de99ce7f tests: use absolute_import in hgweberror.py
Gregory Szorc <gregory.szorc@gmail.com>
parents: 23409
diff changeset
     3
from __future__ import absolute_import
74e6de99ce7f tests: use absolute_import in hgweberror.py
Gregory Szorc <gregory.szorc@gmail.com>
parents: 23409
diff changeset
     4
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 40155
diff changeset
     5
from mercurial.hgweb import webcommands
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 40155
diff changeset
     6
23409
dc4d2cd3aa3e hgweb: send proper HTTP response after uncaught exception
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff changeset
     7
36887
4daa22071d5d hgweb: stop passing req and tmpl into @webcommand functions (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36876
diff changeset
     8
def raiseerror(web):
23409
dc4d2cd3aa3e hgweb: send proper HTTP response after uncaught exception
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff changeset
     9
    '''Dummy web command that raises an uncaught Exception.'''
dc4d2cd3aa3e hgweb: send proper HTTP response after uncaught exception
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff changeset
    10
dc4d2cd3aa3e hgweb: send proper HTTP response after uncaught exception
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff changeset
    11
    # Simulate an error after partial response.
40155
0199fb5dde20 py3: byteify hgweberror.py
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36887
diff changeset
    12
    if b'partialresponse' in web.req.qsparams:
36876
97f44b0720e2 hgweb: port archive command to modern response API
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36865
diff changeset
    13
        web.res.status = b'200 Script output follows'
97f44b0720e2 hgweb: port archive command to modern response API
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36865
diff changeset
    14
        web.res.headers[b'Content-Type'] = b'text/plain'
97f44b0720e2 hgweb: port archive command to modern response API
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36865
diff changeset
    15
        web.res.setbodywillwrite()
97f44b0720e2 hgweb: port archive command to modern response API
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36865
diff changeset
    16
        list(web.res.sendresponse())
97f44b0720e2 hgweb: port archive command to modern response API
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36865
diff changeset
    17
        web.res.getbodyfile().write(b'partial content\n')
23409
dc4d2cd3aa3e hgweb: send proper HTTP response after uncaught exception
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff changeset
    18
dc4d2cd3aa3e hgweb: send proper HTTP response after uncaught exception
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff changeset
    19
    raise AttributeError('I am an uncaught error!')
dc4d2cd3aa3e hgweb: send proper HTTP response after uncaught exception
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff changeset
    20
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 40155
diff changeset
    21
23409
dc4d2cd3aa3e hgweb: send proper HTTP response after uncaught exception
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff changeset
    22
def extsetup(ui):
dc4d2cd3aa3e hgweb: send proper HTTP response after uncaught exception
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff changeset
    23
    setattr(webcommands, 'raiseerror', raiseerror)
40155
0199fb5dde20 py3: byteify hgweberror.py
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36887
diff changeset
    24
    webcommands.__all__.append(b'raiseerror')