diff --git a/mopidy/frontends/mpd/translator.py b/mopidy/frontends/mpd/translator.py index 7b337b62..514e167f 100644 --- a/mopidy/frontends/mpd/translator.py +++ b/mopidy/frontends/mpd/translator.py @@ -2,11 +2,10 @@ import os import re from mopidy import settings +from mopidy.utils.path import mtime as get_mtime 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. @@ -45,8 +44,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(uri_to_path(track.uri)))) if mtime and track.uri: - mtime = stat(uri_to_path(track.uri)).st_mtime - result.append(('mtime', int(mtime))) + result.append(('mtime', get_mtime(uri_to_path(track.uri)))) return result def artists_to_mpd_format(artists): @@ -127,7 +125,7 @@ def _add_to_tag_cache(result, folders, files): for path, entry in folders.items(): name = os.path.split(path)[1] result.append(('directory', path)) - result.append(('mtime', stat(name).st_mtime)) + result.append(('mtime', get_mtime(name))) result.append(('begin', name)) _add_to_tag_cache(result, *entry) result.append(('end', name)) diff --git a/tests/frontends/mpd/serializer_test.py b/tests/frontends/mpd/serializer_test.py index 5b7e6095..74a4184f 100644 --- a/tests/frontends/mpd/serializer_test.py +++ b/tests/frontends/mpd/serializer_test.py @@ -3,26 +3,20 @@ import os import unittest from mopidy import settings +from mopidy.utils.path import mtime from mopidy.frontends.mpd import translator, protocol from mopidy.models import Album, Artist, Playlist, Track from tests import data_folder, SkipTest -def fake_mtime(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_mtime + mtime.set_fake_time(1234567) def tearDown(self): settings.runtime.clear() - translator.stat = os.stat + mtime.undo_fake() def test_track_to_mpd_format_for_empty_track(self): result = translator.track_to_mpd_format(Track()) @@ -136,11 +130,11 @@ class TracksToTagCacheFormatTest(unittest.TestCase): def setUp(self): settings.LOCAL_MUSIC_FOLDER = '/dir/subdir' - translator.stat = fake_mtime + mtime.set_fake_time(1234567) def tearDown(self): settings.runtime.clear() - translator.stat = os.stat + mtime.undo_fake() def consume_headers(self, result): self.assertEqual(('info_begin',), result[0]) @@ -158,7 +152,7 @@ class TracksToTagCacheFormatTest(unittest.TestCase): def consume_directory(self, result): self.assertEqual('directory', result[0][0]) - self.assertEqual(('mtime', fake_mtime('').st_mtime), result[1]) + self.assertEqual(('mtime', mtime('.')), result[1]) self.assertEqual(('begin', os.path.split(result[0][1])[1]), result[2]) directory = result[2][1] for i, row in enumerate(result): @@ -238,7 +232,7 @@ class TracksToTagCacheFormatTest(unittest.TestCase): folder, result = self.consume_directory(result) self.assertEqual(('directory', 'folder/sub'), folder[0]) - self.assertEqual(('mtime', fake_mtime('').st_mtime), folder[1]) + self.assertEqual(('mtime', mtime('.')), folder[1]) self.assertEqual(('begin', 'sub'), folder[2]) def test_tag_cache_suports_sub_directories(self):