Merge 'develop' into 'feature/encapsulate-queues'
This commit is contained in:
commit
6930e7a9ad
@ -15,6 +15,7 @@ class SettingsProxy(object):
|
||||
self.default = self._get_settings_dict_from_module(
|
||||
default_settings_module)
|
||||
self.local = self._get_local_settings()
|
||||
self.runtime = {}
|
||||
|
||||
def _get_local_settings(self):
|
||||
dotdir = os.path.expanduser(u'~/.mopidy/')
|
||||
@ -37,6 +38,7 @@ class SettingsProxy(object):
|
||||
def current(self):
|
||||
current = copy(self.default)
|
||||
current.update(self.local)
|
||||
current.update(self.runtime)
|
||||
return current
|
||||
|
||||
def __getattr__(self, attr):
|
||||
@ -49,6 +51,12 @@ class SettingsProxy(object):
|
||||
raise SettingsError(u'Setting "%s" is empty.' % attr)
|
||||
return value
|
||||
|
||||
def __setattr__(self, attr, value):
|
||||
if self._is_setting(attr):
|
||||
self.runtime[attr] = value
|
||||
else:
|
||||
super(SettingsProxy, self).__setattr__(attr, value)
|
||||
|
||||
def validate(self):
|
||||
if self.get_errors():
|
||||
logger.error(u'Settings validation errors: %s',
|
||||
|
||||
@ -10,10 +10,6 @@ from tests import SkipTest, data_folder
|
||||
|
||||
class BaseStoredPlaylistsControllerTest(object):
|
||||
def setUp(self):
|
||||
self.original_playlist_folder = settings.LOCAL_PLAYLIST_FOLDER
|
||||
self.original_tag_cache = settings.LOCAL_TAG_CACHE
|
||||
self.original_music_folder = settings.LOCAL_MUSIC_FOLDER
|
||||
|
||||
settings.LOCAL_PLAYLIST_FOLDER = tempfile.mkdtemp()
|
||||
settings.LOCAL_TAG_CACHE = data_folder('library_tag_cache')
|
||||
settings.LOCAL_MUSIC_FOLDER = data_folder('')
|
||||
@ -27,9 +23,7 @@ class BaseStoredPlaylistsControllerTest(object):
|
||||
if os.path.exists(settings.LOCAL_PLAYLIST_FOLDER):
|
||||
shutil.rmtree(settings.LOCAL_PLAYLIST_FOLDER)
|
||||
|
||||
settings.LOCAL_PLAYLIST_FOLDER = self.original_playlist_folder
|
||||
settings.LOCAL_TAG_CACHE = self.original_tag_cache
|
||||
settings.LOCAL_MUSIC_FOLDER = self.original_music_folder
|
||||
settings.runtime.clear()
|
||||
|
||||
def test_create(self):
|
||||
playlist = self.stored.create('test')
|
||||
|
||||
@ -22,10 +22,9 @@ class LocalCurrentPlaylistControllerTest(BaseCurrentPlaylistControllerTest,
|
||||
for i in range(1, 4)]
|
||||
|
||||
def setUp(self):
|
||||
self.original_backends = settings.BACKENDS
|
||||
settings.BACKENDS = ('mopidy.backends.local.LocalBackend',)
|
||||
super(LocalCurrentPlaylistControllerTest, self).setUp()
|
||||
|
||||
def tearDown(self):
|
||||
super(LocalCurrentPlaylistControllerTest, self).tearDown()
|
||||
settings.BACKENDS = settings.original_backends
|
||||
settings.runtime.clear()
|
||||
|
||||
@ -17,16 +17,12 @@ class LocalLibraryControllerTest(BaseLibraryControllerTest, unittest.TestCase):
|
||||
backend_class = LocalBackend
|
||||
|
||||
def setUp(self):
|
||||
self.original_tag_cache = settings.LOCAL_TAG_CACHE
|
||||
self.original_music_folder = settings.LOCAL_MUSIC_FOLDER
|
||||
|
||||
settings.LOCAL_TAG_CACHE = data_folder('library_tag_cache')
|
||||
settings.LOCAL_MUSIC_FOLDER = data_folder('')
|
||||
|
||||
super(LocalLibraryControllerTest, self).setUp()
|
||||
|
||||
def tearDown(self):
|
||||
settings.LOCAL_TAG_CACHE = self.original_tag_cache
|
||||
settings.LOCAL_MUSIC_FOLDER = self.original_music_folder
|
||||
settings.runtime.clear()
|
||||
|
||||
super(LocalLibraryControllerTest, self).tearDown()
|
||||
|
||||
@ -23,7 +23,6 @@ class LocalPlaybackControllerTest(BasePlaybackControllerTest,
|
||||
for i in range(1, 4)]
|
||||
|
||||
def setUp(self):
|
||||
self.original_backends = settings.BACKENDS
|
||||
settings.BACKENDS = ('mopidy.backends.local.LocalBackend',)
|
||||
|
||||
super(LocalPlaybackControllerTest, self).setUp()
|
||||
@ -32,7 +31,7 @@ class LocalPlaybackControllerTest(BasePlaybackControllerTest,
|
||||
|
||||
def tearDown(self):
|
||||
super(LocalPlaybackControllerTest, self).tearDown()
|
||||
settings.BACKENDS = settings.original_backends
|
||||
settings.runtime.clear()
|
||||
|
||||
def add_track(self, path):
|
||||
uri = path_to_uri(data_folder(path))
|
||||
|
||||
@ -17,7 +17,6 @@ from tests import data_folder
|
||||
|
||||
class GStreamerOutputTest(unittest.TestCase):
|
||||
def setUp(self):
|
||||
self.original_backends = settings.BACKENDS
|
||||
settings.BACKENDS = ('mopidy.backends.local.LocalBackend',)
|
||||
self.song_uri = path_to_uri(data_folder('song1.wav'))
|
||||
self.core_queue = multiprocessing.Queue()
|
||||
@ -26,7 +25,7 @@ class GStreamerOutputTest(unittest.TestCase):
|
||||
|
||||
def tearDown(self):
|
||||
self.output.destroy()
|
||||
settings.BACKENDS = settings.original_backends
|
||||
settings.runtime.clear()
|
||||
|
||||
def test_play_uri_existing_file(self):
|
||||
self.assertTrue(self.output.play_uri(self.song_uri))
|
||||
|
||||
@ -1,6 +1,7 @@
|
||||
import unittest
|
||||
|
||||
from mopidy.utils.settings import validate_settings
|
||||
from mopidy import settings as default_settings_module
|
||||
from mopidy.utils.settings import validate_settings, SettingsProxy
|
||||
|
||||
class ValidateSettingsTest(unittest.TestCase):
|
||||
def setUp(self):
|
||||
@ -43,3 +44,24 @@ class ValidateSettingsTest(unittest.TestCase):
|
||||
result = validate_settings(self.defaults,
|
||||
{'FOO': '', 'BAR': ''})
|
||||
self.assertEquals(len(result), 2)
|
||||
|
||||
|
||||
class SettingsProxyTest(unittest.TestCase):
|
||||
def setUp(self):
|
||||
self.settings = SettingsProxy(default_settings_module)
|
||||
|
||||
def test_set_and_get_attr(self):
|
||||
self.settings.TEST = 'test'
|
||||
self.assertEqual(self.settings.TEST, 'test')
|
||||
|
||||
def test_setattr_updates_runtime_settings(self):
|
||||
self.settings.TEST = 'test'
|
||||
self.assert_('TEST' in self.settings.runtime)
|
||||
|
||||
def test_setattr_updates_runtime_with_value(self):
|
||||
self.settings.TEST = 'test'
|
||||
self.assertEqual(self.settings.runtime['TEST'], 'test')
|
||||
|
||||
def test_runtime_value_included_in_current(self):
|
||||
self.settings.TEST = 'test'
|
||||
self.assertEqual(self.settings.current['TEST'], 'test')
|
||||
|
||||
Loading…
Reference in New Issue
Block a user