From 3f1192e95be03a226a65aa3a30a42ed34e155909 Mon Sep 17 00:00:00 2001 From: alzeih Date: Fri, 2 Aug 2013 13:38:52 +1200 Subject: [PATCH] Match MPD implementation and add tests --- mopidy/frontends/mpd/dispatcher.py | 2 +- tests/frontends/mpd/dispatcher_test.py | 30 +++++++++++++++++++++++++- 2 files changed, 30 insertions(+), 2 deletions(-) diff --git a/mopidy/frontends/mpd/dispatcher.py b/mopidy/frontends/mpd/dispatcher.py index 00e5747a..52504440 100644 --- a/mopidy/frontends/mpd/dispatcher.py +++ b/mopidy/frontends/mpd/dispatcher.py @@ -237,7 +237,7 @@ class MpdContext(object): subscriptions = None #regex for invalid characters in playlist names - _invalid_playlist_chars = re.compile(r'[\n\r\\/]') + _invalid_playlist_chars = re.compile(r'[\n\r/]') def __init__(self, dispatcher, session=None, config=None, core=None): self.dispatcher = dispatcher diff --git a/tests/frontends/mpd/dispatcher_test.py b/tests/frontends/mpd/dispatcher_test.py index 9ef88e44..1543b64f 100644 --- a/tests/frontends/mpd/dispatcher_test.py +++ b/tests/frontends/mpd/dispatcher_test.py @@ -6,7 +6,7 @@ import pykka from mopidy import core from mopidy.backends import dummy -from mopidy.frontends.mpd.dispatcher import MpdDispatcher +from mopidy.frontends.mpd.dispatcher import MpdDispatcher, MpdContext from mopidy.frontends.mpd.exceptions import MpdAckError from mopidy.frontends.mpd.protocol import request_handlers, handle_request @@ -63,3 +63,31 @@ class MpdDispatcherTest(unittest.TestCase): result = self.dispatcher.handle_request('known request') self.assertIn('OK', result) self.assertIn(expected, result) + + +class MpdContextTest(unittest.TestCase): + def setUp(self): + config = { + 'mpd': { + 'password': None, + } + } + self.backend = dummy.create_dummy_backend_proxy() + self.core = core.Core.start(backends=[self.backend]).proxy() + self.dispatcher = MpdDispatcher(config=config) + self.context = self.dispatcher.context + + def tearDown(self): + pykka.ActorRegistry.stop_all() + + def test_context_create_unique_name_replaces_newlines_with_space(self): + result = self.context.create_unique_name("playlist name\n") + self.assertEqual("playlist name ", result) + + def test_context_create_unique_name_replaces_carriage_returns_with_space(self): + result = self.context.create_unique_name("playlist name\r") + self.assertEqual("playlist name ", result) + + def test_context_create_unique_name_replaces_forward_slashes_with_space(self): + result = self.context.create_unique_name("playlist name/") + self.assertEqual("playlist name ", result)