diff options
author | Julian Mehne <julian.mehne@posteo.de> | 2018-01-23 16:52:47 +0100 |
---|---|---|
committer | Julian Mehne <julian.mehne@posteo.de> | 2018-01-23 19:28:22 +0100 |
commit | b0f5e7af96388d3d332ceaf730e55fbe1153cba9 (patch) | |
tree | f0f0307044d03fb260773e00a74f3145aedcf5f0 /tests/settings | |
parent | 0020346778b942b910d83be112ed50f5d3b4af33 (diff) |
Expand environment variables when reading the config file.
Diffstat (limited to 'tests/settings')
-rw-r--r-- | tests/settings/manager_test.py | 30 |
1 files changed, 24 insertions, 6 deletions
diff --git a/tests/settings/manager_test.py b/tests/settings/manager_test.py index bc4a066c..42f944db 100644 --- a/tests/settings/manager_test.py +++ b/tests/settings/manager_test.py @@ -136,8 +136,8 @@ class TestSettingsManager(unittest.TestCase): manager.get_tagstring_representation(tag) -class TestSettingsManagerProcessXDG(unittest.TestCase): - """ Tests SettingsManager._process_xdg_default """ +class TestSettingsManagerExpandEnvironment(unittest.TestCase): + """ Tests SettingsManager._expand_config_values """ setting_name = 'template_dir' xdg_name = 'XDG_CONFIG_HOME' default = '$%s/alot/templates' % xdg_name @@ -150,21 +150,18 @@ class TestSettingsManagerProcessXDG(unittest.TestCase): if self.xdg_name in os.environ: del os.environ[self.xdg_name] manager = SettingsManager() - manager._process_xdg_default(self.setting_name) self.assertEqual(manager._config.get(self.setting_name), os.path.expanduser(self.default_expanded)) def test_no_user_setting_and_env_empty(self): with mock.patch.dict('os.environ', {self.xdg_name: ''}): manager = SettingsManager() - manager._process_xdg_default(self.setting_name) self.assertEqual(manager._config.get(self.setting_name), os.path.expanduser(self.default_expanded)) def test_no_user_setting_and_env_not_empty(self): with mock.patch.dict('os.environ', {self.xdg_name: self.xdg_custom}): manager = SettingsManager() - manager._process_xdg_default(self.setting_name) actual = manager._config.get(self.setting_name) expected = self.default.replace('$%s' % self.xdg_name, self.xdg_custom) @@ -179,10 +176,31 @@ class TestSettingsManagerProcessXDG(unittest.TestCase): self.addCleanup(os.unlink, f.name) manager = SettingsManager(alot_rc=f.name) - manager._process_xdg_default(self.setting_name) self.assertEqual(manager._config.get(self.setting_name), os.path.expanduser(user_setting)) + def test_configobj_and_env_expansion(self): + """ Three expansion styles: + %(FOO)s - expanded by ConfigObj (string interpolation) + $FOO and ${FOO} - should be expanded with environment variable + """ + foo_env = 'foo_set_from_env' + with mock.patch.dict('os.environ', {self.xdg_name: self.xdg_custom, + 'foo': foo_env}): + foo_in_config = 'foo_set_in_config' + with tempfile.NamedTemporaryFile(delete=False) as f: + f.write(textwrap.dedent("""\ + foo = {} + template_dir = ${{XDG_CONFIG_HOME}}/$foo/%(foo)s/${{foo}} + """.format(foo_in_config))) + self.addCleanup(os.unlink, f.name) + + manager = SettingsManager(alot_rc=f.name) + self.assertEqual(manager._config.get(self.setting_name), + os.path.join(self.xdg_custom, foo_env, + foo_in_config, foo_env)) + + class TestSettingsManagerGetAccountByAddress(utilities.TestCaseClassCleanup): """Test the get_account_by_address helper.""" |