From acb0e47909be2463b9620e46517cd8db4889135f Mon Sep 17 00:00:00 2001 From: Trygve Aaberge Date: Sat, 21 Jun 2014 17:21:48 +0200 Subject: [PATCH 1/4] mpd: Ignore empty parts in query This is to fix e.g. that an empty string can't be parsed as a date, which may be attempted if the query contains 'Date ""'. --- mopidy/mpd/protocol/music_db.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/mopidy/mpd/protocol/music_db.py b/mopidy/mpd/protocol/music_db.py index 300f95e8..769cc80b 100644 --- a/mopidy/mpd/protocol/music_db.py +++ b/mopidy/mpd/protocol/music_db.py @@ -41,7 +41,9 @@ def _query_from_mpd_search_parameters(parameters, mapping): raise exceptions.MpdArgError('incorrect arguments') if not parameters: raise ValueError - query.setdefault(field, []).append(parameters.pop(0)) + value = parameters.pop(0) + if value: + query.setdefault(field, []).append(value) return query From 0c3e5bd71e80e0280ea27667078da41d5c181ad2 Mon Sep 17 00:00:00 2001 From: Trygve Aaberge Date: Sat, 21 Jun 2014 17:25:41 +0200 Subject: [PATCH 2/4] mpd: Test that empty query parts are ignored --- tests/mpd/protocol/test_music_db.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/tests/mpd/protocol/test_music_db.py b/tests/mpd/protocol/test_music_db.py index 608bbf62..70f393ec 100644 --- a/tests/mpd/protocol/test_music_db.py +++ b/tests/mpd/protocol/test_music_db.py @@ -15,6 +15,11 @@ class QueryFromMpdSearchFormatTest(unittest.TestCase): self.assertEqual(result['date'][0], '1974-01-02') self.assertEqual(result['date'][1], '1975') + def test_empty_value_is_ignored(self): + result = music_db._query_from_mpd_search_parameters( + ['Date', ''], music_db._SEARCH_MAPPING) + self.assertEqual(result, {}) + # TODO Test more mappings From 5393f319232a681ea1172df9b7c9eb9c72d4bf37 Mon Sep 17 00:00:00 2001 From: Trygve Aaberge Date: Sat, 21 Jun 2014 19:13:39 +0200 Subject: [PATCH 3/4] mpd: Ignore parts in query with only whitespace --- mopidy/mpd/protocol/music_db.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mopidy/mpd/protocol/music_db.py b/mopidy/mpd/protocol/music_db.py index 769cc80b..9497cde7 100644 --- a/mopidy/mpd/protocol/music_db.py +++ b/mopidy/mpd/protocol/music_db.py @@ -42,7 +42,7 @@ def _query_from_mpd_search_parameters(parameters, mapping): if not parameters: raise ValueError value = parameters.pop(0) - if value: + if value.strip(): query.setdefault(field, []).append(value) return query From 1ac470c58c4422bad40e24e32539e0d83cd30fe8 Mon Sep 17 00:00:00 2001 From: Trygve Aaberge Date: Sun, 22 Jun 2014 02:13:14 +0200 Subject: [PATCH 4/4] mpd: Test that whitespace query parts are ignored --- tests/mpd/protocol/test_music_db.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/tests/mpd/protocol/test_music_db.py b/tests/mpd/protocol/test_music_db.py index 70f393ec..b19f29c0 100644 --- a/tests/mpd/protocol/test_music_db.py +++ b/tests/mpd/protocol/test_music_db.py @@ -20,6 +20,11 @@ class QueryFromMpdSearchFormatTest(unittest.TestCase): ['Date', ''], music_db._SEARCH_MAPPING) self.assertEqual(result, {}) + def test_whitespace_value_is_ignored(self): + result = music_db._query_from_mpd_search_parameters( + ['Date', ' '], music_db._SEARCH_MAPPING) + self.assertEqual(result, {}) + # TODO Test more mappings