From d5f131da047bf13d153aa0cb282e8340d4a3c827 Mon Sep 17 00:00:00 2001 From: Philipp Wolfer Date: Thu, 28 Oct 2021 21:35:13 +0200 Subject: [PATCH] PICARD-2307: Fix ValueError for Vorbis when deleting invalid tags --- picard/formats/vorbis.py | 2 +- test/formats/test_vorbis.py | 9 +++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/picard/formats/vorbis.py b/picard/formats/vorbis.py index ecbedade5..350efd6b3 100644 --- a/picard/formats/vorbis.py +++ b/picard/formats/vorbis.py @@ -321,7 +321,7 @@ class VCommentFile(File): """Remove the tags from the file that were deleted in the UI""" for tag in metadata.deleted_tags: real_name = self._get_tag_name(tag) - if real_name and real_name in tags: + if is_valid_key(real_name) and real_name in tags: if real_name in ('performer', 'comment'): parts = tag.split(':', 1) if len(parts) == 2: diff --git a/test/formats/test_vorbis.py b/test/formats/test_vorbis.py index 400302443..9348b20e4 100644 --- a/test/formats/test_vorbis.py +++ b/test/formats/test_vorbis.py @@ -184,6 +184,15 @@ class CommonVorbisTests: self.assertNotIn('tracktotal', loaded_metadata) self.assertNotIn('totaltracks', loaded_metadata) + @skipUnlessTestfile + def test_delete_invalid_tagname(self): + # Deleting tags that are not valid Vorbis tag names must not trigger + # an error + for invalid_tag in INVALID_KEYS: + metadata = Metadata() + del metadata[invalid_tag] + save_metadata(self.filename, metadata) + class FLACTest(CommonVorbisTests.VorbisTestCase): testfile = 'test.flac'