Make tests conform to PEP8

This commit is contained in:
Thomas Scholtes 2014-09-09 22:31:46 +02:00
parent 114d3f95bd
commit 98ae8cbbc9
18 changed files with 197 additions and 153 deletions

View file

@ -6,7 +6,3 @@ logging-clear-handlers=1
# E241 missing whitespace after ',' (used to align visually)
# E221 multiple spaces before operator (used to align visually)
ignore=E241,E221
# List of files that have not been cleand up yet. We will try to reduce
# this with each commit
exclude=test/test_config_command.py,test/test_files.py,test/test_art.py,test/test_web.py,test/test_zero.py,test/rsrc/beetsplug/test.py,test/test_template.py,test/test_echonest.py,test/test_datequery.py,test/test_mb.py,test/test_convert.py,test/testall.py,test/test_player.py,test/test_query.py,test/test_mediafile.py,test/test_keyfinder.py,test/test_the.py,test/test_lyrics.py,test/test_ihate.py,test/test_vfs.py,test/test_replaygain.py,test/__init__.py,test/_common.py,test/test_mediafile_edge.py,test/test_ui.py

View file

@ -1,2 +1 @@
# Make python -m testall.py work.

View file

@ -36,8 +36,9 @@ import beets
# Make sure the development versions of the plugins are used
import beetsplug
beetsplug.__path__ = [ os.path.abspath(
os.path.join(__file__, '..', '..', 'beetsplug')) ]
beetsplug.__path__ = [os.path.abspath(
os.path.join(__file__, '..', '..', 'beetsplug')
)]
# Test resources path.
RSRC = os.path.join(os.path.dirname(__file__), 'rsrc')
@ -49,71 +50,77 @@ log.setLevel(logging.DEBUG)
# Dummy item creation.
_item_ident = 0
def item(lib=None):
global _item_ident
_item_ident += 1
i = beets.library.Item(
title = u'the title',
artist = u'the artist',
albumartist = u'the album artist',
album = u'the album',
genre = u'the genre',
composer = u'the composer',
grouping = u'the grouping',
year = 1,
month = 2,
day = 3,
track = 4,
tracktotal = 5,
disc = 6,
disctotal = 7,
lyrics = u'the lyrics',
comments = u'the comments',
bpm = 8,
comp = True,
path = 'somepath' + str(_item_ident),
length = 60.0,
bitrate = 128000,
format = 'FLAC',
mb_trackid = 'someID-1',
mb_albumid = 'someID-2',
mb_artistid = 'someID-3',
mb_albumartistid = 'someID-4',
album_id = None,
title=u'the title',
artist=u'the artist',
albumartist=u'the album artist',
album=u'the album',
genre=u'the genre',
composer=u'the composer',
grouping=u'the grouping',
year=1,
month=2,
day=3,
track=4,
tracktotal=5,
disc=6,
disctotal=7,
lyrics=u'the lyrics',
comments=u'the comments',
bpm=8,
comp=True,
path='somepath' + str(_item_ident),
length=60.0,
bitrate=128000,
format='FLAC',
mb_trackid='someID-1',
mb_albumid='someID-2',
mb_artistid='someID-3',
mb_albumartistid='someID-4',
album_id=None,
)
if lib:
lib.add(i)
return i
_album_ident = 0
def album(lib=None):
global _item_ident
_item_ident += 1
i = beets.library.Album(
artpath= None,
albumartist = 'some album artist',
albumartist_sort = 'some sort album artist',
albumartist_credit = 'some album artist credit',
album = 'the album',
genre = 'the genre',
year = 2014,
month = 2,
day = 5,
tracktotal = 0,
disctotal = 1,
comp = False,
mb_albumid = 'someID-1',
mb_albumartistid = 'someID-1'
artpath=None,
albumartist='some album artist',
albumartist_sort='some sort album artist',
albumartist_credit='some album artist credit',
album='the album',
genre='the genre',
year=2014,
month=2,
day=5,
tracktotal=0,
disctotal=1,
comp=False,
mb_albumid='someID-1',
mb_albumartistid='someID-1'
)
if lib:
lib.add(i)
return i
return i
# Dummy import session.
def import_session(lib=None, logfile=None, paths=[], query=[], cli=False):
cls = commands.TerminalImportSession if cli else importer.ImportSession
return cls(lib, logfile, paths, query)
# A test harness for all beets tests.
# Provides temporary, isolated configuration.
class TestCase(unittest.TestCase):
@ -161,7 +168,8 @@ class TestCase(unittest.TestCase):
def assertNotExists(self, path):
self.assertFalse(os.path.exists(path),
'file exists: %s' % path)
'file exists: %s' % path)
class LibTestCase(TestCase):
"""A test case that includes an in-memory library object (`lib`) and
@ -177,7 +185,6 @@ class LibTestCase(TestCase):
super(LibTestCase, self).tearDown()
# Mock timing.
class Timecop(object):

View file

@ -1,6 +1,7 @@
from beets.plugins import BeetsPlugin
from beets import ui
class TestPlugin(BeetsPlugin):
def __init__(self):
super(TestPlugin, self).__init__()

View file

@ -34,7 +34,8 @@ class FetchImageTest(_common.TestCase):
super(FetchImageTest, self).run(*args, **kwargs)
def mock_response(self, content_type):
responses.add(responses.GET, 'http://example.com', content_type=content_type)
responses.add(responses.GET, 'http://example.com',
content_type=content_type)
def test_invalid_type_returns_none(self):
self.mock_response('image/watercolour')
@ -82,15 +83,20 @@ class FSArtTest(_common.TestCase):
_common.touch(os.path.join(self.dpath, 'back.jpg'))
_common.touch(os.path.join(self.dpath, 'front.jpg'))
_common.touch(os.path.join(self.dpath, 'front-cover.jpg'))
fn = fetchart.art_in_path(self.dpath, ('cover', 'front', 'back'), False)
fn = fetchart.art_in_path(self.dpath,
('cover', 'front', 'back'), False)
self.assertEqual(fn, os.path.join(self.dpath, 'front-cover.jpg'))
class CombinedTest(_common.TestCase):
ASIN = 'xxxx'
MBID = 'releaseid'
AMAZON_URL = 'http://images.amazon.com/images/P/{0}.01.LZZZZZZZ.jpg'.format(ASIN)
AAO_URL = 'http://www.albumart.org/index_detail.php?asin={0}'.format(ASIN)
CAA_URL = 'http://coverartarchive.org/release/{0}/front-500.jpg'.format(MBID)
AMAZON_URL = 'http://images.amazon.com/images/P/{0}.01.LZZZZZZZ.jpg' \
.format(ASIN)
AAO_URL = 'http://www.albumart.org/index_detail.php?asin={0}' \
.format(ASIN)
CAA_URL = 'http://coverartarchive.org/release/{0}/front-500.jpg' \
.format(MBID)
def setUp(self):
super(CombinedTest, self).setUp()
@ -162,7 +168,8 @@ class CombinedTest(_common.TestCase):
def test_local_only_gets_fs_image(self):
_common.touch(os.path.join(self.dpath, 'art.jpg'))
album = _common.Bag(mb_albumid=self.MBID, asin=self.ASIN)
artpath = fetchart.art_for_album(album, [self.dpath], None, local_only=True)
artpath = fetchart.art_for_album(album, [self.dpath],
None, local_only=True)
self.assertEqual(artpath, os.path.join(self.dpath, 'art.jpg'))
self.assertEqual(len(responses.calls), 0)
@ -182,8 +189,10 @@ class AAOTest(_common.TestCase):
def test_aao_scraper_finds_image(self):
body = """
<br />
<a href="TARGET_URL" title="View larger image" class="thickbox" style="color: #7E9DA2; text-decoration:none;">
<img src="http://www.albumart.org/images/zoom-icon.jpg" alt="View larger image" width="17" height="15" border="0"/></a>
<a href="TARGET_URL" title="View larger image"
class="thickbox" style="color: #7E9DA2; text-decoration:none;">
<img src="http://www.albumart.org/images/zoom-icon.jpg"
alt="View larger image" width="17" height="15" border="0"/></a>
"""
self.mock_response(self.AAO_URL, body)
res = fetchart.aao_art(self.ASIN)
@ -232,8 +241,10 @@ class ArtImporterTest(_common.TestCase):
_common.touch(self.art_file)
self.old_afa = fetchart.art_for_album
self.afa_response = self.art_file
def art_for_album(i, p, maxwidth=None, local_only=False):
return self.afa_response
fetchart.art_for_album = art_for_album
# Test library.
@ -258,11 +269,11 @@ class ArtImporterTest(_common.TestCase):
self.task.is_album = True
self.task.album = self.album
info = AlbumInfo(
album = 'some album',
album_id = 'albumid',
artist = 'some artist',
artist_id = 'artistid',
tracks = [],
album='some album',
album_id='albumid',
artist='some artist',
artist_id='artistid',
tracks=[],
)
self.task.set_choice(AlbumMatch(0, info, {}, set(), set()))
@ -283,8 +294,10 @@ class ArtImporterTest(_common.TestCase):
artpath = self.lib.albums()[0].artpath
if should_exist:
self.assertEqual(artpath,
os.path.join(os.path.dirname(self.i.path), 'cover.jpg'))
self.assertEqual(
artpath,
os.path.join(os.path.dirname(self.i.path), 'cover.jpg')
)
self.assertExists(artpath)
else:
self.assertEqual(artpath, None)

View file

@ -25,6 +25,7 @@ from _common import item, touch
import beets.library
from beets import util
class MoveTest(_common.TestCase):
def setUp(self):
super(MoveTest, self).setUp()
@ -120,15 +121,18 @@ class MoveTest(_common.TestCase):
self.assertEqual(os.path.dirname(self.i.path),
os.path.dirname(dest))
class HelperTest(_common.TestCase):
def test_ancestry_works_on_file(self):
p = '/a/b/c'
a = ['/','/a','/a/b']
a = ['/', '/a', '/a/b']
self.assertEqual(util.ancestry(p), a)
def test_ancestry_works_on_dir(self):
p = '/a/b/c/'
a = ['/', '/a', '/a/b', '/a/b/c']
self.assertEqual(util.ancestry(p), a)
def test_ancestry_works_on_relative(self):
p = 'a/b/c'
a = ['a', 'a/b']
@ -136,17 +140,20 @@ class HelperTest(_common.TestCase):
def test_components_works_on_file(self):
p = '/a/b/c'
a = ['/', 'a', 'b', 'c']
a = ['/', 'a', 'b', 'c']
self.assertEqual(util.components(p), a)
def test_components_works_on_dir(self):
p = '/a/b/c/'
a = ['/', 'a', 'b', 'c']
a = ['/', 'a', 'b', 'c']
self.assertEqual(util.components(p), a)
def test_components_works_on_relative(self):
p = 'a/b/c'
a = ['a', 'b', 'c']
a = ['a', 'b', 'c']
self.assertEqual(util.components(p), a)
class AlbumFileTest(_common.TestCase):
def setUp(self):
super(AlbumFileTest, self).setUp()
@ -201,13 +208,14 @@ class AlbumFileTest(_common.TestCase):
self.ai.store()
self.assertTrue('testotherdir' in self.i.path)
class ArtFileTest(_common.TestCase):
def setUp(self):
super(ArtFileTest, self).setUp()
# Make library and item.
self.lib = beets.library.Library(':memory:')
self.libdir = os.path.abspath(os.path.join(self.temp_dir, 'testlibdir'))
self.libdir = os.path.join(self.temp_dir, 'testlibdir')
self.lib.directory = self.libdir
self.i = item(self.lib)
self.i.path = self.i.destination()
@ -326,7 +334,7 @@ class ArtFileTest(_common.TestCase):
newart = os.path.join(self.libdir, 'newart.jpg')
touch(newart)
os.chmod(newart, 0400) # read-only
os.chmod(newart, 0400) # read-only
try:
i2 = item()
@ -367,7 +375,7 @@ class ArtFileTest(_common.TestCase):
self.assertExists(oldartpath)
self.i.album = 'different_album'
self.i.album_id = None # detach from album
self.i.album_id = None # detach from album
self.i.move()
artpath = self.lib.albums()[0].artpath
@ -375,13 +383,14 @@ class ArtFileTest(_common.TestCase):
self.assertEqual(artpath, oldartpath)
self.assertExists(oldartpath)
class RemoveTest(_common.TestCase):
def setUp(self):
super(RemoveTest, self).setUp()
# Make library and item.
self.lib = beets.library.Library(':memory:')
self.libdir = os.path.abspath(os.path.join(self.temp_dir, 'testlibdir'))
self.libdir = os.path.join(self.temp_dir, 'testlibdir')
self.lib.directory = self.libdir
self.i = item(self.lib)
self.i.path = self.i.destination()
@ -419,7 +428,7 @@ class RemoveTest(_common.TestCase):
self.assertExists(self.libdir)
def test_removing_item_outside_of_library_deletes_nothing(self):
self.lib.directory = os.path.abspath(os.path.join(self.temp_dir, 'xxx'))
self.lib.directory = os.path.join(self.temp_dir, 'xxx')
parent = os.path.dirname(self.i.path)
self.i.remove(True)
self.assertExists(parent)
@ -434,6 +443,7 @@ class RemoveTest(_common.TestCase):
self.i.remove(True)
self.assertNotExists(parent)
# Tests that we can "delete" nonexistent files.
class SoftRemoveTest(_common.TestCase):
def setUp(self):
@ -452,6 +462,7 @@ class SoftRemoveTest(_common.TestCase):
except OSError:
self.fail('OSError when removing path')
class SafeMoveCopyTest(_common.TestCase):
def setUp(self):
super(SafeMoveCopyTest, self).setUp()
@ -488,6 +499,7 @@ class SafeMoveCopyTest(_common.TestCase):
util.copy(self.path, self.path)
self.assertExists(self.path)
class PruneTest(_common.TestCase):
def setUp(self):
super(PruneTest, self).setUp()
@ -507,6 +519,7 @@ class PruneTest(_common.TestCase):
self.assertExists(self.base)
self.assertNotExists(self.sub)
class WalkTest(_common.TestCase):
def setUp(self):
super(WalkTest, self).setUp()
@ -546,6 +559,7 @@ class WalkTest(_common.TestCase):
self.assertEqual(res[0],
(self.base, [], []))
class UniquePathTest(_common.TestCase):
def setUp(self):
super(UniquePathTest, self).setUp()
@ -573,6 +587,7 @@ class UniquePathTest(_common.TestCase):
path = util.unique_path(os.path.join(self.base, 'x.1.mp3'))
self.assertEqual(path, os.path.join(self.base, 'x.3.mp3'))
def suite():
return unittest.TestLoader().loadTestsFromName(__name__)

View file

@ -21,11 +21,11 @@ class IHatePluginTest(unittest.TestCase):
self.assertFalse(IHatePlugin.do_i_hate_this(task, match_pattern))
# 1 query match.
match_pattern = ["artist:bad_artist","artist:TestArtist"]
match_pattern = ["artist:bad_artist", "artist:TestArtist"]
self.assertTrue(IHatePlugin.do_i_hate_this(task, match_pattern))
# 2 query matches, either should trigger.
match_pattern = ["album:test","artist:testartist"]
match_pattern = ["album:test", "artist:testartist"]
self.assertTrue(IHatePlugin.do_i_hate_this(task, match_pattern))
# Query is blocked by AND clause.

View file

@ -18,6 +18,7 @@ from helper import TestHelper
from beets.library import Item
class KeyFinderTest(unittest.TestCase, TestHelper):
def setUp(self):

View file

@ -112,7 +112,7 @@ class LyricsPluginTest(unittest.TestCase):
""
)
text = """Look at all the shit that i done bought her
See lyrics ain't nothin
See lyrics ain't nothin
if the beat aint crackin"""
self.assertEqual(lyrics.remove_credits(text), text)

View file

@ -19,6 +19,7 @@ from _common import unittest
from beets.autotag import mb
from beets import config
class MBAlbumInfoTest(_common.TestCase):
def _make_release(self, date_str='2009', tracks=None, track_length=None,
track_artist=False):
@ -311,6 +312,7 @@ class MBAlbumInfoTest(_common.TestCase):
self.assertEqual(track.artist_sort, 'TRACK ARTIST SORT NAME')
self.assertEqual(track.artist_credit, 'TRACK ARTIST CREDIT')
class ParseIDTest(_common.TestCase):
def test_parse_id_correct(self):
id_string = "28e32c71-1450-463e-92bf-e0a46446fc11"
@ -328,6 +330,7 @@ class ParseIDTest(_common.TestCase):
out = mb._parse_id(id_url)
self.assertEqual(out, id_string)
class ArtistFlatteningTest(_common.TestCase):
def _credit_dict(self, suffix=''):
return {
@ -367,7 +370,8 @@ class ArtistFlatteningTest(_common.TestCase):
def test_alias(self):
credit_dict = self._credit_dict()
self._add_alias(credit_dict, suffix='en', locale='en', primary=True)
self._add_alias(credit_dict, suffix='en_GB', locale='en_GB', primary=True)
self._add_alias(credit_dict, suffix='en_GB', locale='en_GB',
primary=True)
self._add_alias(credit_dict, suffix='fr', locale='fr')
self._add_alias(credit_dict, suffix='fr_P', locale='fr', primary=True)
self._add_alias(credit_dict, suffix='pt_BR', locale='pt_BR')
@ -402,6 +406,7 @@ class ArtistFlatteningTest(_common.TestCase):
flat = mb._flatten_artist_credit([credit_dict])
self.assertEqual(flat, ('ALIASfr_P', 'ALIASSORTfr_P', 'CREDIT'))
def suite():
return unittest.TestLoader().loadTestsFromName(__name__)

View file

@ -24,9 +24,8 @@ import time
import _common
from _common import unittest
from beets.mediafile import MediaFile, MediaField, Image, \
MP3DescStorageStyle, StorageStyle, \
MP4StorageStyle, ASFStorageStyle, \
ImageType
MP3DescStorageStyle, StorageStyle, MP4StorageStyle, \
ASFStorageStyle, ImageType
from beets.library import Item
from beets.plugins import BeetsPlugin
@ -122,17 +121,18 @@ class ImageStructureTestMixin(ArtTestMixin):
self.assertEqual(len(mediafile.images), 2)
image = Image(data=self.png_data, desc='the composer',
type=ImageType.composer)
type=ImageType.composer)
mediafile.images += [image]
mediafile.save()
mediafile = MediaFile(mediafile.path)
self.assertEqual(len(mediafile.images), 3)
image = next(
(i for i in mediafile.images if i.desc == 'the composer'), None)
self.assertExtendedImageAttributes(image,
desc='the composer', type=ImageType.composer)
images = (i for i in mediafile.images if i.desc == 'the composer')
image = next(images, None)
self.assertExtendedImageAttributes(
image, desc='the composer', type=ImageType.composer
)
def assertExtendedImageAttributes(self, image, **kwargs):
"""Ignore extended image attributes in the base tests.
@ -152,7 +152,7 @@ class ExtendedImageStructureTestMixin(ImageStructureTestMixin):
self.assertEqual(len(mediafile.images), 2)
image = Image(data=self.tiff_data, desc='the composer',
type=ImageType.composer)
type=ImageType.composer)
mediafile.images += [image]
mediafile.save()
@ -161,9 +161,9 @@ class ExtendedImageStructureTestMixin(ImageStructureTestMixin):
# WMA does not preserve the order, so we have to work around this
image = filter(lambda i: i.mime_type == 'image/tiff',
mediafile.images)[0]
self.assertExtendedImageAttributes(image,
desc='the composer', type=ImageType.composer)
mediafile.images)[0]
self.assertExtendedImageAttributes(
image, desc='the composer', type=ImageType.composer)
class LazySaveTestMixin(object):
@ -264,6 +264,8 @@ field_extension = MediaField(
StorageStyle('customtag'),
ASFStorageStyle('customtag'),
)
class ExtendedFieldTestMixin(object):
def test_extended_field_write(self):
@ -326,29 +328,29 @@ class ReadWriteTestBase(ArtTestMixin, GenreListTestMixin,
"""
full_initial_tags = {
'title': u'full',
'artist': u'the artist',
'album': u'the album',
'genre': u'the genre',
'composer': u'the composer',
'grouping': u'the grouping',
'year': 2001,
'month': None,
'day': None,
'date': datetime.date(2001, 1, 1),
'track': 2,
'tracktotal': 3,
'disc': 4,
'disctotal': 5,
'lyrics': u'the lyrics',
'comments': u'the comments',
'bpm': 6,
'comp': True,
'mb_trackid': '8b882575-08a5-4452-a7a7-cbb8a1531f9e',
'mb_albumid': '9e873859-8aa4-4790-b985-5a953e8ef628',
'mb_artistid':'7cf0ea9d-86b9-4dad-ba9e-2355a64899ea',
'art': None,
'label': u'the label',
'title': u'full',
'artist': u'the artist',
'album': u'the album',
'genre': u'the genre',
'composer': u'the composer',
'grouping': u'the grouping',
'year': 2001,
'month': None,
'day': None,
'date': datetime.date(2001, 1, 1),
'track': 2,
'tracktotal': 3,
'disc': 4,
'disctotal': 5,
'lyrics': u'the lyrics',
'comments': u'the comments',
'bpm': 6,
'comp': True,
'mb_trackid': '8b882575-08a5-4452-a7a7-cbb8a1531f9e',
'mb_albumid': '9e873859-8aa4-4790-b985-5a953e8ef628',
'mb_artistid': '7cf0ea9d-86b9-4dad-ba9e-2355a64899ea',
'art': None,
'label': u'the label',
}
tag_fields = [
@ -493,11 +495,11 @@ class ReadWriteTestBase(ArtTestMixin, GenreListTestMixin,
self.assertEqual(mediafile.year, 2001)
self.assertEqual(mediafile.month, 1)
self.assertEqual(mediafile.day, 2)
self.assertEqual(mediafile.date, datetime.date(2001,1,2))
self.assertEqual(mediafile.date, datetime.date(2001, 1, 2))
self.assertEqual(mediafile.original_year, 1999)
self.assertEqual(mediafile.original_month, 12)
self.assertEqual(mediafile.original_day, 30)
self.assertEqual(mediafile.original_date, datetime.date(1999,12,30))
self.assertEqual(mediafile.original_date, datetime.date(1999, 12, 30))
def test_write_incomplete_date_components(self):
mediafile = self._mediafile_fixture('empty')
@ -510,23 +512,23 @@ class ReadWriteTestBase(ArtTestMixin, GenreListTestMixin,
self.assertEqual(mediafile.year, 2001)
self.assertIsNone(mediafile.month)
self.assertIsNone(mediafile.day)
self.assertEqual(mediafile.date, datetime.date(2001,1,1))
self.assertEqual(mediafile.date, datetime.date(2001, 1, 1))
def test_write_dates(self):
mediafile = self._mediafile_fixture('full')
mediafile.date = datetime.date(2001,1,2)
mediafile.original_date = datetime.date(1999,12,30)
mediafile.date = datetime.date(2001, 1, 2)
mediafile.original_date = datetime.date(1999, 12, 30)
mediafile.save()
mediafile = MediaFile(mediafile.path)
self.assertEqual(mediafile.year, 2001)
self.assertEqual(mediafile.month, 1)
self.assertEqual(mediafile.day, 2)
self.assertEqual(mediafile.date, datetime.date(2001,1,2))
self.assertEqual(mediafile.date, datetime.date(2001, 1, 2))
self.assertEqual(mediafile.original_year, 1999)
self.assertEqual(mediafile.original_month, 12)
self.assertEqual(mediafile.original_day, 30)
self.assertEqual(mediafile.original_date, datetime.date(1999,12,30))
self.assertEqual(mediafile.original_date, datetime.date(1999, 12, 30))
def test_write_packed(self):
mediafile = self._mediafile_fixture('empty')
@ -574,7 +576,6 @@ class ReadWriteTestBase(ArtTestMixin, GenreListTestMixin,
self.assertIsNotNone(getattr(mediafile, key))
for key in keys:
delattr(mediafile, key)
mediafile.save()
mediafile = MediaFile(mediafile.path)
@ -623,7 +624,6 @@ class ReadWriteTestBase(ArtTestMixin, GenreListTestMixin,
self.assertIsNone(mediafile.date)
self.assertIsNone(mediafile.year)
def assertTags(self, mediafile, tags):
errors = []
for key, value in tags.items():
@ -633,8 +633,7 @@ class ReadWriteTestBase(ArtTestMixin, GenreListTestMixin,
errors.append('Tag %s does not exist' % key)
else:
if value2 != value:
errors.append('Tag %s: %s != %s' %
(key, value2, value))
errors.append('Tag %s: %s != %s' % (key, value2, value))
if any(errors):
errors = ['Tags did not match'] + errors
self.fail('\n '.join(errors))
@ -706,6 +705,8 @@ class MP3Test(ReadWriteTestBase, PartialTestMixin,
'bitdepth': 0,
'channels': 1,
}
class MP4Test(ReadWriteTestBase, PartialTestMixin,
ImageStructureTestMixin, unittest.TestCase):
extension = 'm4a'
@ -734,6 +735,8 @@ class AlacTest(ReadWriteTestBase, unittest.TestCase):
'bitdepth': 0,
'channels': 0,
}
class MusepackTest(ReadWriteTestBase, unittest.TestCase):
extension = 'mpc'
audio_properties = {
@ -744,6 +747,8 @@ class MusepackTest(ReadWriteTestBase, unittest.TestCase):
'bitdepth': 0,
'channels': 2,
}
class WMATest(ReadWriteTestBase, ExtendedImageStructureTestMixin,
unittest.TestCase):
extension = 'wma'
@ -765,6 +770,7 @@ class WMATest(ReadWriteTestBase, ExtendedImageStructureTestMixin,
mediafile = MediaFile(mediafile.path)
self.assertIn(mediafile.genre, [u'one', u'two'])
class OggTest(ReadWriteTestBase, ExtendedImageStructureTestMixin,
unittest.TestCase):
extension = 'ogg'
@ -780,7 +786,7 @@ class OggTest(ReadWriteTestBase, ExtendedImageStructureTestMixin,
def test_read_date_from_year_tag(self):
mediafile = self._mediafile_fixture('year')
self.assertEqual(mediafile.year, 2000)
self.assertEqual(mediafile.date, datetime.date(2000,1,1))
self.assertEqual(mediafile.date, datetime.date(2000, 1, 1))
def test_write_date_to_year_tag(self):
mediafile = self._mediafile_fixture('empty')

View file

@ -17,6 +17,7 @@
from _common import unittest
from beetsplug import bpd
class CommandParseTest(unittest.TestCase):
def test_no_args(self):
s = ur'command'
@ -58,9 +59,9 @@ class CommandParseTest(unittest.TestCase):
c = bpd.Command(s)
self.assertEqual(c.args, [u'hello \ there'])
def suite():
return unittest.TestLoader().loadTestsFromName(__name__)
if __name__ == '__main__':
unittest.main(defaultTest='suite')

View file

@ -13,15 +13,9 @@
# included in all copies or substantial portions of the Software.
import os
import shutil
from glob import glob
import _common
from _common import unittest
from helper import TestHelper, has_program
from beets.library import Item, Album
from beets.mediafile import MediaFile
try:

View file

@ -17,6 +17,7 @@
from _common import unittest
from beets.util import functemplate
def _normexpr(expr):
"""Normalize an Expression object's parts, collapsing multiple
adjacent text blocks and removing empty text blocks. Generates a
@ -38,10 +39,12 @@ def _normexpr(expr):
if text:
yield text
def _normparse(text):
"""Parse a template and then normalize the resulting Expression."""
return _normexpr(functemplate._parse(text))
class ParseTest(unittest.TestCase):
def test_empty_string(self):
self.assertEqual(list(_normparse(u'')), [])
@ -139,7 +142,8 @@ class ParseTest(unittest.TestCase):
self.assertEqual(list(_normparse(u'foo %bar baz')), [u'foo %bar baz'])
def test_call_with_unclosed_args(self):
self.assertEqual(list(_normparse(u'foo %bar{ baz')), [u'foo %bar{ baz'])
self.assertEqual(list(_normparse(u'foo %bar{ baz')),
[u'foo %bar{ baz'])
def test_call_with_unclosed_multiple_args(self):
self.assertEqual(list(_normparse(u'foo %bar{bar,bar baz')),
@ -203,6 +207,7 @@ class ParseTest(unittest.TestCase):
self._assert_call(arg_parts[0], u"bar", 1)
self.assertEqual(list(_normexpr(arg_parts[0].args[0])), [u'baz'])
class EvalTest(unittest.TestCase):
def _eval(self, template):
values = {
@ -255,6 +260,7 @@ class EvalTest(unittest.TestCase):
def test_function_call_with_empty_arg(self):
self.assertEqual(self._eval(u"%len{}"), u"0")
def suite():
return unittest.TestLoader().loadTestsFromName(__name__)

View file

@ -10,34 +10,34 @@ class ThePluginTest(_common.TestCase):
def test_unthe_with_default_patterns(self):
self.assertEqual(ThePlugin().unthe('', PATTERN_THE), '')
self.assertEqual(ThePlugin().unthe('The Something', PATTERN_THE),
self.assertEqual(ThePlugin().unthe('The Something', PATTERN_THE),
'Something, The')
self.assertEqual(ThePlugin().unthe('The The', PATTERN_THE),
self.assertEqual(ThePlugin().unthe('The The', PATTERN_THE),
'The, The')
self.assertEqual(ThePlugin().unthe('The The', PATTERN_THE),
self.assertEqual(ThePlugin().unthe('The The', PATTERN_THE),
'The, The')
self.assertEqual(ThePlugin().unthe('The The X', PATTERN_THE),
self.assertEqual(ThePlugin().unthe('The The X', PATTERN_THE),
'The X, The')
self.assertEqual(ThePlugin().unthe('the The', PATTERN_THE),
self.assertEqual(ThePlugin().unthe('the The', PATTERN_THE),
'The, the')
self.assertEqual(ThePlugin().unthe('Protected The', PATTERN_THE),
self.assertEqual(ThePlugin().unthe('Protected The', PATTERN_THE),
'Protected The')
self.assertEqual(ThePlugin().unthe('A Boy', PATTERN_A),
self.assertEqual(ThePlugin().unthe('A Boy', PATTERN_A),
'Boy, A')
self.assertEqual(ThePlugin().unthe('a girl', PATTERN_A),
self.assertEqual(ThePlugin().unthe('a girl', PATTERN_A),
'girl, a')
self.assertEqual(ThePlugin().unthe('An Apple', PATTERN_A),
self.assertEqual(ThePlugin().unthe('An Apple', PATTERN_A),
'Apple, An')
self.assertEqual(ThePlugin().unthe('An A Thing', PATTERN_A),
self.assertEqual(ThePlugin().unthe('An A Thing', PATTERN_A),
'A Thing, An')
self.assertEqual(ThePlugin().unthe('the An Arse', PATTERN_A),
self.assertEqual(ThePlugin().unthe('the An Arse', PATTERN_A),
'the An Arse')
def test_unthe_with_strip(self):
config['the']['strip'] = True
self.assertEqual(ThePlugin().unthe('The Something', PATTERN_THE),
'Something')
self.assertEqual(ThePlugin().unthe('An A', PATTERN_A), 'A')
self.assertEqual(ThePlugin().unthe('The Something', PATTERN_THE),
'Something')
self.assertEqual(ThePlugin().unthe('An A', PATTERN_A), 'A')
def test_template_function_with_defaults(self):
ThePlugin().patterns = [PATTERN_THE, PATTERN_A]
@ -48,7 +48,7 @@ class ThePluginTest(_common.TestCase):
def test_custom_pattern(self):
config['the']['patterns'] = [u'^test\s']
config['the']['format'] = FORMAT
self.assertEqual(ThePlugin().the_template_func('test passed'),
self.assertEqual(ThePlugin().the_template_func('test passed'),
'passed, test')
def test_custom_format(self):

View file

@ -18,6 +18,7 @@ from _common import unittest
from beets import library
from beets import vfs
class VFSTest(_common.TestCase):
def setUp(self):
super(VFSTest, self).setUp()
@ -37,6 +38,7 @@ class VFSTest(_common.TestCase):
self.assertEqual(self.tree.dirs['albums'].dirs['the album'].
files['the title'], 2)
def suite():
return unittest.TestLoader().loadTestsFromName(__name__)

View file

@ -3,7 +3,6 @@
from _common import unittest
import _common
import json
import beets
import beetsplug
from beets.library import Item, Album
beetsplug.__path__ = ['./beetsplug', '../beetsplug']
@ -101,8 +100,6 @@ class WebPluginTest(_common.LibTestCase):
self.assertEqual(response.status_code, 200)
self.assertEqual(len(response.json['albums']), 2)
def suite():
return unittest.TestLoader().loadTestsFromName(__name__)

View file

@ -31,6 +31,7 @@ try:
except KeyError:
pass
def suite():
s = unittest.TestSuite()
# Get the suite() of every module in this directory beginning with