Require at least one frontend and one backend

This commit is contained in:
Stein Magnus Jodal 2012-11-08 14:43:21 +01:00
parent 197447c0cb
commit 49cf1ab8aa
2 changed files with 23 additions and 0 deletions

View File

@ -143,6 +143,11 @@ def validate_settings(defaults, settings):
'SPOTIFY_LIB_CACHE': 'SPOTIFY_CACHE_PATH',
}
list_of_one_or_more = [
'BACKENDS',
'FRONTENDS',
]
for setting, value in settings.iteritems():
if setting in changed:
if changed[setting] is None:
@ -167,6 +172,10 @@ def validate_settings(defaults, settings):
u'Deprecated setting, please set the value via the GStreamer '
u'bin in OUTPUT.')
elif setting in list_of_one_or_more:
if not value:
errors[setting] = u'Must contain at least one value.'
elif setting not in defaults:
errors[setting] = u'Unknown setting.'
suggestion = did_you_mean(setting, defaults)

View File

@ -9,6 +9,8 @@ from tests import unittest
class ValidateSettingsTest(unittest.TestCase):
def setUp(self):
self.defaults = {
'BACKENDS': ['a'],
'FRONTENDS': ['a'],
'MPD_SERVER_HOSTNAME': '::',
'MPD_SERVER_PORT': 6600,
'SPOTIFY_BITRATE': 160,
@ -66,6 +68,18 @@ class ValidateSettingsTest(unittest.TestCase):
'SPOTIFY_USERNAME', None)
self.assertEqual(None, not_secret)
def test_empty_frontends_list_returns_error(self):
result = setting_utils.validate_settings(
self.defaults, {'FRONTENDS': []})
self.assertEqual(
result['FRONTENDS'], u'Must contain at least one value.')
def test_empty_backends_list_returns_error(self):
result = setting_utils.validate_settings(
self.defaults, {'BACKENDS': []})
self.assertEqual(
result['BACKENDS'], u'Must contain at least one value.')
class SettingsProxyTest(unittest.TestCase):
def setUp(self):