PICARD-1413: Explicitly mark compilation tag as deleted

Mark compilation tag as deleted if it does not apply instead of sneakily removing it only for ID3.
This commit is contained in:
Philipp Wolfer
2018-11-30 09:30:22 +01:00
committed by Philipp Wolfer
parent c31e2886ea
commit 7a359d5786
3 changed files with 14 additions and 14 deletions

View File

@@ -341,6 +341,8 @@ class Album(DataObject, Item):
artists.add(tm["artist"])
if va:
tm["compilation"] = "1"
else:
tm.delete("compilation")
if discpregap:
tm["~discpregap"] = "1"

View File

@@ -367,7 +367,6 @@ class ID3File(File):
tmcl = mutagen.id3.TMCL(encoding=encoding, people=[])
tipl = mutagen.id3.TIPL(encoding=encoding, people=[])
tags.delall('TCMP')
for name, values in metadata.rawitems():
values = [id3text(v, encoding) for v in values]
name = id3text(name, encoding)

View File

@@ -206,6 +206,16 @@ class CommonTests:
for tag in self.unsupported_tags:
self.assertTrue(tag not in loaded_metadata, '%s: %r != None' % (tag, loaded_metadata[tag]))
@skipUnlessTestfile
def test_preserve_unchanged_tags(self):
metadata = Metadata()
for (key, value) in self.tags.items():
metadata[key] = value
save_metadata(self.filename, metadata)
loaded_metadata = save_and_load_metadata(self.filename, Metadata())
for (key, value) in self.tags.items():
self.assertEqual(loaded_metadata[key], value, '%s: %r != %r' % (key, loaded_metadata[key], value))
@skipUnlessTestfile
def test_delete_simple_tags(self):
metadata = Metadata()
@@ -480,20 +490,9 @@ class CommonTests:
self.assertFalse('TXXX:Work' in raw_metadata)
self.assertTrue('TXXX:WORK' in raw_metadata)
@skipUnlessTestfile
def test_preserve_performance_tags(self):
metadata = Metadata()
metadata['engineer'] = 'Foo'
metadata['performer:drums'] = 'Foo'
save_and_load_metadata(self.filename, metadata)
new_metadata = save_and_load_metadata(self.filename, Metadata())
self.assertEqual('Foo', new_metadata['engineer'])
self.assertEqual('Foo', new_metadata['performer:drums'])
@skipUnlessTestfile
def test_preserve_performance_tags_v23(self):
def test_preserve_unchanged_tags_v23(self):
config.setting['write_id3v23'] = True
self.test_preserve_performance_tags()
self.test_preserve_unchanged_tags()
class FLACTest(CommonTests.FormatsTest):