+ @patch('sima.utils.config.makedirs')
+ @patch('sima.utils.config.chmod')
+ @patch('sima.utils.config.ConfMan.control_facc')
+ def test_MPD_env_var(self, *args):
+ host = 'example.org'
+ passwd = 's2cr34!'
+ port = '6601'
+ os.environ.pop('MPD_HOST', None)
+ os.environ.pop('MPD_PORT', None)
+ # Test defaults
+ conf = ConfMan({})
+ self.assertEqual(dict(conf.config['MPD']),
+ {'host': 'localhost', 'port': '6600'})
+ # Test provided env. var.
+ os.environ['MPD_HOST'] = host
+ conf = ConfMan({})
+ self.assertEqual(dict(conf.config['MPD']),
+ {'host': host, 'port': '6600'})
+ os.environ['MPD_HOST'] = f'{passwd}@{host}'
+ conf = ConfMan({})
+ self.assertEqual(dict(conf.config['MPD']),
+ {'host': host,
+ 'password': passwd,
+ 'port': '6600'})
+ # Test abstract unix socket support with password
+ os.environ['MPD_HOST'] = f'{passwd}@@/{host}'
+ conf = ConfMan({})
+ self.assertEqual(dict(conf.config['MPD']),
+ {'host': f'@/{host}',
+ 'password': passwd,
+ 'port': '6600'})
+ # Test abstract unix socket support only
+ os.environ['MPD_HOST'] = f'@/{host}'
+ conf = ConfMan({})
+ self.assertEqual(dict(conf.config['MPD']),
+ {'host': f'@/{host}',
+ 'port': '6600'})
+ # Test port
+ os.environ['MPD_PORT'] = f'{port}'
+ conf = ConfMan({})
+ self.assertEqual(conf.config['MPD']['port'], port)
+
+ @patch('sima.utils.config.makedirs')
+ @patch('sima.utils.config.chmod')
+ @patch('sima.utils.config.ConfMan.control_facc')
+ def test_config_origin_priority(self, *args):
+ # cli provided host overrides env. var.
+ os.environ['MPD_HOST'] = 'baz.foo'
+ conf = ConfMan({'host': 'cli.host'})
+ self.assertEqual(conf.config['MPD']['host'], 'cli.host')
+ # cli provided abstract socket overrides env. var.
+ conf = ConfMan({'host': '@/abstract'})
+ self.assertEqual(conf.config['MPD']['host'], '@/abstract')
+ # cli provided passord and abstract socket overrides env. var.
+ conf = ConfMan({'host': 'pass!@@/abstract'})
+ self.assertEqual(conf.config['MPD']['host'], '@/abstract')
+ self.assertEqual(conf.config['MPD']['password'], 'pass!')
+