diff --git a/mopidy/config/__init__.py b/mopidy/config/__init__.py index db451cef..885ea3a6 100644 --- a/mopidy/config/__init__.py +++ b/mopidy/config/__init__.py @@ -148,6 +148,11 @@ def _load_file(parser, filename): logger.debug( 'Loading config from %s failed; it does not exist', filename) return + if not os.access(filename, os.R_OK): + logger.warning( + 'Loading config from %s failed; read permission missing', + filename) + return try: logger.info('Loading config from %s', filename) diff --git a/tests/config/test_config.py b/tests/config/test_config.py index b893c5df..8ee91d0d 100644 --- a/tests/config/test_config.py +++ b/tests/config/test_config.py @@ -15,6 +15,18 @@ class LoadConfigTest(unittest.TestCase): def test_load_nothing(self): self.assertEqual({}, config._load([], [], [])) + def test_load_missing_file(self): + file0 = path_to_data_dir('file0.conf') + result = config._load([file0], [], []) + self.assertEqual({}, result) + + @mock.patch('os.access') + def test_load_nonreadable_file(self, access_mock): + access_mock.return_value = False + file1 = path_to_data_dir('file1.conf') + result = config._load([file1], [], []) + self.assertEqual({}, result) + def test_load_single_default(self): default = b'[foo]\nbar = baz' expected = {'foo': {'bar': 'baz'}}