diff options
Diffstat (limited to 'docutils')
| -rw-r--r-- | docutils/docutils/frontend.py | 8 | ||||
| -rw-r--r-- | docutils/test/data/config_list_2.txt | 2 | ||||
| -rwxr-xr-x | docutils/test/test_settings.py | 15 |
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 |
