From 70fe571b055b9bc44267d06cd9a925197df81955 Mon Sep 17 00:00:00 2001 From: Thomas Adamcik Date: Sun, 31 Oct 2010 20:58:58 +0100 Subject: [PATCH] Add special casing of _PATH settings --- mopidy/utils/settings.py | 3 +++ tests/utils/settings_test.py | 13 +++++++++++++ 2 files changed, 16 insertions(+) diff --git a/mopidy/utils/settings.py b/mopidy/utils/settings.py index ac75cb70..6286c8b9 100644 --- a/mopidy/utils/settings.py +++ b/mopidy/utils/settings.py @@ -51,6 +51,9 @@ class SettingsProxy(object): value = self.current[attr] if type(value) != bool and not value: raise SettingsError(u'Setting "%s" is empty.' % attr) + if attr.endswith('_PATH'): + value = os.path.expanduser(value) + value = os.path.abspath(value) return value def __setattr__(self, attr, value): diff --git a/tests/utils/settings_test.py b/tests/utils/settings_test.py index 0c06ae5c..a8b98647 100644 --- a/tests/utils/settings_test.py +++ b/tests/utils/settings_test.py @@ -1,3 +1,4 @@ +import os import unittest from mopidy import settings as default_settings_module @@ -65,3 +66,15 @@ class SettingsProxyTest(unittest.TestCase): def test_runtime_value_included_in_current(self): self.settings.TEST = 'test' self.assertEqual(self.settings.current['TEST'], 'test') + + def test_value_ending_in_path_is_expanded(self): + self.settings.TEST_PATH = '~/test' + acctual = self.settings.TEST_PATH + expected = os.path.expanduser('~/test') + self.assertEqual(acctual, expected) + + def test_value_ending_in_path_is_absolute(self): + self.settings.TEST_PATH = './test' + acctual = self.settings.TEST_PATH + expected = os.path.abspath('./test') + self.assertEqual(acctual, expected)