Merge pull request #98 from jodal/feature/91-pprint-settings-list
feature/91-pprint-settings-list
This commit is contained in:
commit
f0f986a425
@ -3,6 +3,7 @@ from __future__ import absolute_import
|
||||
from copy import copy
|
||||
import logging
|
||||
import os
|
||||
from pprint import pformat
|
||||
import sys
|
||||
|
||||
from mopidy import SettingsError
|
||||
@ -140,19 +141,22 @@ def list_settings_optparse_callback(*args):
|
||||
option.
|
||||
"""
|
||||
from mopidy import settings
|
||||
print format_settings_list(settings)
|
||||
sys.exit(0)
|
||||
|
||||
def format_settings_list(settings):
|
||||
errors = settings.get_errors()
|
||||
lines = []
|
||||
for (key, value) in sorted(settings.current.iteritems()):
|
||||
default_value = settings.default.get(key)
|
||||
value = mask_value_if_secret(key, value)
|
||||
lines.append(u'%s:' % key)
|
||||
lines.append(u' Value: %s' % repr(value))
|
||||
masked_value = mask_value_if_secret(key, value)
|
||||
lines.append(u'%s: %s' % (key, indent(pformat(masked_value), places=2)))
|
||||
if value != default_value and default_value is not None:
|
||||
lines.append(u' Default: %s' % repr(default_value))
|
||||
lines.append(u' Default: %s' %
|
||||
indent(pformat(default_value), places=4))
|
||||
if errors.get(key) is not None:
|
||||
lines.append(u' Error: %s' % errors[key])
|
||||
print u'Settings: %s' % indent('\n'.join(lines), places=2)
|
||||
sys.exit(0)
|
||||
return '\n'.join(lines)
|
||||
|
||||
def mask_value_if_secret(key, value):
|
||||
if key.endswith('PASSWORD') and value:
|
||||
|
||||
@ -2,8 +2,8 @@ import os
|
||||
import unittest
|
||||
|
||||
from mopidy import settings as default_settings_module, SettingsError
|
||||
from mopidy.utils.settings import validate_settings, SettingsProxy
|
||||
from mopidy.utils.settings import mask_value_if_secret
|
||||
from mopidy.utils.settings import (format_settings_list, mask_value_if_secret,
|
||||
SettingsProxy, validate_settings)
|
||||
|
||||
class ValidateSettingsTest(unittest.TestCase):
|
||||
def setUp(self):
|
||||
@ -140,3 +140,48 @@ class SettingsProxyTest(unittest.TestCase):
|
||||
self.settings.TEST = './test'
|
||||
actual = self.settings.TEST
|
||||
self.assertEqual(actual, './test')
|
||||
|
||||
|
||||
class FormatSettingListTest(unittest.TestCase):
|
||||
def setUp(self):
|
||||
self.settings = SettingsProxy(default_settings_module)
|
||||
|
||||
def test_contains_the_setting_name(self):
|
||||
self.settings.TEST = u'test'
|
||||
result = format_settings_list(self.settings)
|
||||
self.assert_('TEST:' in result, result)
|
||||
|
||||
def test_repr_of_a_string_value(self):
|
||||
self.settings.TEST = u'test'
|
||||
result = format_settings_list(self.settings)
|
||||
self.assert_("TEST: u'test'" in result, result)
|
||||
|
||||
def test_repr_of_an_int_value(self):
|
||||
self.settings.TEST = 123
|
||||
result = format_settings_list(self.settings)
|
||||
self.assert_("TEST: 123" in result, result)
|
||||
|
||||
def test_repr_of_a_tuple_value(self):
|
||||
self.settings.TEST = (123, u'abc')
|
||||
result = format_settings_list(self.settings)
|
||||
self.assert_("TEST: (123, u'abc')" in result, result)
|
||||
|
||||
def test_passwords_are_masked(self):
|
||||
self.settings.TEST_PASSWORD = u'secret'
|
||||
result = format_settings_list(self.settings)
|
||||
self.assert_("TEST_PASSWORD: u'secret'" not in result, result)
|
||||
self.assert_("TEST_PASSWORD: u'********'" in result, result)
|
||||
|
||||
def test_short_values_are_not_pretty_printed(self):
|
||||
self.settings.FRONTEND = (u'mopidy.frontends.mpd.MpdFrontend',)
|
||||
result = format_settings_list(self.settings)
|
||||
self.assert_("FRONTEND: (u'mopidy.frontends.mpd.MpdFrontend',)" in result,
|
||||
result)
|
||||
|
||||
def test_long_values_are_pretty_printed(self):
|
||||
self.settings.FRONTEND = (u'mopidy.frontends.mpd.MpdFrontend',
|
||||
u'mopidy.frontends.lastfm.LastfmFrontend')
|
||||
result = format_settings_list(self.settings)
|
||||
self.assert_("""FRONTEND:
|
||||
(u'mopidy.frontends.mpd.MpdFrontend',
|
||||
u'mopidy.frontends.lastfm.LastfmFrontend')""" in result, result)
|
||||
|
||||
Loading…
Reference in New Issue
Block a user