Print info about request on error

This can help in diagnosing certain issues. For example, if I were
trying to use a "http+unix" URL but I don't have #299, then I'll get the
following:

    [marca@marca-mac2 httpie]$ http http+unix://%2Ftmp%2Fprofilesvc.sock/status/pid

    http: error: ConnectionError: ('Connection aborted.', gaierror(8, 'nodename nor servname provided, or not known'))
    while doing GET request to URL: http://http+unix//%2Ftmp%2Fprofilesvc.sock/status/pid

Having the URL in the error message is super useful here so that I know an
extra `http://` is getting prepended and it's not doing what I expected.
This commit is contained in:
Marc Abramowitz 2015-02-04 10:34:43 -08:00
parent 45784c7260
commit 7f8adad313

View File

@ -183,7 +183,13 @@ def main(args=sys.argv[1:], env=Environment()):
# Network errors vs. bugs, etc. # Network errors vs. bugs, etc.
if traceback: if traceback:
raise raise
error('%s: %s', type(e).__name__, str(e)) msg = str(e)
if hasattr(e, 'request'):
request = e.request
if hasattr(request, 'url'):
msg += ' while doing %s request to URL: %s' % (
request.method, request.url)
error('%s: %s', type(e).__name__, msg)
exit_status = ExitStatus.ERROR exit_status = ExitStatus.ERROR
finally: finally: