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:
|
if attr not in self.current:
|
||||||
raise SettingsError(u'Setting "%s" is not set.' % attr)
|
raise SettingsError(u'Setting "%s" is not set.' % attr)
|
||||||
value = self.current[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)
|
raise SettingsError(u'Setting "%s" is empty.' % attr)
|
||||||
if attr.endswith('_PATH') or attr.endswith('_FILE'):
|
if attr.endswith('_PATH') or attr.endswith('_FILE'):
|
||||||
value = os.path.expanduser(value)
|
value = os.path.expanduser(value)
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
import os
|
import os
|
||||||
import unittest
|
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
|
from mopidy.utils.settings import validate_settings, SettingsProxy
|
||||||
|
|
||||||
class ValidateSettingsTest(unittest.TestCase):
|
class ValidateSettingsTest(unittest.TestCase):
|
||||||
@ -55,6 +55,33 @@ class SettingsProxyTest(unittest.TestCase):
|
|||||||
self.settings.TEST = 'test'
|
self.settings.TEST = 'test'
|
||||||
self.assertEqual(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):
|
def test_setattr_updates_runtime_settings(self):
|
||||||
self.settings.TEST = 'test'
|
self.settings.TEST = 'test'
|
||||||
self.assert_('TEST' in self.settings.runtime)
|
self.assert_('TEST' in self.settings.runtime)
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user