diff --git a/test/formats/test_asf.py b/test/formats/test_asf.py index 0fe185092..333016dd5 100644 --- a/test/formats/test_asf.py +++ b/test/formats/test_asf.py @@ -8,7 +8,14 @@ from picard.formats import ( ext_to_format, ) -from .common import CommonTests +from .common import ( + CommonTests, + load_metadata, + load_raw, + save_metadata, + save_raw, + skipUnlessTestfile, +) from .coverart import CommonCoverArtTests @@ -29,6 +36,19 @@ class CommonAsfTests: for tag in self.replaygain_tags.keys(): self.assertTrue(fmt.supports_tag(tag)) + @skipUnlessTestfile + def test_replaygain_tags_not_duplicated(self): + # Ensure values are not duplicated on repeated save + tags = { + 'Replaygain_Album_Peak': '-6.48 dB' + } + save_raw(self.filename, tags) + loaded_metadata = load_metadata(self.filename) + save_metadata(self.filename, loaded_metadata) + raw_metadata = load_raw(self.filename) + self.assertFalse('Replaygain_Album_Peak' in raw_metadata) + self.assertTrue('REPLAYGAIN_ALBUM_PEAK' in raw_metadata) + class ASFTest(CommonAsfTests.AsfTestCase): testfile = 'test.asf' diff --git a/test/formats/test_id3.py b/test/formats/test_id3.py index f39c4acfc..4d904942c 100644 --- a/test/formats/test_id3.py +++ b/test/formats/test_id3.py @@ -211,6 +211,18 @@ class CommonId3Tests: for (key, value) in self.replaygain_tags.items(): self.assertEqual(loaded_metadata[key], value, '%s: %r != %r' % (key, loaded_metadata[key], value)) + @skipUnlessTestfile + def test_replaygain_tags_not_duplicated(self): + # Ensure values are not duplicated on repeated save + tags = mutagen.id3.ID3Tags() + tags.add(mutagen.id3.TXXX(desc='Replaygain_Album_Peak', text='0.978475')) + save_raw(self.filename, tags) + loaded_metadata = load_metadata(self.filename) + save_metadata(self.filename, loaded_metadata) + raw_metadata = load_raw(self.filename) + self.assertFalse('TXXX:Replaygain_Album_Peak' in raw_metadata) + self.assertTrue('TXXX:REPLAYGAIN_ALBUM_PEAK' in raw_metadata) + class MP3Test(CommonId3Tests.Id3TestCase): testfile = 'test.mp3' diff --git a/test/formats/test_mp4.py b/test/formats/test_mp4.py index e21e4a439..9c3df04c6 100644 --- a/test/formats/test_mp4.py +++ b/test/formats/test_mp4.py @@ -5,6 +5,8 @@ from picard.formats import ext_to_format from .common import ( CommonTests, load_metadata, + load_raw, + save_metadata, save_raw, skipUnlessTestfile, ) @@ -53,6 +55,18 @@ class MP4Test(CommonTests.TagFormatsTestCase): for (key, value) in self.replaygain_tags.items(): self.assertEqual(loaded_metadata[key], value, '%s: %r != %r' % (key, loaded_metadata[key], value)) + @skipUnlessTestfile + def test_replaygain_tags_not_duplicated(self): + # Ensure values are not duplicated on repeated save + tags = mutagen.mp4.MP4Tags() + tags['----:com.apple.iTunes:Replaygain_Album_Peak'] = [b'-6.48 dB'] + save_raw(self.filename, tags) + loaded_metadata = load_metadata(self.filename) + save_metadata(self.filename, loaded_metadata) + raw_metadata = load_raw(self.filename) + self.assertFalse('----:com.apple.iTunes:Replaygain_Album_Peak' in raw_metadata) + self.assertTrue('----:com.apple.iTunes:REPLAYGAIN_ALBUM_PEAK' in raw_metadata) + class Mp4CoverArtTest(CommonCoverArtTests.CoverArtTestCase): testfile = 'test.m4a'