Fix SettingsProxy.__getattr__ to support settings that are None or 0.
This commit is contained in:
parent
bf46b73b64
commit
7f4ce3be8a
@ -49,7 +49,7 @@ class SettingsProxy(object):
|
||||
if attr not in self.current:
|
||||
raise SettingsError(u'Setting "%s" is not set.' % attr)
|
||||
value = self.current[attr]
|
||||
if type(value) != bool and not value:
|
||||
if isinstance(value, basestring) and len(value) == 0:
|
||||
raise SettingsError(u'Setting "%s" is empty.' % attr)
|
||||
if attr.endswith('_PATH') or attr.endswith('_FILE'):
|
||||
value = os.path.expanduser(value)
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
import os
|
||||
import unittest
|
||||
|
||||
from mopidy import settings as default_settings_module
|
||||
from mopidy import settings as default_settings_module, SettingsError
|
||||
from mopidy.utils.settings import validate_settings, SettingsProxy
|
||||
|
||||
class ValidateSettingsTest(unittest.TestCase):
|
||||
@ -55,6 +55,33 @@ class SettingsProxyTest(unittest.TestCase):
|
||||
self.settings.TEST = 'test'
|
||||
self.assertEqual(self.settings.TEST, 'test')
|
||||
|
||||
def test_getattr_raises_error_on_missing_setting(self):
|
||||
try:
|
||||
test = self.settings.TEST
|
||||
self.fail(u'Should raise exception')
|
||||
except SettingsError as e:
|
||||
self.assertEqual(u'Setting "TEST" is not set.', e.message)
|
||||
|
||||
def test_getattr_raises_error_on_empty_setting(self):
|
||||
self.settings.TEST = u''
|
||||
try:
|
||||
test = self.settings.TEST
|
||||
self.fail(u'Should raise exception')
|
||||
except SettingsError as e:
|
||||
self.assertEqual(u'Setting "TEST" is empty.', e.message)
|
||||
|
||||
def test_getattr_does_not_raise_error_if_setting_is_false(self):
|
||||
self.settings.TEST = False
|
||||
self.assertEqual(False, self.settings.TEST)
|
||||
|
||||
def test_getattr_does_not_raise_error_if_setting_is_none(self):
|
||||
self.settings.TEST = None
|
||||
self.assertEqual(None, self.settings.TEST)
|
||||
|
||||
def test_getattr_does_not_raise_error_if_setting_is_zero(self):
|
||||
self.settings.TEST = 0
|
||||
self.assertEqual(0, self.settings.TEST)
|
||||
|
||||
def test_setattr_updates_runtime_settings(self):
|
||||
self.settings.TEST = 'test'
|
||||
self.assert_('TEST' in self.settings.runtime)
|
||||
|
||||
Loading…
Reference in New Issue
Block a user