Fix SettingsProxy.__getattr__ to support settings that are None or 0.

This commit is contained in:
Stein Magnus Jodal 2011-01-21 16:29:04 +01:00
parent bf46b73b64
commit 7f4ce3be8a
2 changed files with 29 additions and 2 deletions

View File

@ -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)

View File

@ -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)