summaryrefslogtreecommitdiff
path: root/tests/settings
diff options
context:
space:
mode:
authorJulian Mehne <julian.mehne@posteo.de>2018-01-21 18:16:33 +0100
committerJulian Mehne <julian.mehne@posteo.de>2018-01-21 20:10:09 +0100
commit6f1a8b687dde23458b141c36f3044cf10fa008af (patch)
tree8aa16fbf4199a32f1051ba594c348f33d13131bc /tests/settings
parent459377b1424633bc4f322a6389fcccaa7628e91d (diff)
De-duplicate code with helper function.
Diffstat (limited to 'tests/settings')
-rw-r--r--tests/settings/manager_test.py51
1 files changed, 51 insertions, 0 deletions
diff --git a/tests/settings/manager_test.py b/tests/settings/manager_test.py
index dc5182d3..c056524b 100644
--- a/tests/settings/manager_test.py
+++ b/tests/settings/manager_test.py
@@ -136,6 +136,57 @@ class TestSettingsManager(unittest.TestCase):
manager.get_tagstring_representation(tag)
+class TestSettingsManagerProcessXDG(unittest.TestCase):
+ """ Tests SettingsManager._process_xdg_default """
+ setting_name = 'template_dir'
+ def_relative = 'alot/templates'
+ default = os.path.join('$XDG_CONFIG_HOME', def_relative)
+ xdg_fallback = '~/.config'
+ xdg_config_home = '/foo/bar/.config'
+ default_expanded = default.replace('$XDG_CONFIG_HOME', xdg_fallback)
+
+ def test_no_user_setting_and_env_not_set(self):
+ with mock.patch.dict('os.environ'):
+ if 'XDG_CONFIG_HOME' in os.environ:
+ del os.environ['XDG_CONFIG_HOME']
+ manager = SettingsManager()
+ manager._process_xdg_default(self.setting_name, self.def_relative)
+ 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'):
+ os.environ['XDG_CONFIG_HOME'] = ''
+ manager = SettingsManager()
+ manager._process_xdg_default(self.setting_name, self.def_relative)
+ 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'):
+ os.environ['XDG_CONFIG_HOME'] = self.xdg_config_home
+ manager = SettingsManager()
+ manager._process_xdg_default(self.setting_name, self.def_relative)
+ actual = manager._config.get(self.setting_name)
+ expected = self.default.replace('$XDG_CONFIG_HOME',
+ self.xdg_config_home)
+ self.assertEqual(actual, expected)
+
+ def test_user_setting_and_env_not_empty(self):
+ user_setting = '/path/to/template/dir'
+
+ with mock.patch.dict('os.environ'):
+ os.environ['XDG_CONFIG_HOME'] = self.xdg_config_home
+ with tempfile.NamedTemporaryFile(delete=False) as f:
+ f.write('template_dir = {}'.format(user_setting))
+ self.addCleanup(os.unlink, f.name)
+
+ manager = SettingsManager(alot_rc=f.name)
+ manager._process_xdg_default(self.setting_name, self.def_relative)
+ self.assertEqual(manager._config.get(self.setting_name),
+ os.path.expanduser(user_setting))
+
+
class TestSettingsManagerGetAccountByAddress(utilities.TestCaseClassCleanup):
"""Test the get_account_by_address helper."""