From d5509680aba9461a3aaee8c7c03cc23c92db0d2d Mon Sep 17 00:00:00 2001 From: Michael Wiencek Date: Sun, 9 Jun 2013 01:45:18 -0500 Subject: [PATCH] Fix tests --- picard/formats/apev2.py | 18 +++++++-------- picard/formats/asf.py | 8 +++---- picard/formats/id3.py | 22 +++++++++--------- picard/formats/mp4.py | 6 ++--- picard/formats/vorbis.py | 18 +++++++-------- picard/formats/wav.py | 2 +- test/test_formats.py | 50 ++++++++++++++++++---------------------- test/test_mbxml.py | 23 ++++++++++-------- test/test_script.py | 13 +++++------ 9 files changed, 79 insertions(+), 81 deletions(-) diff --git a/picard/formats/apev2.py b/picard/formats/apev2.py index 1a41f8a56..3c3df0255 100644 --- a/picard/formats/apev2.py +++ b/picard/formats/apev2.py @@ -23,7 +23,7 @@ import mutagen.musepack import mutagen.wavpack import mutagen.optimfrog import mutagenext.tak -from picard import log +from picard import config, log from picard.file import File from picard.metadata import Metadata from picard.util import encode_filename, sanitize_date, mimetype @@ -96,16 +96,16 @@ class APEv2File(File): self._info(metadata, file) return metadata - def _save(self, filename, metadata, settings): + def _save(self, filename, metadata): """Save metadata to the file.""" log.debug("Saving file %r", filename) try: tags = mutagen.apev2.APEv2(encode_filename(filename)) except mutagen.apev2.APENoHeaderError: tags = mutagen.apev2.APEv2() - if settings["clear_existing_tags"]: + if config.setting["clear_existing_tags"]: tags.clear() - elif settings['save_images_to_tags'] and metadata.images: + elif config.setting['save_images_to_tags'] and metadata.images: for name, value in tags.items(): if name.lower().startswith('cover art') and value.kind == mutagen.apev2.BINARY: del tags[name] @@ -142,7 +142,7 @@ class APEv2File(File): temp.setdefault(name, []).append(value) for name, values in temp.items(): tags[str(name)] = values - if settings['save_images_to_tags']: + if config.setting['save_images_to_tags']: for image in metadata.images: if "front" == image["type"]: cover_filename = 'Cover Art (Front)' @@ -170,13 +170,13 @@ class WavPackFile(APEv2File): super(WavPackFile, self)._info(metadata, file) metadata['~format'] = self.NAME - def _save_and_rename(self, old_filename, metadata, settings): + def _save_and_rename(self, old_filename, metadata): """Includes an additional check for WavPack correction files""" wvc_filename = old_filename.replace(".wv", ".wvc") if isfile(wvc_filename): - if settings["rename_files"] or settings["move_files"]: - self._rename(wvc_filename, metadata, settings) - return File._save_and_rename(self, old_filename, metadata, settings) + if config.setting["rename_files"] or config.setting["move_files"]: + self._rename(wvc_filename, metadata, config.setting) + return File._save_and_rename(self, old_filename, metadata, config.setting) class OptimFROGFile(APEv2File): """OptimFROG file.""" diff --git a/picard/formats/asf.py b/picard/formats/asf.py index e42df123b..5d4a7c1f8 100644 --- a/picard/formats/asf.py +++ b/picard/formats/asf.py @@ -147,13 +147,13 @@ class ASFFile(File): self._info(metadata, file) return metadata - def _save(self, filename, metadata, settings): + def _save(self, filename, metadata): log.debug("Saving file %r", filename) file = ASF(encode_filename(filename)) - if settings['clear_existing_tags']: + if config.setting['clear_existing_tags']: file.tags.clear() - if settings['save_images_to_tags']: + if config.setting['save_images_to_tags']: cover = [] for image in metadata.images: if config.setting["save_only_front_images_to_tags"] and image["type"] != "front": @@ -169,7 +169,7 @@ class ASFFile(File): if name.startswith('lyrics:'): name = 'lyrics' elif name == '~rating': - values[0] = int(values[0]) * 99 / (settings['rating_steps'] - 1) + values[0] = int(values[0]) * 99 / (config.setting['rating_steps'] - 1) if name not in self.__TRANS: continue name = self.__TRANS[name] diff --git a/picard/formats/id3.py b/picard/formats/id3.py index 44f743d6e..27d14515c 100644 --- a/picard/formats/id3.py +++ b/picard/formats/id3.py @@ -241,7 +241,7 @@ class ID3File(File): self._info(metadata, file) return metadata - def _save(self, filename, metadata, settings): + def _save(self, filename, metadata): """Save metadata to the file.""" log.debug("Saving file %r", filename) try: @@ -249,16 +249,16 @@ class ID3File(File): except mutagen.id3.ID3NoHeaderError: tags = compatid3.CompatID3() - if settings['clear_existing_tags']: + if config.setting['clear_existing_tags']: tags.clear() - if settings['save_images_to_tags'] and metadata.images: + if config.setting['save_images_to_tags'] and metadata.images: tags.delall('APIC') - if settings['write_id3v1']: + if config.setting['write_id3v1']: v1 = 2 else: v1 = 0 - encoding = {'utf-8': 3, 'utf-16': 1}.get(settings['id3v2_encoding'], 0) + encoding = {'utf-8': 3, 'utf-16': 1}.get(config.setting['id3v2_encoding'], 0) if 'tracknumber' in metadata: if 'totaltracks' in metadata: @@ -274,7 +274,7 @@ class ID3File(File): text = metadata['discnumber'] tags.add(id3.TPOS(encoding=0, text=text)) - if settings['save_images_to_tags']: + if config.setting['save_images_to_tags']: # This is necessary because mutagens HashKey for APIC frames only # includes the FrameID (APIC) and description - it's basically # impossible to save two images, even of different types, without @@ -325,15 +325,15 @@ class ID3File(File): elif name == '~rating': # Search for an existing POPM frame to get the current playcount for frame in tags.values(): - if frame.FrameID == 'POPM' and frame.email == settings['rating_user_email']: + if frame.FrameID == 'POPM' and frame.email == config.setting['rating_user_email']: count = getattr(frame, 'count', 0) break else: count = 0 # Convert rating to range between 0 and 255 - rating = int(round(float(values[0]) * 255 / (settings['rating_steps'] - 1))) - tags.add(id3.POPM(email=settings['rating_user_email'], rating=rating, count=count)) + rating = int(round(float(values[0]) * 255 / (config.setting['rating_steps'] - 1))) + tags.add(id3.POPM(email=config.setting['rating_user_email'], rating=rating, count=count)) elif name in self.__rtranslate: frameid = self.__rtranslate[name] if frameid.startswith('W'): @@ -374,14 +374,14 @@ class ID3File(File): if tipl.people: tags.add(tipl) - if settings['write_id3v23']: + if config.setting['write_id3v23']: tags.update_to_v23() tags.save(encode_filename(filename), v2=3, v1=v1) else: tags.update_to_v24() tags.save(encode_filename(filename), v2=4, v1=v1) - if self._IsMP3 and settings["remove_ape_from_mp3"]: + if self._IsMP3 and config.setting["remove_ape_from_mp3"]: try: mutagen.apev2.delete(encode_filename(filename)) except: pass diff --git a/picard/formats/mp4.py b/picard/formats/mp4.py index f713d04e8..a533b4ffa 100644 --- a/picard/formats/mp4.py +++ b/picard/formats/mp4.py @@ -144,13 +144,13 @@ class MP4File(File): self._info(metadata, file) return metadata - def _save(self, filename, metadata, settings): + def _save(self, filename, metadata): log.debug("Saving file %r", filename) file = MP4(encode_filename(self.filename)) if file.tags is None: file.add_tags() - if settings["clear_existing_tags"]: + if config.setting["clear_existing_tags"]: file.tags.clear() for name, values in metadata.rawitems(): @@ -185,7 +185,7 @@ class MP4File(File): else: file.tags["disk"] = [(int(metadata["discnumber"]), 0)] - if settings['save_images_to_tags']: + if config.setting['save_images_to_tags']: covr = [] for image in metadata.images: if config.setting["save_only_front_images_to_tags"] and image["type"] != "front": diff --git a/picard/formats/vorbis.py b/picard/formats/vorbis.py index 7f5668123..fb3dfb5bb 100644 --- a/picard/formats/vorbis.py +++ b/picard/formats/vorbis.py @@ -107,27 +107,27 @@ class VCommentFile(File): self._info(metadata, file) return metadata - def _save(self, filename, metadata, settings): + def _save(self, filename, metadata): """Save metadata to the file.""" log.debug("Saving file %r", filename) file = self._File(encode_filename(filename)) if file.tags is None: file.add_tags() - if settings["clear_existing_tags"]: + if config.setting["clear_existing_tags"]: file.tags.clear() if self._File == mutagen.flac.FLAC and ( - settings["clear_existing_tags"] or - (settings['save_images_to_tags'] and metadata.images)): + config.setting["clear_existing_tags"] or + (config.setting['save_images_to_tags'] and metadata.images)): file.clear_pictures() tags = {} for name, value in metadata.items(): if name == '~rating': # Save rating according to http://code.google.com/p/quodlibet/wiki/Specs_VorbisComments - if settings['rating_user_email']: - name = 'rating:%s' % settings['rating_user_email'] + if config.setting['rating_user_email']: + name = 'rating:%s' % config.setting['rating_user_email'] else: name = 'rating' - value = unicode(float(value) / (settings['rating_steps'] - 1)) + value = unicode(float(value) / (config.setting['rating_steps'] - 1)) # don't save private tags elif name.startswith("~"): continue @@ -151,7 +151,7 @@ class VCommentFile(File): if "totaldiscs" in metadata: tags.setdefault(u"DISCTOTAL", []).append(metadata["totaldiscs"]) - if settings['save_images_to_tags']: + if config.setting['save_images_to_tags']: for image in metadata.images: if config.setting["save_only_front_images_to_tags"] and image["type"] != "front": continue @@ -167,7 +167,7 @@ class VCommentFile(File): base64.standard_b64encode(picture.write())) file.tags.update(tags) kwargs = {} - if self._File == mutagen.flac.FLAC and settings["remove_id3_from_flac"]: + if self._File == mutagen.flac.FLAC and config.setting["remove_id3_from_flac"]: kwargs["deleteid3"] = True try: file.save(**kwargs) diff --git a/picard/formats/wav.py b/picard/formats/wav.py index 8471fc756..8e2e50566 100644 --- a/picard/formats/wav.py +++ b/picard/formats/wav.py @@ -40,6 +40,6 @@ class WAVFile(File): self._add_path_to_metadata(metadata) return metadata - def _save(self, filename, metadata, settings): + def _save(self, filename, metadata): log.debug("Saving file %r", filename) pass diff --git a/test/test_formats.py b/test/test_formats.py index 865de1c0d..b2ff0f885 100644 --- a/test/test_formats.py +++ b/test/test_formats.py @@ -2,52 +2,47 @@ import os.path import unittest import shutil from tempfile import mkstemp -from picard import log +from picard import config, log from picard.metadata import Metadata import picard.formats from PyQt4 import QtCore +settings = { + 'enabled_plugins': '', + 'clear_existing_tags': False, + 'remove_images_from_tags': False, + 'write_id3v1': True, + 'id3v2_encoding': 'utf-8', + 'save_images_to_tags': True, + 'write_id3v23': False, + 'remove_ape_from_mp3': False, + 'remove_id3_from_flac': False, + 'rating_steps': 6, + 'rating_user_email': 'users@musicbrainz.org', + 'save_only_front_images_to_tags': False, +} + + class FakeTagger(QtCore.QObject): file_state_changed = QtCore.pyqtSignal(int) def __init__(self): QtCore.QObject.__init__(self) - if "PICARD_DEBUG" in os.environ: - self.log = log.DebugLog() - else: - self.log = log.Log() - QtCore.QObject.log = self.log + QtCore.QObject.config = config + QtCore.QObject.log = log def emit(self, *args): pass -class FakeConfig(): - def __init__(self): - self.setting = { - 'enabled_plugins': '', - 'clear_existing_tags': False, - 'remove_images_from_tags': False, - 'write_id3v1': True, - 'id3v2_encoding': 'utf-8', - 'save_images_to_tags': True, - 'write_id3v23': False, - 'remove_ape_from_mp3': False, - 'remove_id3_from_flac': False, - 'rating_steps': 6, - 'rating_user_email': 'users@musicbrainz.org', - 'save_only_front_images_to_tags': False, - } - - def save_and_load_metadata(filename, metadata): """Save new metadata to a file and load it again.""" f = picard.formats.open(filename) loaded_metadata = f._load(filename) f._copy_loaded_metadata(loaded_metadata) - f._save(filename, metadata, f.config.setting) + f._save(filename, metadata) f = picard.formats.open(filename) loaded_metadata = f._load(filename) return loaded_metadata @@ -64,8 +59,8 @@ class FormatsTest(unittest.TestCase): fd, self.filename = mkstemp(suffix=os.path.splitext(self.original)[1]) os.close(fd) shutil.copy(self.original, self.filename) + config.setting = settings QtCore.QObject.tagger = FakeTagger() - QtCore.QObject.config = FakeConfig() def tearDown(self): if not self.original: @@ -506,7 +501,6 @@ class TestCoverArt(unittest.TestCase): os.close(fd) shutil.copy(original, self.filename) QtCore.QObject.tagger = FakeTagger() - QtCore.QObject.config = FakeConfig() def _tear_down(self): os.unlink(self.filename) @@ -544,7 +538,7 @@ class TestCoverArt(unittest.TestCase): metadata = Metadata() imgdata = tests[t]['head'] + dummyload metadata.add_image(tests[t]['mime'], imgdata) - f._save(self.filename, metadata, f.config.setting) + f._save(self.filename, metadata) f = picard.formats.open(self.filename) loaded_metadata = f._load(self.filename) diff --git a/test/test_mbxml.py b/test/test_mbxml.py index dfe3b1aa8..7f77058da 100644 --- a/test/test_mbxml.py +++ b/test/test_mbxml.py @@ -1,14 +1,17 @@ import unittest +import picard +from picard import config from picard.metadata import Metadata from picard.mbxml import track_to_metadata, release_to_metadata -class config: - setting = { - "standardize_tracks": False, - "standardize_artists": False, - "standardize_releases": False, - "translate_artist_names": False - } + +settings = { + "standardize_tracks": False, + "standardize_artists": False, + "standardize_releases": False, + "translate_artist_names": False +} + class XmlNode(object): @@ -34,6 +37,7 @@ class XmlNode(object): class TrackTest(unittest.TestCase): def test_1(self): + config.setting = settings class Track: pass node = XmlNode(children={ @@ -65,7 +69,7 @@ class TrackTest(unittest.TestCase): }) track = Track() m = track.metadata = Metadata() - track_to_metadata(node, track, config) + track_to_metadata(node, track) self.failUnlessEqual('123', m['musicbrainz_trackid']) self.failUnlessEqual('456; 789', m['musicbrainz_artistid']) self.failUnlessEqual('Foo', m['title']) @@ -77,6 +81,7 @@ class TrackTest(unittest.TestCase): class ReleaseTest(unittest.TestCase): def test_1(self): + config.setting = settings release = XmlNode(attribs={'id': '123'}, children={ 'title': [XmlNode(text='Foo')], 'status': [XmlNode(text='Official')], @@ -111,7 +116,7 @@ class ReleaseTest(unittest.TestCase): })] }) m = Metadata() - release_to_metadata(release, m, config) + release_to_metadata(release, m) self.failUnlessEqual('123', m['musicbrainz_albumid']) self.failUnlessEqual('456; 789', m['musicbrainz_albumartistid']) self.failUnlessEqual('Foo', m['album']) diff --git a/test/test_script.py b/test/test_script.py index e9c601a43..831ca3084 100644 --- a/test/test_script.py +++ b/test/test_script.py @@ -1,18 +1,17 @@ import unittest +import picard from PyQt4 import QtCore +from picard import config from picard.script import ScriptParser from picard.metadata import Metadata -class FakeConfig(object): - def __init__(self): - self.setting = { - 'enabled_plugins': '', - } - class ScriptParserTest(unittest.TestCase): + def setUp(self): - QtCore.QObject.config = FakeConfig() + config.setting = { + 'enabled_plugins': '', + } self.parser = ScriptParser() def test_cmd_noop(self):