mirror of
https://github.com/beetbox/beets.git
synced 2025-12-06 08:39:17 +01:00
Always use syspath to construct MediaFile
Related to #1966. Previously, we used a `syspath` call inside MediaFile, which probably wasn't right: the constructor should behave like `open` in that we need to use pass an OS path.
This commit is contained in:
parent
991c9936fd
commit
ae5e55cad6
4 changed files with 33 additions and 29 deletions
|
|
@ -1104,18 +1104,20 @@ class WriteTest(unittest.TestCase, TestHelper):
|
|||
shutil.copy(syspath(item.path), syspath(custom_path))
|
||||
|
||||
item['artist'] = 'new artist'
|
||||
self.assertNotEqual(MediaFile(custom_path).artist, 'new artist')
|
||||
self.assertNotEqual(MediaFile(item.path).artist, 'new artist')
|
||||
self.assertNotEqual(MediaFile(syspath(custom_path)).artist,
|
||||
'new artist')
|
||||
self.assertNotEqual(MediaFile(syspath(item.path)).artist,
|
||||
'new artist')
|
||||
|
||||
item.write(custom_path)
|
||||
self.assertEqual(MediaFile(custom_path).artist, 'new artist')
|
||||
self.assertNotEqual(MediaFile(item.path).artist, 'new artist')
|
||||
self.assertEqual(MediaFile(syspath(custom_path)).artist, 'new artist')
|
||||
self.assertNotEqual(MediaFile(syspath(item.path)).artist, 'new artist')
|
||||
|
||||
def test_write_custom_tags(self):
|
||||
item = self.add_item_fixture(artist='old artist')
|
||||
item.write(tags={'artist': 'new artist'})
|
||||
self.assertNotEqual(item.artist, 'new artist')
|
||||
self.assertEqual(MediaFile(item.path).artist, 'new artist')
|
||||
self.assertEqual(MediaFile(syspath(item.path)).artist, 'new artist')
|
||||
|
||||
def test_write_date_field(self):
|
||||
# Since `date` is not a MediaField, this should do nothing.
|
||||
|
|
@ -1123,7 +1125,7 @@ class WriteTest(unittest.TestCase, TestHelper):
|
|||
clean_year = item.year
|
||||
item.date = u'foo'
|
||||
item.write()
|
||||
self.assertEqual(MediaFile(item.path).year, clean_year)
|
||||
self.assertEqual(MediaFile(syspath(item.path)).year, clean_year)
|
||||
|
||||
|
||||
class ItemReadTest(unittest.TestCase):
|
||||
|
|
|
|||
|
|
@ -27,7 +27,7 @@ from beets import plugins, config, ui
|
|||
from beets.library import Item
|
||||
from beets.dbcore import types
|
||||
from beets.mediafile import MediaFile
|
||||
from beets.util import displayable_path, bytestring_path
|
||||
from beets.util import displayable_path, bytestring_path, syspath
|
||||
|
||||
from test.test_importer import ImportHelper, AutotagStub
|
||||
from test.test_ui_importer import TerminalImportSessionSetup
|
||||
|
|
@ -118,7 +118,7 @@ class ItemWriteTest(unittest.TestCase, TestHelper):
|
|||
item = self.add_item_fixture(artist=u'XXX')
|
||||
item.write()
|
||||
|
||||
mediafile = MediaFile(item.path)
|
||||
mediafile = MediaFile(syspath(item.path))
|
||||
self.assertEqual(mediafile.artist, u'YYY')
|
||||
|
||||
def register_listener(self, event, func):
|
||||
|
|
|
|||
|
|
@ -40,6 +40,7 @@ from beets import config
|
|||
from beets import plugins
|
||||
from beets.util.confit import ConfigError
|
||||
from beets import util
|
||||
from beets.util import syspath
|
||||
|
||||
|
||||
class ListTest(unittest.TestCase):
|
||||
|
|
@ -289,7 +290,7 @@ class ModifyTest(unittest.TestCase, TestHelper):
|
|||
def test_write_initial_key_tag(self):
|
||||
self.modify(u"initial_key=C#m")
|
||||
item = self.lib.items().get()
|
||||
mediafile = MediaFile(item.path)
|
||||
mediafile = MediaFile(syspath(item.path))
|
||||
self.assertEqual(mediafile.initial_key, u'C#m')
|
||||
|
||||
def test_set_flexattr(self):
|
||||
|
|
@ -313,11 +314,11 @@ class ModifyTest(unittest.TestCase, TestHelper):
|
|||
item.write()
|
||||
item.store()
|
||||
|
||||
mediafile = MediaFile(item.path)
|
||||
mediafile = MediaFile(syspath(item.path))
|
||||
self.assertEqual(mediafile.initial_key, u'C#m')
|
||||
|
||||
self.modify(u"initial_key!")
|
||||
mediafile = MediaFile(item.path)
|
||||
mediafile = MediaFile(syspath(item.path))
|
||||
self.assertIsNone(mediafile.initial_key)
|
||||
|
||||
def test_arg_parsing_colon_query(self):
|
||||
|
|
@ -528,7 +529,7 @@ class UpdateTest(_common.TestCase):
|
|||
self.assertNotExists(artpath)
|
||||
|
||||
def test_modified_metadata_detected(self):
|
||||
mf = MediaFile(self.i.path)
|
||||
mf = MediaFile(syspath(self.i.path))
|
||||
mf.title = u'differentTitle'
|
||||
mf.save()
|
||||
self._update()
|
||||
|
|
@ -536,7 +537,7 @@ class UpdateTest(_common.TestCase):
|
|||
self.assertEqual(item.title, u'differentTitle')
|
||||
|
||||
def test_modified_metadata_moved(self):
|
||||
mf = MediaFile(self.i.path)
|
||||
mf = MediaFile(syspath(self.i.path))
|
||||
mf.title = u'differentTitle'
|
||||
mf.save()
|
||||
self._update(move=True)
|
||||
|
|
@ -544,7 +545,7 @@ class UpdateTest(_common.TestCase):
|
|||
self.assertTrue(b'differentTitle' in item.path)
|
||||
|
||||
def test_modified_metadata_not_moved(self):
|
||||
mf = MediaFile(self.i.path)
|
||||
mf = MediaFile(syspath(self.i.path))
|
||||
mf.title = u'differentTitle'
|
||||
mf.save()
|
||||
self._update(move=False)
|
||||
|
|
@ -552,7 +553,7 @@ class UpdateTest(_common.TestCase):
|
|||
self.assertTrue(b'differentTitle' not in item.path)
|
||||
|
||||
def test_selective_modified_metadata_moved(self):
|
||||
mf = MediaFile(self.i.path)
|
||||
mf = MediaFile(syspath(self.i.path))
|
||||
mf.title = u'differentTitle'
|
||||
mf.genre = u'differentGenre'
|
||||
mf.save()
|
||||
|
|
@ -562,7 +563,7 @@ class UpdateTest(_common.TestCase):
|
|||
self.assertNotEqual(item.genre, u'differentGenre')
|
||||
|
||||
def test_selective_modified_metadata_not_moved(self):
|
||||
mf = MediaFile(self.i.path)
|
||||
mf = MediaFile(syspath(self.i.path))
|
||||
mf.title = u'differentTitle'
|
||||
mf.genre = u'differentGenre'
|
||||
mf.save()
|
||||
|
|
@ -572,7 +573,7 @@ class UpdateTest(_common.TestCase):
|
|||
self.assertNotEqual(item.genre, u'differentGenre')
|
||||
|
||||
def test_modified_album_metadata_moved(self):
|
||||
mf = MediaFile(self.i.path)
|
||||
mf = MediaFile(syspath(self.i.path))
|
||||
mf.album = u'differentAlbum'
|
||||
mf.save()
|
||||
self._update(move=True)
|
||||
|
|
@ -581,7 +582,7 @@ class UpdateTest(_common.TestCase):
|
|||
|
||||
def test_modified_album_metadata_art_moved(self):
|
||||
artpath = self.album.artpath
|
||||
mf = MediaFile(self.i.path)
|
||||
mf = MediaFile(syspath(self.i.path))
|
||||
mf.album = u'differentAlbum'
|
||||
mf.save()
|
||||
self._update(move=True)
|
||||
|
|
@ -589,7 +590,7 @@ class UpdateTest(_common.TestCase):
|
|||
self.assertNotEqual(artpath, album.artpath)
|
||||
|
||||
def test_selective_modified_album_metadata_moved(self):
|
||||
mf = MediaFile(self.i.path)
|
||||
mf = MediaFile(syspath(self.i.path))
|
||||
mf.album = u'differentAlbum'
|
||||
mf.genre = u'differentGenre'
|
||||
mf.save()
|
||||
|
|
@ -599,7 +600,7 @@ class UpdateTest(_common.TestCase):
|
|||
self.assertNotEqual(item.genre, u'differentGenre')
|
||||
|
||||
def test_selective_modified_album_metadata_not_moved(self):
|
||||
mf = MediaFile(self.i.path)
|
||||
mf = MediaFile(syspath(self.i.path))
|
||||
mf.album = u'differentAlbum'
|
||||
mf.genre = u'differentGenre'
|
||||
mf.save()
|
||||
|
|
@ -609,7 +610,7 @@ class UpdateTest(_common.TestCase):
|
|||
self.assertEqual(item.genre, u'differentGenre')
|
||||
|
||||
def test_mtime_match_skips_update(self):
|
||||
mf = MediaFile(self.i.path)
|
||||
mf = MediaFile(syspath(self.i.path))
|
||||
mf.title = u'differentTitle'
|
||||
mf.save()
|
||||
|
||||
|
|
|
|||
|
|
@ -11,6 +11,7 @@ from beets.library import Item
|
|||
from beets import config
|
||||
from beetsplug.zero import ZeroPlugin
|
||||
from beets.mediafile import MediaFile
|
||||
from beets.util import syspath
|
||||
|
||||
|
||||
class ZeroPluginTest(unittest.TestCase, TestHelper):
|
||||
|
|
@ -61,7 +62,7 @@ class ZeroPluginTest(unittest.TestCase, TestHelper):
|
|||
item.rg_track_peak = 0.0
|
||||
item.write()
|
||||
|
||||
mediafile = MediaFile(item.path)
|
||||
mediafile = MediaFile(syspath(item.path))
|
||||
self.assertIsNotNone(mediafile.rg_track_peak)
|
||||
self.assertIsNotNone(mediafile.rg_track_gain)
|
||||
|
||||
|
|
@ -71,28 +72,28 @@ class ZeroPluginTest(unittest.TestCase, TestHelper):
|
|||
self.load_plugins('zero')
|
||||
|
||||
item.write()
|
||||
mediafile = MediaFile(item.path)
|
||||
mediafile = MediaFile(syspath(item.path))
|
||||
self.assertIsNone(mediafile.rg_track_peak)
|
||||
self.assertIsNone(mediafile.rg_track_gain)
|
||||
|
||||
def test_do_not_change_database(self):
|
||||
item = self.add_item_fixture(year=2000)
|
||||
item.write()
|
||||
mediafile = MediaFile(item.path)
|
||||
mediafile = MediaFile(syspath(item.path))
|
||||
self.assertEqual(2000, mediafile.year)
|
||||
|
||||
config['zero'] = {'fields': ['year']}
|
||||
self.load_plugins('zero')
|
||||
|
||||
item.write()
|
||||
mediafile = MediaFile(item.path)
|
||||
mediafile = MediaFile(syspath(item.path))
|
||||
self.assertEqual(item['year'], 2000)
|
||||
self.assertIsNone(mediafile.year)
|
||||
|
||||
def test_change_database(self):
|
||||
item = self.add_item_fixture(year=2000)
|
||||
item.write()
|
||||
mediafile = MediaFile(item.path)
|
||||
mediafile = MediaFile(syspath(item.path))
|
||||
self.assertEqual(2000, mediafile.year)
|
||||
|
||||
config['zero'] = {
|
||||
|
|
@ -102,7 +103,7 @@ class ZeroPluginTest(unittest.TestCase, TestHelper):
|
|||
self.load_plugins('zero')
|
||||
|
||||
item.write()
|
||||
mediafile = MediaFile(item.path)
|
||||
mediafile = MediaFile(syspath(item.path))
|
||||
self.assertEqual(item['year'], 0)
|
||||
self.assertIsNone(mediafile.year)
|
||||
|
||||
|
|
@ -110,14 +111,14 @@ class ZeroPluginTest(unittest.TestCase, TestHelper):
|
|||
path = self.create_mediafile_fixture(images=['jpg'])
|
||||
item = Item.from_path(path)
|
||||
|
||||
mediafile = MediaFile(item.path)
|
||||
mediafile = MediaFile(syspath(item.path))
|
||||
self.assertNotEqual(0, len(mediafile.images))
|
||||
|
||||
config['zero'] = {'fields': [u'images']}
|
||||
self.load_plugins('zero')
|
||||
|
||||
item.write()
|
||||
mediafile = MediaFile(item.path)
|
||||
mediafile = MediaFile(syspath(item.path))
|
||||
self.assertEqual(0, len(mediafile.images))
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue