mirror of
https://github.com/sphinx-doc/sphinx.git
synced 2025-02-25 18:55:22 -06:00
fixup test suite for already-registered warnings
This commit is contained in:
@@ -17,6 +17,9 @@ from six import StringIO
|
||||
|
||||
from nose import tools, SkipTest
|
||||
|
||||
from docutils import nodes
|
||||
from docutils.parsers.rst import directives, roles
|
||||
|
||||
from sphinx import application
|
||||
from sphinx.builders.latex import LaTeXBuilder
|
||||
from sphinx.theming import Theme
|
||||
@@ -195,10 +198,19 @@ class TestApp(application.Sphinx):
|
||||
warningiserror = False
|
||||
|
||||
self._saved_path = sys.path[:]
|
||||
self._saved_directives = directives._directives.copy()
|
||||
self._saved_roles = roles._roles.copy()
|
||||
|
||||
application.Sphinx.__init__(self, srcdir, confdir, outdir, doctreedir,
|
||||
buildername, confoverrides, status, warning,
|
||||
freshenv, warningiserror, tags)
|
||||
self._saved_nodeclasses = set(v for v in dir(nodes.GenericNodeVisitor)
|
||||
if v.startswith('visit_'))
|
||||
|
||||
try:
|
||||
application.Sphinx.__init__(self, srcdir, confdir, outdir, doctreedir,
|
||||
buildername, confoverrides, status, warning,
|
||||
freshenv, warningiserror, tags)
|
||||
except:
|
||||
self.cleanup()
|
||||
raise
|
||||
|
||||
def cleanup(self, doctrees=False):
|
||||
Theme.themes.clear()
|
||||
@@ -207,6 +219,13 @@ class TestApp(application.Sphinx):
|
||||
LaTeXBuilder.usepackages = []
|
||||
sys.path[:] = self._saved_path
|
||||
sys.modules.pop('autodoc_fodder', None)
|
||||
directives._directives = self._saved_directives
|
||||
roles._roles = self._saved_roles
|
||||
for method in dir(nodes.GenericNodeVisitor):
|
||||
if method.startswith('visit_') and \
|
||||
method not in self._saved_nodeclasses:
|
||||
delattr(nodes.GenericNodeVisitor, 'visit_' + method[6:])
|
||||
delattr(nodes.GenericNodeVisitor, 'depart_' + method[6:])
|
||||
|
||||
def __repr__(self):
|
||||
return '<%s buildername=%r>' % (self.__class__.__name__, self.builder.name)
|
||||
|
||||
Reference in New Issue
Block a user