X-Git-Url: http://git.kaliko.me/?p=python-musicpd.git;a=blobdiff_plain;f=test.py;h=70ac203ccdfdcd69696bbe9607b9fb2283937a54;hp=3da30bbed90d44dfdf8902007fb1871b19efe55c;hb=c45cc084b0543af12fe815f6dee14303eac20e2a;hpb=0ef97395765f66ec3dc4ec67f813d156fea885f8 diff --git a/test.py b/test.py index 3da30bb..70ac203 100755 --- a/test.py +++ b/test.py @@ -351,6 +351,16 @@ class TestMPDClient(unittest.TestCase): self.assertMPDReceived('stats\n') self.assertIsInstance(stats, dict) + output = ['outputid: 0\n', + 'outputname: default detected output\n', + 'plugin: sndio\n', + 'outputenabled: 1\n'] + self.MPDWillReturn(*output, 'OK\n') + outputs = self.client.outputs() + self.assertMPDReceived('outputs\n') + self.assertIsInstance(outputs, list) + self.assertEqual([{'outputid': '0', 'outputname': 'default detected output', 'plugin': 'sndio', 'outputenabled': '1'}], outputs) + def test_fetch_songs(self): self.MPDWillReturn('file: my-song.ogg\n', 'Pos: 0\n', 'Id: 66\n', 'OK\n') playlist = self.client.playlistinfo() @@ -416,8 +426,6 @@ class TestMPDClient(unittest.TestCase): self.assertRaises(musicpd.CommandError, self.client.noidle) def test_client_to_client(self): - # client to client is at this time in beta! - self.MPDWillReturn('OK\n') self.assertIsNone(self.client.subscribe("monty")) self.assertMPDReceived('subscribe "monty"\n') @@ -522,6 +530,12 @@ class TestMPDClient(unittest.TestCase): res = self.client.albumart('muse/Raised Fist/2002-Dedication/', 0) self.assertEqual(res.get('data'), data) + def test_reading_binary(self): + # readpicture when there are no picture returns empty object + self.MPDWillReturnBinary([b'OK\n']) + res = self.client.readpicture('muse/Raised Fist/2002-Dedication/', 0) + self.assertEqual(res, {}) + def test_command_list(self): self.MPDWillReturn('updating_db: 42\n', f'{musicpd.NEXT}\n', @@ -537,6 +551,56 @@ class TestMPDClient(unittest.TestCase): self.client.command_list_end() self.assertMPDReceived('command_list_end\n') + def test_two_word_commands(self): + self.MPDWillReturn('OK\n') + self.client.tagtypes_clear() + self.assertMPDReceived('tagtypes clear\n') + self.MPDWillReturn('OK\n') + with self.assertRaises(AttributeError): + self.client.foo_bar() + +class testConnection(unittest.TestCase): + + def test_exposing_fileno(self): + with mock.patch('musicpd.socket') as socket_mock: + sock = mock.MagicMock(name='socket') + socket_mock.socket.return_value = sock + cli = musicpd.MPDClient() + cli.connect() + cli.fileno() + cli._sock.fileno.assert_called_with() + + def test_connect_abstract(self): + os.environ['MPD_HOST'] = '@abstract' + with mock.patch('musicpd.socket') as socket_mock: + sock = mock.MagicMock(name='socket') + socket_mock.socket.return_value = sock + cli = musicpd.MPDClient() + cli.connect() + sock.connect.assert_called_with('\0abstract') + + def test_connect_unix(self): + os.environ['MPD_HOST'] = '/run/mpd/socket' + with mock.patch('musicpd.socket') as socket_mock: + sock = mock.MagicMock(name='socket') + socket_mock.socket.return_value = sock + cli = musicpd.MPDClient() + cli.connect() + sock.connect.assert_called_with('/run/mpd/socket') + + +class testException(unittest.TestCase): + + def test_CommandError_on_newline(self): + os.environ['MPD_HOST'] = '/run/mpd/socket' + with mock.patch('musicpd.socket') as socket_mock: + sock = mock.MagicMock(name='socket') + socket_mock.socket.return_value = sock + cli = musicpd.MPDClient() + cli.connect() + with self.assertRaises(musicpd.CommandError): + cli.find('(album == "foo\nbar")') + if __name__ == '__main__': unittest.main()