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:
@@ -78,7 +78,7 @@ class Sphinx(object):
|
|||||||
self._extensions = {}
|
self._extensions = {}
|
||||||
self._extension_metadata = {}
|
self._extension_metadata = {}
|
||||||
self._listeners = {}
|
self._listeners = {}
|
||||||
self._setting_up_extension = '?'
|
self._setting_up_extension = ['?']
|
||||||
self.domains = BUILTIN_DOMAINS.copy()
|
self.domains = BUILTIN_DOMAINS.copy()
|
||||||
self.buildername = buildername
|
self.buildername = buildername
|
||||||
self.builderclasses = BUILTIN_BUILDERS.copy()
|
self.builderclasses = BUILTIN_BUILDERS.copy()
|
||||||
@@ -145,7 +145,7 @@ class Sphinx(object):
|
|||||||
self.setup_extension(extension)
|
self.setup_extension(extension)
|
||||||
# the config file itself can be an extension
|
# the config file itself can be an extension
|
||||||
if self.config.setup:
|
if self.config.setup:
|
||||||
self._setting_up_extension = 'conf.py'
|
self._setting_up_extension = ['conf.py']
|
||||||
# py31 doesn't have 'callable' function for below check
|
# py31 doesn't have 'callable' function for below check
|
||||||
if hasattr(self.config.setup, '__call__'):
|
if hasattr(self.config.setup, '__call__'):
|
||||||
self.config.setup(self)
|
self.config.setup(self)
|
||||||
@@ -428,7 +428,7 @@ class Sphinx(object):
|
|||||||
self.debug('[app] setting up extension: %r', extension)
|
self.debug('[app] setting up extension: %r', extension)
|
||||||
if extension in self._extensions:
|
if extension in self._extensions:
|
||||||
return
|
return
|
||||||
self._setting_up_extension = extension
|
self._setting_up_extension.append(extension)
|
||||||
try:
|
try:
|
||||||
mod = __import__(extension, None, None, ['setup'])
|
mod = __import__(extension, None, None, ['setup'])
|
||||||
except ImportError as err:
|
except ImportError as err:
|
||||||
@@ -463,7 +463,7 @@ class Sphinx(object):
|
|||||||
ext_meta = {'version': 'unknown version'}
|
ext_meta = {'version': 'unknown version'}
|
||||||
self._extensions[extension] = mod
|
self._extensions[extension] = mod
|
||||||
self._extension_metadata[extension] = ext_meta
|
self._extension_metadata[extension] = ext_meta
|
||||||
self._setting_up_extension = '?'
|
self._setting_up_extension.pop()
|
||||||
|
|
||||||
def require_sphinx(self, version):
|
def require_sphinx(self, version):
|
||||||
# check the Sphinx version if requested
|
# check the Sphinx version if requested
|
||||||
@@ -554,7 +554,8 @@ class Sphinx(object):
|
|||||||
|
|
||||||
def add_node(self, node, **kwds):
|
def add_node(self, node, **kwds):
|
||||||
self.debug('[app] adding node: %r', (node, kwds))
|
self.debug('[app] adding node: %r', (node, kwds))
|
||||||
if hasattr(nodes.GenericNodeVisitor, 'visit_' + node.__name__):
|
if not kwds.pop('override', False) and \
|
||||||
|
hasattr(nodes.GenericNodeVisitor, 'visit_' + node.__name__):
|
||||||
self.warn('while setting up extension %s: node class %r is '
|
self.warn('while setting up extension %s: node class %r is '
|
||||||
'already registered, its visitors will be overridden' %
|
'already registered, its visitors will be overridden' %
|
||||||
(self._setting_up_extension, node.__name__))
|
(self._setting_up_extension, node.__name__))
|
||||||
@@ -605,7 +606,7 @@ class Sphinx(object):
|
|||||||
if name in directives._directives:
|
if name in directives._directives:
|
||||||
self.warn('while setting up extension %s: directive %r is '
|
self.warn('while setting up extension %s: directive %r is '
|
||||||
'already registered, it will be overridden' %
|
'already registered, it will be overridden' %
|
||||||
(self._setting_up_extension, name))
|
(self._setting_up_extension[-1], name))
|
||||||
directives.register_directive(
|
directives.register_directive(
|
||||||
name, self._directive_helper(obj, content, arguments, **options))
|
name, self._directive_helper(obj, content, arguments, **options))
|
||||||
|
|
||||||
@@ -614,7 +615,7 @@ class Sphinx(object):
|
|||||||
if name in roles._roles:
|
if name in roles._roles:
|
||||||
self.warn('while setting up extension %s: role %r is '
|
self.warn('while setting up extension %s: role %r is '
|
||||||
'already registered, it will be overridden' %
|
'already registered, it will be overridden' %
|
||||||
(self._setting_up_extension, name))
|
(self._setting_up_extension[-1], name))
|
||||||
roles.register_local_role(name, role)
|
roles.register_local_role(name, role)
|
||||||
|
|
||||||
def add_generic_role(self, name, nodeclass):
|
def add_generic_role(self, name, nodeclass):
|
||||||
@@ -624,7 +625,7 @@ class Sphinx(object):
|
|||||||
if name in roles._roles:
|
if name in roles._roles:
|
||||||
self.warn('while setting up extension %s: role %r is '
|
self.warn('while setting up extension %s: role %r is '
|
||||||
'already registered, it will be overridden' %
|
'already registered, it will be overridden' %
|
||||||
(self._setting_up_extension, name))
|
(self._setting_up_extension[-1], name))
|
||||||
role = roles.GenericRole(name, nodeclass)
|
role = roles.GenericRole(name, nodeclass)
|
||||||
roles.register_local_role(name, role)
|
roles.register_local_role(name, role)
|
||||||
|
|
||||||
|
|||||||
@@ -192,7 +192,7 @@ def number_equations(app, doctree, docname):
|
|||||||
|
|
||||||
|
|
||||||
def setup_math(app, htmlinlinevisitors, htmldisplayvisitors):
|
def setup_math(app, htmlinlinevisitors, htmldisplayvisitors):
|
||||||
app.add_node(math,
|
app.add_node(math, override=True,
|
||||||
latex=(latex_visit_math, None),
|
latex=(latex_visit_math, None),
|
||||||
text=(text_visit_math, None),
|
text=(text_visit_math, None),
|
||||||
man=(man_visit_math, None),
|
man=(man_visit_math, None),
|
||||||
|
|||||||
@@ -153,12 +153,8 @@ if PY2:
|
|||||||
def test_gen_check_types():
|
def test_gen_check_types():
|
||||||
for key, value, should, deftype in TYPECHECK_OVERRIDES:
|
for key, value, should, deftype in TYPECHECK_OVERRIDES:
|
||||||
warning = StringIO()
|
warning = StringIO()
|
||||||
try:
|
app = TestApp(confoverrides={key: value}, warning=warning)
|
||||||
app = TestApp(confoverrides={key: value}, warning=warning)
|
app.cleanup()
|
||||||
except:
|
|
||||||
pass
|
|
||||||
else:
|
|
||||||
app.cleanup()
|
|
||||||
|
|
||||||
real = type(value).__name__
|
real = type(value).__name__
|
||||||
msg = ("WARNING: the config value %r has type `%s',"
|
msg = ("WARNING: the config value %r has type `%s',"
|
||||||
|
|||||||
@@ -17,6 +17,9 @@ from six import StringIO
|
|||||||
|
|
||||||
from nose import tools, SkipTest
|
from nose import tools, SkipTest
|
||||||
|
|
||||||
|
from docutils import nodes
|
||||||
|
from docutils.parsers.rst import directives, roles
|
||||||
|
|
||||||
from sphinx import application
|
from sphinx import application
|
||||||
from sphinx.builders.latex import LaTeXBuilder
|
from sphinx.builders.latex import LaTeXBuilder
|
||||||
from sphinx.theming import Theme
|
from sphinx.theming import Theme
|
||||||
@@ -195,10 +198,19 @@ class TestApp(application.Sphinx):
|
|||||||
warningiserror = False
|
warningiserror = False
|
||||||
|
|
||||||
self._saved_path = sys.path[:]
|
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,
|
self._saved_nodeclasses = set(v for v in dir(nodes.GenericNodeVisitor)
|
||||||
buildername, confoverrides, status, warning,
|
if v.startswith('visit_'))
|
||||||
freshenv, warningiserror, tags)
|
|
||||||
|
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):
|
def cleanup(self, doctrees=False):
|
||||||
Theme.themes.clear()
|
Theme.themes.clear()
|
||||||
@@ -207,6 +219,13 @@ class TestApp(application.Sphinx):
|
|||||||
LaTeXBuilder.usepackages = []
|
LaTeXBuilder.usepackages = []
|
||||||
sys.path[:] = self._saved_path
|
sys.path[:] = self._saved_path
|
||||||
sys.modules.pop('autodoc_fodder', None)
|
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):
|
def __repr__(self):
|
||||||
return '<%s buildername=%r>' % (self.__class__.__name__, self.builder.name)
|
return '<%s buildername=%r>' % (self.__class__.__name__, self.builder.name)
|
||||||
|
|||||||
Reference in New Issue
Block a user