melexis / sphinx-coverity-extension

Sphinx plugin to generate Coverity defects report or table in reStructuredText documentation. Coverity report is then personally styled while data integrity is guaranteed.
GNU General Public License v3.0
5 stars 2 forks source link

doc build fails when not authorized #13

Closed SteinHeselmans closed 5 years ago

SteinHeselmans commented 5 years ago

Build of my project fails when i don't provide a password. The suds throws an exception which is not caught by the plugin. Just using the plugin in conf.py is enough to trigger this error.

ERROR:suds.client:<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:ns0="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://ws.coverity.com/v9">
   <SOAP-ENV:Header>
      <wsse:Security mustUnderstand="true">
         <wsse:UsernameToken>
            <wsse:Username>teh</wsse:Username>
            <wsse:Password>none</wsse:Password>
         </wsse:UsernameToken>
      </wsse:Security>
   </SOAP-ENV:Header>
   <ns0:Body>
      <ns1:getVersion/>
   </ns0:Body>
</SOAP-ENV:Envelope>

Exception occurred:
  File "/usr/local/lib/python3.6/dist-packages/suds/client.py", line 726, in failed
    raise Exception((status, reason))
Exception: (401, 'Unauthorized')

And the log file:

$ cat /tmp/sphinx-err-478__la2.log
# Sphinx version: 1.8.1
# Python version: 3.6.6+ (CPython)
# Docutils version: 0.14 
# Jinja2 version: 2.10
# Last messages:
#   done
#   
#   preparing documents...
#   
#   done
#   
#   writing output... [  1%] build-infra
#   
#   Login to Coverity server...
#   
# Loaded extensions:
#   sphinx.ext.mathjax (1.8.1) from /usr/local/lib/python3.6/dist-packages/sphinx/ext/mathjax.py
#   alabaster (0.7.11) from /usr/local/lib/python3.6/dist-packages/alabaster/__init__.py
#   sphinx.ext.autodoc (1.8.1) from /usr/local/lib/python3.6/dist-packages/sphinx/ext/autodoc/__init__.py
#   sphinx.ext.doctest (1.8.1) from /usr/local/lib/python3.6/dist-packages/sphinx/ext/doctest.py
#   sphinx.ext.intersphinx (1.8.1) from /usr/local/lib/python3.6/dist-packages/sphinx/ext/intersphinx.py
#   sphinx.ext.todo (1.8.1) from /usr/local/lib/python3.6/dist-packages/sphinx/ext/todo.py
#   sphinx.ext.coverage (1.8.1) from /usr/local/lib/python3.6/dist-packages/sphinx/ext/coverage.py
#   sphinx.ext.ifconfig (1.8.1) from /usr/local/lib/python3.6/dist-packages/sphinx/ext/ifconfig.py
#   mlx.coverity (%(prog)s 0.0.8) from /usr/local/lib/python3.6/dist-packages/mlx/coverity.py
#   sphinx.ext.viewcode (1.8.1) from /usr/local/lib/python3.6/dist-packages/sphinx/ext/viewcode.py
#   sphinx.ext.graphviz (1.8.1) from /usr/local/lib/python3.6/dist-packages/sphinx/ext/graphviz.py
#   sphinxcontrib.plantuml (unknown version) from /usr/local/lib/python3.6/dist-packages/sphinxcontrib/plantuml.py
#   sphinxcontrib.blockdiag (1.5.4) from /usr/local/lib/python3.6/dist-packages/sphinxcontrib/blockdiag.py
#   sphinxcontrib.packetdiag (1.0.4) from /usr/local/lib/python3.6/dist-packages/sphinxcontrib/packetdiag.py
#   sphinxcontrib.doxylink (unknown version) from /usr/local/lib/python3.6/dist-packages/sphinxcontrib/doxylink/__init__.py
#   mlx.traceability (unknown version) from /usr/local/lib/python3.6/dist-packages/mlx/traceability.py
#   sphinxcontrib.wavedrom (unknown version) from /usr/local/lib/python3.6/dist-packages/sphinxcontrib/wavedrom.py
#   sphinx_selective_exclude.eager_only (unknown version) from /usr/local/lib/python3.6/dist-packages/sphinx_selective_exclude/eager_only.py
#   sphinx_selective_exclude.modindex_exclude (unknown version) from /usr/local/lib/python3.6/dist-packages/sphinx_selective_exclude/modindex_exclude.py
#   sphinx_selective_exclude.search_auto_exclude (unknown version) from /usr/local/lib/python3.6/dist-packages/sphinx_selective_exclude/search_auto_exclude.py
#   breathe (4.10.0) from /usr/local/lib/python3.6/dist-packages/breathe/__init__.py
Traceback (most recent call last):
  File "/usr/local/lib/python3.6/dist-packages/suds/transport/http.py", line 78, in send
    fp = self.u2open(u2request)
  File "/usr/local/lib/python3.6/dist-packages/suds/transport/http.py", line 119, in u2open
    return url.open(u2request, timeout=tm)
  File "/usr/lib/python3.6/urllib/request.py", line 532, in open
    response = meth(req, response)
  File "/usr/lib/python3.6/urllib/request.py", line 642, in http_response
    'http', request, response, code, msg, hdrs)
  File "/usr/lib/python3.6/urllib/request.py", line 570, in error
    return self._call_chain(*args)
  File "/usr/lib/python3.6/urllib/request.py", line 504, in _call_chain
    result = func(*args)
  File "/usr/lib/python3.6/urllib/request.py", line 650, in http_error_default
    raise HTTPError(req.full_url, code, msg, hdrs, fp)
urllib.error.HTTPError: HTTP Error 401: Unauthorized

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/local/lib/python3.6/dist-packages/suds/client.py", line 652, in send
    reply = transport.send(request)
  File "/usr/local/lib/python3.6/dist-packages/suds/transport/http.py", line 178, in send
    return HttpTransport.send(self, request)
  File "/usr/local/lib/python3.6/dist-packages/suds/transport/http.py", line 86, in send
    raise TransportError(e.msg, e.code, e.fp)
suds.transport.TransportError: Unauthorized

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/local/lib/python3.6/dist-packages/sphinx/cmd/build.py", line 304, in build_main
    app.build(args.force_all, filenames)
  File "/usr/local/lib/python3.6/dist-packages/sphinx/application.py", line 341, in build
    self.builder.build_update()
  File "/usr/local/lib/python3.6/dist-packages/sphinx/builders/__init__.py", line 347, in build_update
    len(to_build))
  File "/usr/local/lib/python3.6/dist-packages/sphinx/builders/__init__.py", line 412, in build
    self.write(docnames, list(updated_docnames), method)
  File "/usr/local/lib/python3.6/dist-packages/sphinx/builders/__init__.py", line 593, in write
    self._write_serial(sorted(docnames))
  File "/usr/local/lib/python3.6/dist-packages/sphinx/builders/__init__.py", line 601, in _write_serial
    doctree = self.env.get_and_resolve_doctree(docname, self)
  File "/usr/local/lib/python3.6/dist-packages/sphinx/environment/__init__.py", line 627, in get_and_resolve_doctree
    self.apply_post_transforms(doctree, docname)
  File "/usr/local/lib/python3.6/dist-packages/sphinx/environment/__init__.py", line 679, in apply_post_transforms
    self.app.emit('doctree-resolved', doctree, docname)
  File "/usr/local/lib/python3.6/dist-packages/sphinx/application.py", line 510, in emit
    return self.events.emit(event, self, *args)
  File "/usr/local/lib/python3.6/dist-packages/sphinx/events.py", line 80, in emit
    results.append(callback(*args))
  File "/usr/local/lib/python3.6/dist-packages/mlx/coverity.py", line 156, in process_coverity_nodes
    app.config.coverity_credentials['password'])
  File "/usr/local/lib/python3.6/dist-packages/mlx/coverity_services.py", line 163, in login
    version = self.get_version()
  File "/usr/local/lib/python3.6/dist-packages/mlx/coverity_services.py", line 174, in get_version
    return self.client.service.getVersion()
  File "/usr/local/lib/python3.6/dist-packages/suds/client.py", line 559, in __call__
    return client.invoke(args, kwargs)
  File "/usr/local/lib/python3.6/dist-packages/suds/client.py", line 618, in invoke
    result = self.send(soapenv)
  File "/usr/local/lib/python3.6/dist-packages/suds/client.py", line 664, in send
    result = self.failed(binding, e)
  File "/usr/local/lib/python3.6/dist-packages/suds/client.py", line 726, in failed
    raise Exception((status, reason))
Exception: (401, 'Unauthorized')
SteinHeselmans commented 5 years ago

confirmed to work in 0.0.9