summaryrefslogtreecommitdiff
path: root/docutils
diff options
context:
space:
mode:
Diffstat (limited to 'docutils')
-rw-r--r--docutils/docutils/frontend.py8
-rw-r--r--docutils/test/data/config_list_2.txt2
-rwxr-xr-xdocutils/test/test_settings.py15
3 files changed, 18 insertions, 7 deletions
diff --git a/docutils/docutils/frontend.py b/docutils/docutils/frontend.py
index fdfbacde7..1ab644531 100644
--- a/docutils/docutils/frontend.py
+++ b/docutils/docutils/frontend.py
@@ -175,6 +175,8 @@ class Values(optparse.Values):
"""
def update(self, other_dict, option_parser):
+ if isinstance(other_dict, Values):
+ other_dict = other_dict.__dict__
other_dict = other_dict.copy()
for setting in option_parser.lists:
if (hasattr(self, setting) and other_dict.has_key(setting)):
@@ -426,7 +428,7 @@ class OptionParser(optparse.OptionParser, docutils.SettingsSpec):
config_settings = self.get_standard_config_settings()
except ValueError, error:
self.error(error)
- defaults.update(config_settings)
+ defaults.update(config_settings.__dict__)
# Internal settings with no defaults from settings specifications;
# initialize manually:
self.set_defaults(_source=None, _destination=None, **defaults)
@@ -481,9 +483,9 @@ class OptionParser(optparse.OptionParser, docutils.SettingsSpec):
return [os.path.expanduser(f) for f in config_files if f.strip()]
def get_standard_config_settings(self):
- settings = {}
+ settings = Values()
for filename in self.get_standard_config_files():
- settings.update(self.get_config_file_settings(filename))
+ settings.update(self.get_config_file_settings(filename), self)
return settings
def get_config_file_settings(self, config_file):
diff --git a/docutils/test/data/config_list_2.txt b/docutils/test/data/config_list_2.txt
new file mode 100644
index 000000000..6f8d69f07
--- /dev/null
+++ b/docutils/test/data/config_list_2.txt
@@ -0,0 +1,2 @@
+[general]
+expose_internals: f
diff --git a/docutils/test/test_settings.py b/docutils/test/test_settings.py
index d22d10fbc..7357c6463 100755
--- a/docutils/test/test_settings.py
+++ b/docutils/test/test_settings.py
@@ -36,6 +36,7 @@ class ConfigFileTests(unittest.TestCase):
'one': fixpath('data/config_1.txt'),
'two': fixpath('data/config_2.txt'),
'list': fixpath('data/config_list.txt'),
+ 'list2': fixpath('data/config_list_2.txt'),
'error': fixpath('data/config_error_handler.txt')}
settings = {
@@ -56,6 +57,7 @@ class ConfigFileTests(unittest.TestCase):
'two': {'generator': 0,
'stylesheet_path': fixpath('data/test.css')},
'list': {'expose_internals': ['a', 'b', 'c', 'd', 'e']},
+ 'list2': {'expose_internals': ['a', 'b', 'c', 'd', 'e', 'f']},
'error': {'error_encoding': 'ascii',
'error_encoding_error_handler': 'strict'},
}
@@ -68,11 +70,11 @@ class ConfigFileTests(unittest.TestCase):
components=(pep_html.Writer,), read_config_files=None)
def files_settings(self, *names):
- settings = {}
+ settings = frontend.Values()
for name in names:
settings.update(self.option_parser.get_config_file_settings(
- self.config_files[name]))
- return settings
+ self.config_files[name]), self.option_parser)
+ return settings.__dict__
def expected_settings(self, *names):
expected = {}
@@ -117,6 +119,10 @@ class ConfigFileTests(unittest.TestCase):
self.compare_output(self.files_settings('list'),
self.expected_settings('list'))
+ def test_list2(self):
+ self.compare_output(self.files_settings('list', 'list2'),
+ self.expected_settings('list2'))
+
def test_error_handler(self):
self.compare_output(self.files_settings('error'),
self.expected_settings('error'))
@@ -137,7 +143,8 @@ class ConfigEnvVarFileTests(ConfigFileTests):
def files_settings(self, *names):
files = [self.config_files[name] for name in names]
os.environ['DOCUTILSCONFIG'] = os.pathsep.join(files)
- return self.option_parser.get_standard_config_settings()
+ settings = self.option_parser.get_standard_config_settings()
+ return settings.__dict__
def tearDown(self):
os.environ = self.orig_environ