Note: This is a public test instance of Red Hat Bugzilla. The data contained within is a snapshot of the live data so any changes you make will not be reflected in the production Bugzilla. Email is disabled so feel free to test any aspect of the site that you want. File any problems you find or give feedback at bugzilla.redhat.com.
Bug 1690793 - python-sphinxcontrib-websupport FTBFS - test failures (Sphinx 2.0.0)
Summary: python-sphinxcontrib-websupport FTBFS - test failures (Sphinx 2.0.0)
Keywords:
Status: CLOSED RAWHIDE
Alias: None
Product: Fedora
Classification: Fedora
Component: python-sphinxcontrib-websupport
Version: rawhide
Hardware: Unspecified
OS: Unspecified
unspecified
low
Target Milestone: ---
Assignee: Miro Hrončok
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard:
Depends On: 1691429
Blocks: SPHINX2 PYTHON38
TreeView+ depends on / blocked
 
Reported: 2019-03-20 09:28 UTC by Miro Hrončok
Modified: 2019-03-28 00:09 UTC (History)
3 users (show)

Fixed In Version: python-sphinxcontrib-websupport-1.1.1~dev20190321-1.fc31
Doc Type: If docs needed, set a value
Doc Text:
Clone Of:
Environment:
Last Closed: 2019-03-28 00:09:03 UTC
Type: Bug
Embargoed:


Attachments (Terms of Use)


Links
System ID Private Priority Status Summary Last Updated
Github sphinx-doc sphinx issues 6190 0 None None None 2019-03-21 08:50:33 UTC
Github sphinx-doc sphinxcontrib-websupport pull 28 0 None None None 2019-03-21 08:50:33 UTC

Description Miro Hrončok 2019-03-20 09:28:52 UTC
python-sphinxcontrib-websupport 1.1.0 fails the tests with import errors on sphinx.websupport.

upstream master fixes the issue (changes sphinxcontrib.websupport), but the entire test suite fails.

this is a problem for the 3.8 bootstrap. yet not a big one, as sphinx no onger requires sphinxcontrib-websupport.

Here (before Sphinx 2.0.0, with 1:1.8.4-1.fc30): https://src.fedoraproject.org/rpms/python-sphinxcontrib-websupport/pull-request/3 the failure was:

============================= test session starts ==============================
platform linux -- Python 3.7.2, pytest-3.9.3, py-1.7.0, pluggy-0.8.1
rootdir: /builddir/build/BUILD/sphinxcontrib-websupport-1.1.0, inifile:
collected 13 items
tests/test_searchadapters.py s.                                          [ 15%]
tests/test_websupport.py .F.FFFFFFF.                                     [100%]
=================================== FAILURES ===================================
__________________________________ test_build __________________________________
self = <sqlalchemy.engine.base.Connection object at 0xf52cbd0c>
dialect = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xf52b20ac>
constructor = <bound method DefaultExecutionContext._init_compiled of <class 'sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext'>>
statement = 'INSERT INTO sphinx_nodes (id, document, source) VALUES (?, ?, ?)'
parameters = ('9a9b2d1f64be431aa6e9e898878c3954', 'lists', 'description')
args = (<sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0xf4d9b1ec>, [{'document': 'lists', 'id': '9a9b2d1f64be431aa6e9e898878c3954', 'source': 'description'}])
conn = <sqlalchemy.pool.base._ConnectionFairy object at 0xf4d9bc0c>
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xf52cbe2c>
    def _execute_context(
        self, dialect, constructor, statement, parameters, *args
    ):
        """Create an :class:`.ExecutionContext` and execute, returning
        a :class:`.ResultProxy`."""
    
        try:
            try:
                conn = self.__connection
            except AttributeError:
                # escape "except AttributeError" before revalidating
                # to prevent misleading stacktraces in Py3K
                conn = None
            if conn is None:
                conn = self._revalidate_connection()
    
            context = constructor(dialect, self, conn, *args)
        except BaseException as e:
            self._handle_dbapi_exception(
                e, util.text_type(statement), parameters, None, None
            )
    
        if context.compiled:
            context.pre_exec()
    
        cursor, statement, parameters = (
            context.cursor,
            context.statement,
            context.parameters,
        )
    
        if not context.executemany:
            parameters = parameters[0]
    
        if self._has_events or self.engine._has_events:
            for fn in self.dispatch.before_cursor_execute:
                statement, parameters = fn(
                    self,
                    cursor,
                    statement,
                    parameters,
                    context,
                    context.executemany,
                )
    
        if self._echo:
            self.engine.logger.info(statement)
            self.engine.logger.info(
                "%r", sql_util._repr_params(parameters, batches=10)
            )
    
        evt_handled = False
        try:
            if context.executemany:
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_executemany:
                        if fn(cursor, statement, parameters, context):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_executemany(
                        cursor, statement, parameters, context
                    )
            elif not parameters and context.no_parameters:
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute_no_params:
                        if fn(cursor, statement, context):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_execute_no_params(
                        cursor, statement, context
                    )
            else:
                if self.dialect._has_events:
                    for fn in self.dialect.dispatch.do_execute:
                        if fn(cursor, statement, parameters, context):
                            evt_handled = True
                            break
                if not evt_handled:
                    self.dialect.do_execute(
>                       cursor, statement, parameters, context
                    )
/usr/lib/python3.7/site-packages/sqlalchemy/engine/base.py:1244: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xf52b20ac>
cursor = <sqlite3.Cursor object at 0xf51f1820>
statement = 'INSERT INTO sphinx_nodes (id, document, source) VALUES (?, ?, ?)'
parameters = ('9a9b2d1f64be431aa6e9e898878c3954', 'lists', 'description')
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xf52cbe2c>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlite3.IntegrityError: UNIQUE constraint failed: sphinx_nodes.id
/usr/lib/python3.7/site-packages/sqlalchemy/engine/default.py:552: IntegrityError
The above exception was the direct cause of the following exception:
support = <sphinxcontrib.websupport.core.WebSupport object at 0xf53e3d0c>
    @pytest.mark.skipif(sqlalchemy_missing, reason='needs sqlalchemy')
    @with_support()
    def test_build(support):
>       support.build()
tests/test_websupport.py:63: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib/python3.7/site-packages/sphinxcontrib/websupport/core.py:137: in build
    app.build()
/usr/lib/python3.7/site-packages/sphinx/application.py:341: in build
    self.builder.build_update()
/usr/lib/python3.7/site-packages/sphinx/builders/__init__.py:347: in build_update
    len(to_build))
/usr/lib/python3.7/site-packages/sphinx/builders/__init__.py:412: in build
    self.write(docnames, list(updated_docnames), method)
/usr/lib/python3.7/site-packages/sphinx/builders/__init__.py:593: in write
    self._write_serial(sorted(docnames))
/usr/lib/python3.7/site-packages/sphinx/builders/__init__.py:604: in _write_serial
    self.write_doc(docname, doctree)
sphinxcontrib/websupport/builder.py:75: in write_doc
    self.docwriter.write(doctree, destination)
/usr/lib/python3.7/site-packages/docutils/writers/__init__.py:80: in write
    self.translate()
/usr/lib/python3.7/site-packages/sphinx/writers/html.py:58: in translate
    self.document.walkabout(visitor)
/usr/lib/python3.7/site-packages/docutils/nodes.py:174: in walkabout
    if child.walkabout(visitor):
/usr/lib/python3.7/site-packages/docutils/nodes.py:174: in walkabout
    if child.walkabout(visitor):
/usr/lib/python3.7/site-packages/docutils/nodes.py:174: in walkabout
    if child.walkabout(visitor):
/usr/lib/python3.7/site-packages/docutils/nodes.py:174: in walkabout
    if child.walkabout(visitor):
/usr/lib/python3.7/site-packages/docutils/nodes.py:174: in walkabout
    if child.walkabout(visitor):
/usr/lib/python3.7/site-packages/docutils/nodes.py:174: in walkabout
    if child.walkabout(visitor):
/usr/lib/python3.7/site-packages/docutils/nodes.py:166: in walkabout
    visitor.dispatch_visit(self)
sphinxcontrib/websupport/writer.py:27: in dispatch_visit
    self.handle_visit_commentable(node)
sphinxcontrib/websupport/writer.py:34: in handle_visit_commentable
    self.add_db_node(node)
sphinxcontrib/websupport/writer.py:46: in add_db_node
    source=node.rawsource or node.astext())
/usr/lib/python3.7/site-packages/sphinxcontrib/websupport/storage/sqlalchemystorage.py:53: in add_node
    self.build_session.flush()
/usr/lib/python3.7/site-packages/sqlalchemy/orm/session.py:2451: in flush
    self._flush(objects)
/usr/lib/python3.7/site-packages/sqlalchemy/orm/session.py:2589: in _flush
    transaction.rollback(_capture_exception=True)
/usr/lib/python3.7/site-packages/sqlalchemy/util/langhelpers.py:68: in __exit__
    compat.reraise(exc_type, exc_value, exc_tb)
/usr/lib/python3.7/site-packages/sqlalchemy/util/compat.py:129: in reraise
    raise value
/usr/lib/python3.7/site-packages/sqlalchemy/orm/session.py:2549: in _flush
    flush_context.execute()
/usr/lib/python3.7/site-packages/sqlalchemy/orm/unitofwork.py:422: in execute
    rec.execute(self)
/usr/lib/python3.7/site-packages/sqlalchemy/orm/unitofwork.py:589: in execute
    uow,
/usr/lib/python3.7/site-packages/sqlalchemy/orm/persistence.py:245: in save_obj
    insert,
/usr/lib/python3.7/site-packages/sqlalchemy/orm/persistence.py:1066: in _emit_insert_statements
    c = cached_connections[connection].execute(statement, multiparams)
/usr/lib/python3.7/site-packages/sqlalchemy/engine/base.py:988: in execute
    return meth(self, multiparams, params)
/usr/lib/python3.7/site-packages/sqlalchemy/sql/elements.py:287: in _execute_on_connection
    return connection._execute_clauseelement(self, multiparams, params)
/usr/lib/python3.7/site-packages/sqlalchemy/engine/base.py:1107: in _execute_clauseelement
    distilled_params,
/usr/lib/python3.7/site-packages/sqlalchemy/engine/base.py:1248: in _execute_context
    e, statement, parameters, cursor, context
/usr/lib/python3.7/site-packages/sqlalchemy/engine/base.py:1466: in _handle_dbapi_exception
    util.raise_from_cause(sqlalchemy_exception, exc_info)
/usr/lib/python3.7/site-packages/sqlalchemy/util/compat.py:383: in raise_from_cause
    reraise(type(exception), exception, tb=exc_tb, cause=cause)
/usr/lib/python3.7/site-packages/sqlalchemy/util/compat.py:128: in reraise
    raise value.with_traceback(tb)
/usr/lib/python3.7/site-packages/sqlalchemy/engine/base.py:1244: in _execute_context
    cursor, statement, parameters, context
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0xf52b20ac>
cursor = <sqlite3.Cursor object at 0xf51f1820>
statement = 'INSERT INTO sphinx_nodes (id, document, source) VALUES (?, ?, ?)'
parameters = ('9a9b2d1f64be431aa6e9e898878c3954', 'lists', 'description')
context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0xf52cbe2c>
    def do_execute(self, cursor, statement, parameters, context=None):
>       cursor.execute(statement, parameters)
E       sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: sphinx_nodes.id
E       [SQL: INSERT INTO sphinx_nodes (id, document, source) VALUES (?, ?, ?)]
E       [parameters: ('9a9b2d1f64be431aa6e9e898878c3954', 'lists', 'description')]
E       (Background on this error at: http://sqlalche.me/e/gkpj)
/usr/lib/python3.7/site-packages/sqlalchemy/engine/default.py:552: IntegrityError
----------------------------- Captured stdout call -----------------------------
Running Sphinx v1.8.4[39;49;00m
building [mo]: [39;49;00mtargets for 0 po files that are out of date
building [websupport][39;49;00m: targets for 16 source files that are out of date
updating environment: [39;49;00m16 added, 0 changed, 0 removed
reading sources... [39;49;00m[  6%] autodoc[39;49;00m                                              
reading sources... [39;49;00m[ 12%] bom[39;49;00m                                                  
reading sources... [39;49;00m[ 18%] contents[39;49;00m                                             
reading sources... [39;49;00m[ 25%] extapi[39;49;00m                                               
reading sources... [39;49;00m[ 31%] extensions[39;49;00m                                           
reading sources... [39;49;00m[ 37%] footnote[39;49;00m                                             
reading sources... [39;49;00m[ 43%] images[39;49;00m                                               
reading sources... [39;49;00m[ 50%] includes[39;49;00m                                             
reading sources... [39;49;00m[ 56%] lists[39;49;00m                                                
reading sources... [39;49;00m[ 62%] markup[39;49;00m                                               
reading sources... [39;49;00m[ 68%] math[39;49;00m                                                 
reading sources... [39;49;00m[ 75%] metadata[39;49;00m                                             
reading sources... [39;49;00m[ 81%] objects[39;49;00m                                              
reading sources... [39;49;00m[ 87%] otherext[39;49;00m                                             
reading sources... [39;49;00m[ 93%] subdir/images[39;49;00m                                        
reading sources... [39;49;00m[100%] subdir/includes[39;49;00m                                      
looking for now-outdated files... [39;49;00mnone found
pickling environment... [39;49;00mdone
checking consistency... [39;49;00mdone
preparing documents... [39;49;00mdone
writing output... [39;49;00m[  6%] autodoc[39;49;00m                                               
writing output... [39;49;00m[ 12%] bom[39;49;00m                                                   
writing output... [39;49;00m[ 18%] contents[39;49;00m                                              
writing output... [39;49;00m[ 25%] extapi[39;49;00m                                                
writing output... [39;49;00m[ 31%] extensions[39;49;00m                                            
writing output... [39;49;00m[ 37%] footnote[39;49;00m                                              
writing output... [39;49;00m[ 43%] images[39;49;00m                                                
writing output... [39;49;00m[ 50%] includes[39;49;00m                                              
writing output... [39;49;00m[ 56%] lists[39;49;00m                                                 
----------------------------- Captured stderr call -----------------------------
WARNING: while setting up extension sphinx.domains.changeset: directive 'deprecated' is already registered, it will be overridden[39;49;00m
WARNING: while setting up extension sphinx.domains.changeset: directive 'versionadded' is already registered, it will be overridden[39;49;00m
WARNING: while setting up extension sphinx.domains.changeset: directive 'versionchanged' is already registered, it will be overridden[39;49;00m
WARNING: while setting up extension sphinx.domains.math: role 'eq' is already registered, it will be overridden[39;49;00m
WARNING: while setting up extension sphinx.ext.autodoc: directive 'automodule' is already registered, it will be overridden[39;49;00m
WARNING: while setting up extension sphinx.ext.autodoc: directive 'autoclass' is already registered, it will be overridden[39;49;00m
WARNING: while setting up extension sphinx.ext.autodoc: directive 'autoexception' is already registered, it will be overridden[39;49;00m
WARNING: while setting up extension sphinx.ext.autodoc: directive 'autodata' is already registered, it will be overridden[39;49;00m
WARNING: while setting up extension sphinx.ext.autodoc: directive 'autofunction' is already registered, it will be overridden[39;49;00m
WARNING: while setting up extension sphinx.ext.autodoc: directive 'automethod' is already registered, it will be overridden[39;49;00m
WARNING: while setting up extension sphinx.ext.autodoc: directive 'autoattribute' is already registered, it will be overridden[39;49;00m
WARNING: while setting up extension sphinx.ext.autodoc: directive 'autoinstanceattribute' is already registered, it will be overridden[39;49;00m
WARNING: while setting up extension sphinx.ext.todo: node class 'todolist' is already registered, its visitors will be overridden[39;49;00m
WARNING: while setting up extension sphinx.ext.todo: node class 'todo_node' is already registered, its visitors will be overridden[39;49;00m
WARNING: while setting up extension sphinx.ext.todo: directive 'todo' is already registered, it will be overridden[39;49;00m
WARNING: while setting up extension sphinx.ext.todo: directive 'todolist' is already registered, it will be overridden[39;49;00m
WARNING: while setting up extension conf.py: directive 'funcdir' is already registered, it will be overridden[39;49;00m
WARNING: while setting up extension conf.py: directive 'clsdir' is already registered, it will be overridden[39;49;00m
WARNING: while setting up extension conf.py: role 'issue' is already registered, it will be overridden[39;49;00m
WARNING: while setting up extension conf.py: role 'pyurl' is already registered, it will be overridden[39;49;00m
WARNING: autodoc: failed to import module 'test_autodoc'; the following exception was raised:
No module named 'test_autodoc'[39;49;00m
WARNING: autodoc: failed to import function 'function' from module 'util'; the following exception was raised:
Traceback (most recent call last):
  File "/usr/lib/python3.7/site-packages/sphinx/util/inspect.py", line 225, in safe_getattr
    return getattr(obj, name, *defargs)
AttributeError: module 'util' has no attribute 'function'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
  File "/usr/lib/python3.7/site-packages/sphinx/ext/autodoc/importer.py", line 193, in import_object
    obj = attrgetter(obj, attrname)
  File "/usr/lib/python3.7/site-packages/sphinx/ext/autodoc/__init__.py", line 290, in get_attr
    return autodoc_attrgetter(self.env.app, obj, name, *defargs)
  File "/usr/lib/python3.7/site-packages/sphinx/ext/autodoc/__init__.py", line 1562, in autodoc_attrgetter
    return safe_getattr(obj, name, *defargs)
  File "/usr/lib/python3.7/site-packages/sphinx/util/inspect.py", line 241, in safe_getattr
    raise AttributeError(name)
AttributeError: function
[39;49;00m
WARNING: autodoc: failed to import class 'Class' from module 'util'; the following exception was raised:
Traceback (most recent call last):
  File "/usr/lib/python3.7/site-packages/sphinx/util/inspect.py", line 225, in safe_getattr
    return getattr(obj, name, *defargs)
AttributeError: module 'util' has no attribute 'Class'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
  File "/usr/lib/python3.7/site-packages/sphinx/ext/autodoc/importer.py", line 193, in import_object
    obj = attrgetter(obj, attrname)
  File "/usr/lib/python3.7/site-packages/sphinx/ext/autodoc/__init__.py", line 290, in get_attr
    return autodoc_attrgetter(self.env.app, obj, name, *defargs)
  File "/usr/lib/python3.7/site-packages/sphinx/ext/autodoc/__init__.py", line 1562, in autodoc_attrgetter
    return safe_getattr(obj, name, *defargs)
  File "/usr/lib/python3.7/site-packages/sphinx/util/inspect.py", line 241, in safe_getattr
    raise AttributeError(name)
AttributeError: Class
[39;49;00m
WARNING: autodoc: failed to import class 'Outer' from module 'util'; the following exception was raised:
Traceback (most recent call last):
  File "/usr/lib/python3.7/site-packages/sphinx/util/inspect.py", line 225, in safe_getattr
    return getattr(obj, name, *defargs)
AttributeError: module 'util' has no attribute 'Outer'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
  File "/usr/lib/python3.7/site-packages/sphinx/ext/autodoc/importer.py", line 193, in import_object
    obj = attrgetter(obj, attrname)
  File "/usr/lib/python3.7/site-packages/sphinx/ext/autodoc/__init__.py", line 290, in get_attr
    return autodoc_attrgetter(self.env.app, obj, name, *defargs)
  File "/usr/lib/python3.7/site-packages/sphinx/ext/autodoc/__init__.py", line 1562, in autodoc_attrgetter
    return safe_getattr(obj, name, *defargs)
  File "/usr/lib/python3.7/site-packages/sphinx/util/inspect.py", line 241, in safe_getattr
    raise AttributeError(name)
AttributeError: Outer
[39;49;00m
WARNING: autodoc: failed to import attribute 'Class.docattr' from module 'util'; the following exception was raised:
Traceback (most recent call last):
  File "/usr/lib/python3.7/site-packages/sphinx/util/inspect.py", line 225, in safe_getattr
    return getattr(obj, name, *defargs)
AttributeError: module 'util' has no attribute 'Class'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
  File "/usr/lib/python3.7/site-packages/sphinx/ext/autodoc/importer.py", line 193, in import_object
    obj = attrgetter(obj, attrname)
  File "/usr/lib/python3.7/site-packages/sphinx/ext/autodoc/__init__.py", line 290, in get_attr
    return autodoc_attrgetter(self.env.app, obj, name, *defargs)
  File "/usr/lib/python3.7/site-packages/sphinx/ext/autodoc/__init__.py", line 1562, in autodoc_attrgetter
    return safe_getattr(obj, name, *defargs)
  File "/usr/lib/python3.7/site-packages/sphinx/util/inspect.py", line 241, in safe_getattr
    raise AttributeError(name)
AttributeError: Class
[39;49;00m
WARNING: autodoc: failed to import exception 'CustomEx' from module 'util'; the following exception was raised:
Traceback (most recent call last):
  File "/usr/lib/python3.7/site-packages/sphinx/util/inspect.py", line 225, in safe_getattr
    return getattr(obj, name, *defargs)
AttributeError: module 'util' has no attribute 'CustomEx'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
  File "/usr/lib/python3.7/site-packages/sphinx/ext/autodoc/importer.py", line 193, in import_object
    obj = attrgetter(obj, attrname)
  File "/usr/lib/python3.7/site-packages/sphinx/ext/autodoc/__init__.py", line 290, in get_attr
    return autodoc_attrgetter(self.env.app, obj, name, *defargs)
  File "/usr/lib/python3.7/site-packages/sphinx/ext/autodoc/__init__.py", line 1562, in autodoc_attrgetter
    return safe_getattr(obj, name, *defargs)
  File "/usr/lib/python3.7/site-packages/sphinx/util/inspect.py", line 241, in safe_getattr
    raise AttributeError(name)
AttributeError: CustomEx
[39;49;00m
WARNING: autodoc: failed to import class 'CustomDict' from module 'util'; the following exception was raised:
Traceback (most recent call last):
  File "/usr/lib/python3.7/site-packages/sphinx/util/inspect.py", line 225, in safe_getattr
    return getattr(obj, name, *defargs)
AttributeError: module 'util' has no attribute 'CustomDict'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
  File "/usr/lib/python3.7/site-packages/sphinx/ext/autodoc/importer.py", line 193, in import_object
    obj = attrgetter(obj, attrname)
  File "/usr/lib/python3.7/site-packages/sphinx/ext/autodoc/__init__.py", line 290, in get_attr
    return autodoc_attrgetter(self.env.app, obj, name, *defargs)
  File "/usr/lib/python3.7/site-packages/sphinx/ext/autodoc/__init__.py", line 1562, in autodoc_attrgetter
    return safe_getattr(obj, name, *defargs)
  File "/usr/lib/python3.7/site-packages/sphinx/util/inspect.py", line 241, in safe_getattr
    raise AttributeError(name)
AttributeError: CustomDict
[39;49;00m
/builddir/build/BUILD/sphinxcontrib-websupport-1.1.0/tests/root/autodoc_fodder.py:docstring of autodoc_fodder.MarkupError:2: WARNING: Explicit markup ends without a blank line; unexpected unindent.[39;49;00m
WARNING: autodoc: failed to import class 'InstAttCls' from module 'test_autodoc'; the following exception was raised:
No module named 'test_autodoc'[39;49;00m
WARNING: autodoc: failed to import class 'InstAttCls' from module 'test_autodoc'; the following exception was raised:
No module named 'test_autodoc'[39;49;00m
WARNING: autodoc: failed to import module 'autodoc_missing_imports'; the following exception was raised:
No module named 'missing_package1'[39;49;00m
/builddir/build/BUILD/sphinxcontrib-websupport-1.1.0/tests/root/images.txt:9: WARNING: image file not readable: foo.png[39;49;00m
/builddir/build/BUILD/sphinxcontrib-websupport-1.1.0/tests/root/includes.txt:4: WARNING: download file not readable: /builddir/build/BUILD/sphinxcontrib-websupport-1.1.0/tests/root/nonexisting.png[39;49;00m
/builddir/build/BUILD/sphinxcontrib-websupport-1.1.0/tests/root/contents.txt:10: WARNING: extensions is already assigned section numbers (nested numbered toctree?)[39;49;00m
________________________________ test_comments _________________________________
support = <sphinxcontrib.websupport.core.WebSupport object at 0xf545bf4c>
    @pytest.mark.skipif(sqlalchemy_missing, reason='needs sqlalchemy')
    @with_support()
    def test_comments(support):
        session = Session()
        nodes = session.query(Node).all()
>       first_node = nodes[0]
E       IndexError: list index out of range
tests/test_websupport.py:82: IndexError
__________________________ test_user_delete_comments ___________________________
support = <sphinxcontrib.websupport.core.WebSupport object at 0xf545b4ec>
    @pytest.mark.skipif(sqlalchemy_missing, reason='needs sqlalchemy')
    @with_support()
    def test_user_delete_comments(support):
        def get_comment():
            session = Session()
            node = session.query(Node).first()
            session.close()
            return support.get_data(node.id)['comments'][0]
    
>       comment = get_comment()
tests/test_websupport.py:135: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
    def get_comment():
        session = Session()
        node = session.query(Node).first()
        session.close()
>       return support.get_data(node.id)['comments'][0]
E       AttributeError: 'NoneType' object has no attribute 'id'
tests/test_websupport.py:133: AttributeError
_______________________________ test_moderation ________________________________
support = <sphinxcontrib.websupport.core.WebSupport object at 0xf4fb654c>
    @pytest.mark.skipif(sqlalchemy_missing, reason='needs sqlalchemy')
    @with_support(moderation_callback=moderation_callback)
    def test_moderation(support):
        session = Session()
        nodes = session.query(Node).all()
>       node = nodes[7]
E       IndexError: list index out of range
tests/test_websupport.py:160: IndexError
________________________ test_moderator_delete_comments ________________________
support = <sphinxcontrib.websupport.core.WebSupport object at 0xf783138c>
    @pytest.mark.skipif(sqlalchemy_missing, reason='needs sqlalchemy')
    @with_support()
    def test_moderator_delete_comments(support):
        def get_comment():
            session = Session()
            node = session.query(Node).first()
            session.close()
            return support.get_data(node.id, moderator=True)['comments'][1]
    
>       comment = get_comment()
tests/test_websupport.py:190: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
    def get_comment():
        session = Session()
        node = session.query(Node).first()
        session.close()
>       return support.get_data(node.id, moderator=True)['comments'][1]
E       AttributeError: 'NoneType' object has no attribute 'id'
tests/test_websupport.py:188: AttributeError
_____________________________ test_update_username _____________________________
support = <sphinxcontrib.websupport.core.WebSupport object at 0xf4fafbac>
    @pytest.mark.skipif(sqlalchemy_missing, reason='needs sqlalchemy')
    @with_support()
    def test_update_username(support):
        support.update_username('user_two', 'new_user_two')
        session = Session()
        comments = session.query(Comment).\
            filter(Comment.username == 'user_two').all()
        assert len(comments) == 0
        votes = session.query(CommentVote).\
            filter(CommentVote.username == 'user_two').all()
        assert len(votes) == 0
        comments = session.query(Comment).\
            filter(Comment.username == 'new_user_two').all()
>       assert len(comments) == 1
E       assert 0 == 1
E        +  where 0 = len([])
tests/test_websupport.py:210: AssertionError
________________________________ test_proposals ________________________________
support = <sphinxcontrib.websupport.core.WebSupport object at 0xf514792c>
    @pytest.mark.skipif(sqlalchemy_missing, reason='needs sqlalchemy')
    @with_support()
    def test_proposals(support):
        session = Session()
        node = session.query(Node).first()
    
>       data = support.get_data(node.id)
E       AttributeError: 'NoneType' object has no attribute 'id'
tests/test_websupport.py:222: AttributeError
_________________________________ test_voting __________________________________
support = <sphinxcontrib.websupport.core.WebSupport object at 0xf4e145cc>
    @pytest.mark.skipif(sqlalchemy_missing, reason='needs sqlalchemy')
    @with_support()
    def test_voting(support):
        session = Session()
        nodes = session.query(Node).all()
>       node = nodes[0]
E       IndexError: list index out of range
tests/test_websupport.py:237: IndexError
========== 8 failed, 4 passed, 1 skipped, 75 warnings in 6.24 seconds ==========

Now, with Sphinx 2.0.0, the failure is different and reported to upstream:

https://github.com/sphinx-doc/sphinx/issues/6190

Comment 1 Miro Hrončok 2019-03-21 08:50:33 UTC
Fixed upstream: https://github.com/sphinx-doc/sphinxcontrib-websupport/pull/28


Note You need to log in before you can comment on or make changes to this bug.