mpd: Ignore tracks without length in the "count" command

This commit is contained in:
Naglis Jonaitis 2015-05-28 00:17:20 +03:00
parent 10b0796bbd
commit feb9963a8e
3 changed files with 17 additions and 1 deletions

View File

@ -44,6 +44,12 @@ Models
reuse instances. For the test data set this was developed against, a library
of ~14000 tracks, went from needing ~75MB to ~17MB. (Fixes: :issue:`348`)
MPD frontend
------------
- The MPD command ``count`` now ignores tracks with no length, which would
previously cause a :exc:`TypeError`. (PR: :issue:`1192`)
Utils
-----

View File

@ -105,7 +105,7 @@ def count(context, *args):
result_tracks = _get_tracks(results)
return [
('songs', len(result_tracks)),
('playtime', sum(track.length for track in result_tracks) / 1000),
('playtime', sum(t.length for t in result_tracks if t.length) / 1000),
]

View File

@ -79,6 +79,16 @@ class MusicDatabaseHandlerTest(protocol.BaseTestCase):
self.assertInResponse('playtime: 650')
self.assertInResponse('OK')
def test_count_with_track_length_none(self):
self.backend.library.dummy_find_exact_result = SearchResult(
tracks=[
Track(uri='dummy:b', date="2001", length=None),
])
self.send_request('count "date" "2001"')
self.assertInResponse('songs: 1')
self.assertInResponse('playtime: 0')
self.assertInResponse('OK')
def test_findadd(self):
self.backend.library.dummy_find_exact_result = SearchResult(
tracks=[Track(uri='dummy:a', name='A')])