PICARD-1332: Deleted tags on tracks get applied to matched files

This commit is contained in:
Philipp Wolfer
2018-09-05 00:04:17 +02:00
parent c9a30345f8
commit cc93a2a45f
3 changed files with 25 additions and 3 deletions

View File

@@ -175,7 +175,8 @@ class File(QtCore.QObject, Item):
deleted_tags = self.metadata.deleted_tags
self.metadata.copy(metadata)
if preserve_deleted:
self.metadata.deleted_tags = deleted_tags
for tag in deleted_tags:
self.metadata.delete(tag)
for tag, values in saved_metadata.items():
self.metadata.set(tag, values)

View File

@@ -301,7 +301,7 @@ class Metadata(dict):
values = [string_(value) for value in values if value]
if len(values):
self.set(name, values)
else:
elif name in self:
self.delete(name)
def add(self, name, value):

View File

@@ -36,7 +36,7 @@ class MetadataTest(unittest.TestCase):
def tearDown(self):
pass
def test_metadata_set(self):
def test_metadata_setitem(self):
self.assertEqual(["single1-value"], dict.get(self.metadata,"single1"))
self.assertEqual(["single2-value"], dict.get(self.metadata,"single2"))
self.assertEqual(self.multi1, dict.get(self.metadata,"multi1"))
@@ -66,10 +66,31 @@ class MetadataTest(unittest.TestCase):
self.assertNotIn("single1", self.metadata)
self.assertIn("single1", self.metadata.deleted_tags)
def test_metadata_implicit_delete(self):
self.metadata["single2"] = ""
self.assertNotIn("single2", self.metadata)
self.assertIn("single2", self.metadata.deleted_tags)
self.metadata["unknown"] = ""
self.assertNotIn("unknown", self.metadata)
self.assertNotIn("unknown", self.metadata.deleted_tags)
def test_metadata_set_explicit_empty(self):
self.metadata.delete("single1")
self.metadata.set("single1", [])
self.assertIn("single1", self.metadata)
self.assertNotIn("single1", self.metadata.deleted_tags)
self.assertEqual([], self.metadata.getall("single1"))
def test_metadata_undelete(self):
self.metadata.delete("single1")
self.assertNotIn("single1", self.metadata)
self.assertIn("single1", self.metadata.deleted_tags)
self.metadata["single1"] = "value1"
self.assertIn("single1", self.metadata)
self.assertNotIn("single1", self.metadata.deleted_tags)
def test_metadata_update(self):
m = Metadata()
m["old"] = "old-value"