From e4d425d37aed3ab8a1a7c7b3c1428bb7bf4c03a8 Mon Sep 17 00:00:00 2001 From: Thomas Adamcik Date: Sat, 1 Sep 2012 12:28:32 +0200 Subject: [PATCH] Add did you mean tests for settings. - Checks varying degrees of typos until the edit distance becomes to large. - Also updated did you mean to always uppercase it's input so we catch caps errors. --- mopidy/utils/settings.py | 1 + tests/utils/settings_test.py | 24 ++++++++++++++++++++++++ 2 files changed, 25 insertions(+) diff --git a/mopidy/utils/settings.py b/mopidy/utils/settings.py index 34126907..4072f24d 100644 --- a/mopidy/utils/settings.py +++ b/mopidy/utils/settings.py @@ -202,6 +202,7 @@ def did_you_mean(setting, defaults): if not defaults: return None + setting = setting.upper() candidates = [(levenshtein(setting, d), d) for d in defaults] candidates.sort() diff --git a/tests/utils/settings_test.py b/tests/utils/settings_test.py index 1b0c4a2a..7d104969 100644 --- a/tests/utils/settings_test.py +++ b/tests/utils/settings_test.py @@ -217,3 +217,27 @@ class FormatSettingListTest(unittest.TestCase): self.assert_("""FRONTEND: (u'mopidy.frontends.mpd.MpdFrontend', u'mopidy.frontends.lastfm.LastfmFrontend')""" in result, result) + + +class DidYouMeanTest(unittest.TestCase): + def testSuggestoins(self): + defaults = { + 'MPD_SERVER_HOSTNAME': '::', + 'MPD_SERVER_PORT': 6600, + 'SPOTIFY_BITRATE': 160, + } + + suggestion = setting_utils.did_you_mean('spotify_bitrate', defaults) + self.assertEqual(suggestion, 'SPOTIFY_BITRATE') + + suggestion = setting_utils.did_you_mean('SPOTIFY_BITROTE', defaults) + self.assertEqual(suggestion, 'SPOTIFY_BITRATE') + + suggestion = setting_utils.did_you_mean('SPITIFY_BITROT', defaults) + self.assertEqual(suggestion, 'SPOTIFY_BITRATE') + + suggestion = setting_utils.did_you_mean('SPTIFY_BITROT', defaults) + self.assertEqual(suggestion, 'SPOTIFY_BITRATE') + + suggestion = setting_utils.did_you_mean('SPTIFY_BITRO', defaults) + self.assertEqual(suggestion, None)