From ca95a510c90669d2e7ccca865f75acb072d4a7a0 Mon Sep 17 00:00:00 2001 From: Thomas Adamcik Date: Sat, 30 Oct 2010 00:37:42 +0200 Subject: [PATCH] Ensure that mtime is included --- mopidy/frontends/mpd/translator.py | 6 ++-- tests/frontends/mpd/serializer_test.py | 41 ++++++++++++++++++++------ 2 files changed, 36 insertions(+), 11 deletions(-) diff --git a/mopidy/frontends/mpd/translator.py b/mopidy/frontends/mpd/translator.py index 6c93e04e..5d446be8 100644 --- a/mopidy/frontends/mpd/translator.py +++ b/mopidy/frontends/mpd/translator.py @@ -5,6 +5,8 @@ from mopidy import settings from mopidy.frontends.mpd import protocol from mopidy.utils.path import path_to_uri, uri_to_path, split_path +stat = os.stat + def track_to_mpd_format(track, position=None, cpid=None, key=False, mtime=False): """ Format track for output to MPD client. @@ -40,7 +42,7 @@ def track_to_mpd_format(track, position=None, cpid=None, key=False, mtime=False) if key and track.uri: result.insert(0, ('key', os.path.basename(track.uri))) if mtime and track.uri: - mtime = os.stat(uri_to_path(track.uri)).st_mtime + mtime = stat(uri_to_path(track.uri)).st_mtime result.append(('mtime', int(mtime))) return result @@ -127,7 +129,7 @@ def _add_to_tag_cache(result, folders, files): result.append(('songList begin',)) for track in files: - result.extend(track_to_mpd_format(track, key=True)) + result.extend(track_to_mpd_format(track, key=True, mtime=True)) result.append(('songList end',)) def tracks_to_directory_tree(tracks): diff --git a/tests/frontends/mpd/serializer_test.py b/tests/frontends/mpd/serializer_test.py index 6a0dec3a..81ea4cae 100644 --- a/tests/frontends/mpd/serializer_test.py +++ b/tests/frontends/mpd/serializer_test.py @@ -1,4 +1,5 @@ import datetime as dt +import os import unittest from mopidy import settings @@ -7,12 +8,21 @@ from mopidy.models import Album, Artist, Playlist, Track from tests import data_folder, SkipTest +def fake_stat(path): + class StatResult(object): + def __getattr__(self, key): + assert key == 'st_mtime', key + return 1234567 + return StatResult() + class TrackMpdFormatTest(unittest.TestCase): def setUp(self): settings.LOCAL_MUSIC_FOLDER = '/dir/subdir' + translator.stat = fake_stat def tearDown(self): settings.runtime.clear() + translator.stat = os.stat def test_track_to_mpd_format_for_empty_track(self): result = translator.track_to_mpd_format(Track()) @@ -46,8 +56,7 @@ class TrackMpdFormatTest(unittest.TestCase): def test_track_to_mpd_format_with_mtime(self): uri = translator.path_to_uri(data_folder('blank.mp3')) result = translator.track_to_mpd_format(Track(uri=uri), mtime=True) - print result - self.assert_(('mtime', 1288125516) in result) + self.assert_(('mtime', 1234567) in result) def test_track_to_mpd_format_track_uses_uri_to_mpd_relative_path(self): track = Track(uri='file:///dir/subdir/song.mp3') @@ -117,11 +126,14 @@ class UriToMpdRelativePathTest(unittest.TestCase): class TracksToTagCacheFormatTest(unittest.TestCase): + def setUp(self): settings.LOCAL_MUSIC_FOLDER = '/dir/subdir' + translator.stat = fake_stat def tearDown(self): settings.runtime.clear() + translator.stat = os.stat def consume_headers(self, result): self.assertEqual(('info_begin',), result[0]) @@ -173,7 +185,18 @@ class TracksToTagCacheFormatTest(unittest.TestCase): def test_tag_cache_has_formated_track(self): track = Track(uri='file:///dir/subdir/song.mp3') - formated = translator.track_to_mpd_format(track, key=True) + formated = translator.track_to_mpd_format(track, key=True, mtime=True) + result = translator.tracks_to_tag_cache_format([track]) + + result = self.consume_headers(result) + song_list, result = self.consume_song_list(result) + + self.assertEqual(song_list, formated) + self.assertEqual(len(result), 0) + + def test_tag_cache_has_formated_track_with_key_and_mtime(self): + track = Track(uri='file:///dir/subdir/song.mp3') + formated = translator.track_to_mpd_format(track, key=True, mtime=True) result = translator.tracks_to_tag_cache_format([track]) result = self.consume_headers(result) @@ -184,7 +207,7 @@ class TracksToTagCacheFormatTest(unittest.TestCase): def test_tag_cache_suports_directories(self): track = Track(uri='file:///dir/subdir/folder/song.mp3') - formated = translator.track_to_mpd_format(track, key=True) + formated = translator.track_to_mpd_format(track, key=True, mtime=True) result = translator.tracks_to_tag_cache_format([track]) result = self.consume_headers(result) @@ -199,7 +222,7 @@ class TracksToTagCacheFormatTest(unittest.TestCase): def test_tag_cache_suports_sub_directories(self): track = Track(uri='file:///dir/subdir/folder/sub/song.mp3') - formated = translator.track_to_mpd_format(track, key=True) + formated = translator.track_to_mpd_format(track, key=True, mtime=True) result = translator.tracks_to_tag_cache_format([track]) result = self.consume_headers(result) @@ -225,8 +248,8 @@ class TracksToTagCacheFormatTest(unittest.TestCase): ] formated = [] - formated.extend(translator.track_to_mpd_format(tracks[0], key=True)) - formated.extend(translator.track_to_mpd_format(tracks[1], key=True)) + formated.extend(translator.track_to_mpd_format(tracks[0], key=True, mtime=True)) + formated.extend(translator.track_to_mpd_format(tracks[1], key=True, mtime=True)) result = translator.tracks_to_tag_cache_format(tracks) @@ -243,8 +266,8 @@ class TracksToTagCacheFormatTest(unittest.TestCase): ] formated = [] - formated.append(translator.track_to_mpd_format(tracks[0], key=True)) - formated.append(translator.track_to_mpd_format(tracks[1], key=True)) + formated.append(translator.track_to_mpd_format(tracks[0], key=True, mtime=True)) + formated.append(translator.track_to_mpd_format(tracks[1], key=True, mtime=True)) result = translator.tracks_to_tag_cache_format(tracks)