mirror of
https://github.com/sphinx-doc/sphinx.git
synced 2025-02-25 18:55:22 -06:00
d98e70c13eff followup: only do type conversion of confoverrides if the values are strings and add a test
This commit is contained in:
parent
1356aff6d7
commit
8fdcb803cf
@ -214,8 +214,11 @@ class Config(object):
|
|||||||
self.overrides = overrides
|
self.overrides = overrides
|
||||||
self.values = Config.config_values.copy()
|
self.values = Config.config_values.copy()
|
||||||
config = {}
|
config = {}
|
||||||
if "extensions" in overrides:
|
if 'extensions' in overrides:
|
||||||
config["extensions"] = overrides["extensions"]
|
if isinstance(overrides['extensions'], (str, unicode)):
|
||||||
|
config['extensions'] = overrides.pop('extensions').split(',')
|
||||||
|
else:
|
||||||
|
config['extensions'] = overrides.pop('extensions')
|
||||||
if dirname is not None:
|
if dirname is not None:
|
||||||
config_file = path.join(dirname, filename)
|
config_file = path.join(dirname, filename)
|
||||||
config['__file__'] = config_file
|
config['__file__'] = config_file
|
||||||
@ -259,22 +262,25 @@ class Config(object):
|
|||||||
warn('unknown config value %r in override, ignoring' % valname)
|
warn('unknown config value %r in override, ignoring' % valname)
|
||||||
continue
|
continue
|
||||||
defvalue = self.values[valname][0]
|
defvalue = self.values[valname][0]
|
||||||
if isinstance(defvalue, dict):
|
if isinstance(value, (str, unicode)):
|
||||||
warn('cannot override dictionary config setting %r, '
|
if isinstance(defvalue, dict):
|
||||||
'ignoring (use %r to set individual elements)' %
|
warn('cannot override dictionary config setting %r, '
|
||||||
(valname, valname + '.key=value'))
|
'ignoring (use %r to set individual elements)' %
|
||||||
continue
|
(valname, valname + '.key=value'))
|
||||||
elif isinstance(defvalue, list):
|
continue
|
||||||
config[valname] = value.split(',')
|
elif isinstance(defvalue, list):
|
||||||
elif isinstance(defvalue, (int, long)):
|
config[valname] = value.split(',')
|
||||||
try:
|
elif isinstance(defvalue, (int, long)):
|
||||||
config[valname] = int(value)
|
try:
|
||||||
except ValueError:
|
config[valname] = int(value)
|
||||||
warn('invalid number %r for config value %r, ignoring'
|
except ValueError:
|
||||||
% (value, valname))
|
warn('invalid number %r for config value %r, ignoring'
|
||||||
elif not isinstance(defvalue, (str, unicode)):
|
% (value, valname))
|
||||||
warn('cannot override config setting %r with unsupported type, '
|
elif defvalue is not None and not isinstance(defvalue, (str, unicode)):
|
||||||
'ignoring' % valname)
|
warn('cannot override config setting %r with unsupported type, '
|
||||||
|
'ignoring' % valname)
|
||||||
|
else:
|
||||||
|
config[valname] = value
|
||||||
else:
|
else:
|
||||||
config[valname] = value
|
config[valname] = value
|
||||||
for name in config:
|
for name in config:
|
||||||
|
@ -19,7 +19,8 @@ from sphinx.util.pycompat import b
|
|||||||
|
|
||||||
|
|
||||||
@with_app(confoverrides={'master_doc': 'master', 'nonexisting_value': 'True',
|
@with_app(confoverrides={'master_doc': 'master', 'nonexisting_value': 'True',
|
||||||
'latex_elements.docclass': 'scrartcl'})
|
'latex_elements.docclass': 'scrartcl',
|
||||||
|
'modindex_common_prefix': 'path1,path2'})
|
||||||
def test_core_config(app):
|
def test_core_config(app):
|
||||||
cfg = app.config
|
cfg = app.config
|
||||||
|
|
||||||
@ -31,6 +32,7 @@ def test_core_config(app):
|
|||||||
# overrides
|
# overrides
|
||||||
assert cfg.master_doc == 'master'
|
assert cfg.master_doc == 'master'
|
||||||
assert cfg.latex_elements['docclass'] == 'scrartcl'
|
assert cfg.latex_elements['docclass'] == 'scrartcl'
|
||||||
|
assert cfg.modindex_common_prefix == ['path1', 'path2']
|
||||||
|
|
||||||
# simple default values
|
# simple default values
|
||||||
assert 'locale_dirs' not in cfg.__dict__
|
assert 'locale_dirs' not in cfg.__dict__
|
||||||
@ -92,7 +94,7 @@ def test_errors_warnings(dir):
|
|||||||
write_file(dir / 'conf.py', u'# -*- coding: utf-8\n\n'
|
write_file(dir / 'conf.py', u'# -*- coding: utf-8\n\n'
|
||||||
u'project = u"Jägermeister"\n', 'utf-8')
|
u'project = u"Jägermeister"\n', 'utf-8')
|
||||||
cfg = Config(dir, 'conf.py', {}, None)
|
cfg = Config(dir, 'conf.py', {}, None)
|
||||||
cfg.init_values()
|
cfg.init_values(lambda warning: 1/0)
|
||||||
assert cfg.project == u'Jägermeister'
|
assert cfg.project == u'Jägermeister'
|
||||||
|
|
||||||
# test the warning for bytestrings with non-ascii content
|
# test the warning for bytestrings with non-ascii content
|
||||||
@ -122,5 +124,5 @@ def test_config_eol(tmpdir):
|
|||||||
for eol in ('\n', '\r\n'):
|
for eol in ('\n', '\r\n'):
|
||||||
configfile.write_bytes(b('project = "spam"' + eol))
|
configfile.write_bytes(b('project = "spam"' + eol))
|
||||||
cfg = Config(tmpdir, 'conf.py', {}, None)
|
cfg = Config(tmpdir, 'conf.py', {}, None)
|
||||||
cfg.init_values()
|
cfg.init_values(lambda warning: 1/0)
|
||||||
assert cfg.project == u'spam'
|
assert cfg.project == u'spam'
|
||||||
|
@ -81,7 +81,7 @@ def test_read_inventory_v2():
|
|||||||
'/util/glossary.html#term-a-term'
|
'/util/glossary.html#term-a-term'
|
||||||
|
|
||||||
|
|
||||||
@with_app(confoverrides={'extensions': 'sphinx.ext.intersphinx'})
|
@with_app()
|
||||||
@with_tempdir
|
@with_tempdir
|
||||||
def test_missing_reference(tempdir, app):
|
def test_missing_reference(tempdir, app):
|
||||||
inv_file = tempdir / 'inventory'
|
inv_file = tempdir / 'inventory'
|
||||||
@ -157,7 +157,7 @@ def test_missing_reference(tempdir, app):
|
|||||||
assert contnode[0].astext() == 'py3k:unknown'
|
assert contnode[0].astext() == 'py3k:unknown'
|
||||||
|
|
||||||
|
|
||||||
@with_app(confoverrides={'extensions': 'sphinx.ext.intersphinx'})
|
@with_app()
|
||||||
@with_tempdir
|
@with_tempdir
|
||||||
def test_load_mappings_warnings(tempdir, app):
|
def test_load_mappings_warnings(tempdir, app):
|
||||||
"""
|
"""
|
||||||
|
Loading…
Reference in New Issue
Block a user