tests/hgweberror.py
author Raphaël Gomès <rgomes@octobus.net>
Wed, 10 Jul 2019 09:57:28 +0200
changeset 42755 749ef8c31187
parent 40155 0199fb5dde20
child 43076 2372284d9457
permissions -rw-r--r--
rust-dirstate: call rust dirstatemap from Python Since Rust-backed Python classes cannot be used as baseclasses (for rust-cpython anyway), we use composition rather than inheritance. This also allows us to keep the IO operations in the Python side, removing (for now) the need to rewrite VFS in Rust, which would be a heavy undertaking. Differential Revision: https://phab.mercurial-scm.org/D6634
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
74e6de99ce7f tests: use absolute_import in hgweberror.py
Gregory Szorc <gregory.szorc@gmail.com>
parents: 23409
diff changeset
     5
from mercurial.hgweb import (
74e6de99ce7f tests: use absolute_import in hgweberror.py
Gregory Szorc <gregory.szorc@gmail.com>
parents: 23409
diff changeset
     6
    webcommands,
74e6de99ce7f tests: use absolute_import in hgweberror.py
Gregory Szorc <gregory.szorc@gmail.com>
parents: 23409
diff changeset
     7
)
23409
dc4d2cd3aa3e hgweb: send proper HTTP response after uncaught exception
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff changeset
     8
36887
4daa22071d5d hgweb: stop passing req and tmpl into @webcommand functions (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36876
diff changeset
     9
def raiseerror(web):
23409
dc4d2cd3aa3e hgweb: send proper HTTP response after uncaught exception
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff changeset
    10
    '''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
    11
dc4d2cd3aa3e hgweb: send proper HTTP response after uncaught exception
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff changeset
    12
    # Simulate an error after partial response.
40155
0199fb5dde20 py3: byteify hgweberror.py
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36887
diff changeset
    13
    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
    14
        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
    15
        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
    16
        web.res.setbodywillwrite()
97f44b0720e2 hgweb: port archive command to modern response API
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36865
diff changeset
    17
        list(web.res.sendresponse())
97f44b0720e2 hgweb: port archive command to modern response API
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36865
diff changeset
    18
        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
    19
dc4d2cd3aa3e hgweb: send proper HTTP response after uncaught exception
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff changeset
    20
    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
    21
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')