diff --git a/test/plugins/test_advancedrewrite.py b/test/plugins/test_advancedrewrite.py index 71f92c4dd..0d491f8a7 100644 --- a/test/plugins/test_advancedrewrite.py +++ b/test/plugins/test_advancedrewrite.py @@ -17,13 +17,13 @@ import unittest -from beets.test.helper import TestHelper +from beets.test.helper import BeetsTestCase from beets.ui import UserError PLUGIN_NAME = "advancedrewrite" -class AdvancedRewritePluginTest(unittest.TestCase, TestHelper): +class AdvancedRewritePluginTest(BeetsTestCase): def setUp(self): self.setup_beets() diff --git a/test/plugins/test_albumtypes.py b/test/plugins/test_albumtypes.py index 6b3b48d10..4a32db382 100644 --- a/test/plugins/test_albumtypes.py +++ b/test/plugins/test_albumtypes.py @@ -15,15 +15,14 @@ """Tests for the 'albumtypes' plugin.""" -import unittest from typing import Sequence, Tuple from beets.autotag.mb import VARIOUS_ARTISTS_ID -from beets.test.helper import TestHelper +from beets.test.helper import BeetsTestCase from beetsplug.albumtypes import AlbumTypesPlugin -class AlbumTypesPluginTest(unittest.TestCase, TestHelper): +class AlbumTypesPluginTest(BeetsTestCase): """Tests for albumtypes plugin.""" def setUp(self): diff --git a/test/plugins/test_bareasc.py b/test/plugins/test_bareasc.py index feb99953c..02af15f8d 100644 --- a/test/plugins/test_bareasc.py +++ b/test/plugins/test_bareasc.py @@ -6,10 +6,10 @@ import unittest from beets import logging -from beets.test.helper import TestHelper, capture_stdout +from beets.test.helper import BeetsTestCase, capture_stdout -class BareascPluginTest(unittest.TestCase, TestHelper): +class BareascPluginTest(BeetsTestCase): """Test bare ASCII query matching.""" def setUp(self): diff --git a/test/plugins/test_bucket.py b/test/plugins/test_bucket.py index 4f43f5ef5..adae967b2 100644 --- a/test/plugins/test_bucket.py +++ b/test/plugins/test_bucket.py @@ -18,11 +18,11 @@ import unittest from beets import config, ui -from beets.test.helper import TestHelper +from beets.test.helper import BeetsTestCase from beetsplug import bucket -class BucketPluginTest(unittest.TestCase, TestHelper): +class BucketPluginTest(BeetsTestCase): def setUp(self): self.setup_beets() self.plugin = bucket.BucketPlugin() diff --git a/test/plugins/test_edit.py b/test/plugins/test_edit.py index 7c1fcf0b3..32095748f 100644 --- a/test/plugins/test_edit.py +++ b/test/plugins/test_edit.py @@ -21,9 +21,9 @@ from beets.library import Item from beets.test import _common from beets.test.helper import ( AutotagStub, + BeetsTestCase, ImportHelper, TerminalImportSessionSetup, - TestHelper, control_stdin, ) from beetsplug.edit import EditPlugin @@ -115,7 +115,7 @@ class EditMixin: @_common.slow_test() @patch("beets.library.Item.write") -class EditCommandTest(unittest.TestCase, TestHelper, EditMixin): +class EditCommandTest(BeetsTestCase, EditMixin): """Black box tests for `beetsplug.edit`. Command line interaction is simulated using `test.helper.control_stdin()`, and yaml editing via an external editor is simulated using `ModifyFileMocker`. @@ -323,11 +323,7 @@ class EditCommandTest(unittest.TestCase, TestHelper, EditMixin): @_common.slow_test() class EditDuringImporterTest( - TerminalImportSessionSetup, - unittest.TestCase, - ImportHelper, - TestHelper, - EditMixin, + TerminalImportSessionSetup, BeetsTestCase, ImportHelper, EditMixin ): """TODO""" diff --git a/test/plugins/test_embedart.py b/test/plugins/test_embedart.py index d280fefd9..4d78582b5 100644 --- a/test/plugins/test_embedart.py +++ b/test/plugins/test_embedart.py @@ -24,7 +24,7 @@ from mediafile import MediaFile from beets import art, config, logging, ui from beets.test import _common -from beets.test.helper import FetchImageHelper, TestHelper +from beets.test.helper import BeetsTestCase, FetchImageHelper from beets.util import bytestring_path, displayable_path, syspath from beets.util.artresizer import ArtResizer @@ -40,7 +40,7 @@ def require_artresizer_compare(test): return wrapper -class EmbedartCliTest(TestHelper, FetchImageHelper): +class EmbedartCliTest(FetchImageHelper, BeetsTestCase): small_artpath = os.path.join(_common.RSRC, b"image-2x3.jpg") abbey_artpath = os.path.join(_common.RSRC, b"abbey.jpg") abbey_similarpath = os.path.join(_common.RSRC, b"abbey-similar.jpg") diff --git a/test/plugins/test_embyupdate.py b/test/plugins/test_embyupdate.py index 57859f5ac..a2d527c21 100644 --- a/test/plugins/test_embyupdate.py +++ b/test/plugins/test_embyupdate.py @@ -2,11 +2,11 @@ import unittest import responses -from beets.test.helper import TestHelper +from beets.test.helper import BeetsTestCase from beetsplug import embyupdate -class EmbyUpdateTest(unittest.TestCase, TestHelper): +class EmbyUpdateTest(BeetsTestCase): def setUp(self): self.setup_beets() self.load_plugins("embyupdate") diff --git a/test/plugins/test_export.py b/test/plugins/test_export.py index b949fe4f8..746293130 100644 --- a/test/plugins/test_export.py +++ b/test/plugins/test_export.py @@ -22,10 +22,10 @@ import unittest from xml.etree import ElementTree from xml.etree.ElementTree import Element -from beets.test.helper import TestHelper +from beets.test.helper import BeetsTestCase -class ExportPluginTest(unittest.TestCase, TestHelper): +class ExportPluginTest(BeetsTestCase): def setUp(self): self.setup_beets() self.load_plugins("export") diff --git a/test/plugins/test_fetchart.py b/test/plugins/test_fetchart.py index b3307472a..61075c792 100644 --- a/test/plugins/test_fetchart.py +++ b/test/plugins/test_fetchart.py @@ -19,10 +19,10 @@ import sys import unittest from beets import util -from beets.test.helper import TestHelper +from beets.test.helper import BeetsTestCase -class FetchartCliTest(unittest.TestCase, TestHelper): +class FetchartCliTest(BeetsTestCase): def setUp(self): self.setup_beets() self.load_plugins("fetchart") diff --git a/test/plugins/test_ftintitle.py b/test/plugins/test_ftintitle.py index 60dd3668e..923bf14ef 100644 --- a/test/plugins/test_ftintitle.py +++ b/test/plugins/test_ftintitle.py @@ -17,11 +17,11 @@ import unittest -from beets.test.helper import TestHelper +from beets.test.helper import BeetsTestCase from beetsplug import ftintitle -class FtInTitlePluginFunctional(unittest.TestCase, TestHelper): +class FtInTitlePluginFunctional(BeetsTestCase): def setUp(self): """Set up configuration""" self.setup_beets() diff --git a/test/plugins/test_info.py b/test/plugins/test_info.py index bfba739c5..bb8f97cf0 100644 --- a/test/plugins/test_info.py +++ b/test/plugins/test_info.py @@ -17,11 +17,11 @@ import unittest from mediafile import MediaFile -from beets.test.helper import TestHelper +from beets.test.helper import BeetsTestCase from beets.util import displayable_path -class InfoTest(unittest.TestCase, TestHelper): +class InfoTest(BeetsTestCase): def setUp(self): self.setup_beets() self.load_plugins("info") diff --git a/test/plugins/test_ipfs.py b/test/plugins/test_ipfs.py index 65b713101..dcea85288 100644 --- a/test/plugins/test_ipfs.py +++ b/test/plugins/test_ipfs.py @@ -18,13 +18,13 @@ from unittest.mock import Mock, patch from beets import library from beets.test import _common -from beets.test.helper import TestHelper +from beets.test.helper import BeetsTestCase from beets.util import _fsencoding, bytestring_path from beetsplug.ipfs import IPFSPlugin @patch("beets.util.command_output", Mock()) -class IPFSPluginTest(unittest.TestCase, TestHelper): +class IPFSPluginTest(BeetsTestCase): def setUp(self): self.setup_beets() self.load_plugins("ipfs") diff --git a/test/plugins/test_keyfinder.py b/test/plugins/test_keyfinder.py index 8509fe357..329733b47 100644 --- a/test/plugins/test_keyfinder.py +++ b/test/plugins/test_keyfinder.py @@ -18,11 +18,11 @@ from unittest.mock import patch from beets import util from beets.library import Item -from beets.test.helper import TestHelper +from beets.test.helper import BeetsTestCase @patch("beets.util.command_output") -class KeyFinderTest(unittest.TestCase, TestHelper): +class KeyFinderTest(BeetsTestCase): def setUp(self): self.setup_beets() self.load_plugins("keyfinder") diff --git a/test/plugins/test_lastgenre.py b/test/plugins/test_lastgenre.py index 6f250c3ba..bf36039df 100644 --- a/test/plugins/test_lastgenre.py +++ b/test/plugins/test_lastgenre.py @@ -20,11 +20,11 @@ from unittest.mock import Mock from beets import config from beets.test import _common -from beets.test.helper import TestHelper +from beets.test.helper import BeetsTestCase from beetsplug import lastgenre -class LastGenrePluginTest(unittest.TestCase, TestHelper): +class LastGenrePluginTest(BeetsTestCase): def setUp(self): self.setup_beets() self.plugin = lastgenre.LastGenrePlugin() diff --git a/test/plugins/test_limit.py b/test/plugins/test_limit.py index 0ed6c9202..1ea57894c 100644 --- a/test/plugins/test_limit.py +++ b/test/plugins/test_limit.py @@ -15,10 +15,10 @@ import unittest -from beets.test.helper import TestHelper +from beets.test.helper import BeetsTestCase -class LimitPluginTest(unittest.TestCase, TestHelper): +class LimitPluginTest(BeetsTestCase): """Unit tests for LimitPlugin Note: query prefix tests do not work correctly with `run_with_output`. diff --git a/test/plugins/test_mbsubmit.py b/test/plugins/test_mbsubmit.py index 40024bc71..e0821557b 100644 --- a/test/plugins/test_mbsubmit.py +++ b/test/plugins/test_mbsubmit.py @@ -17,16 +17,16 @@ import unittest from beets.test.helper import ( AutotagStub, + BeetsTestCase, ImportHelper, TerminalImportSessionSetup, - TestHelper, capture_stdout, control_stdin, ) class MBSubmitPluginTest( - TerminalImportSessionSetup, unittest.TestCase, ImportHelper, TestHelper + TerminalImportSessionSetup, BeetsTestCase, ImportHelper ): def setUp(self): self.setup_beets() diff --git a/test/plugins/test_mbsync.py b/test/plugins/test_mbsync.py index bc41b3464..cc6837c51 100644 --- a/test/plugins/test_mbsync.py +++ b/test/plugins/test_mbsync.py @@ -19,14 +19,14 @@ from unittest.mock import patch from beets import config from beets.library import Item from beets.test.helper import ( - TestHelper, + BeetsTestCase, capture_log, generate_album_info, generate_track_info, ) -class MbsyncCliTest(unittest.TestCase, TestHelper): +class MbsyncCliTest(BeetsTestCase): def setUp(self): self.setup_beets() self.load_plugins("mbsync") diff --git a/test/plugins/test_mpdstats.py b/test/plugins/test_mpdstats.py index 40804fabb..1dc9b3a6e 100644 --- a/test/plugins/test_mpdstats.py +++ b/test/plugins/test_mpdstats.py @@ -18,11 +18,11 @@ from unittest.mock import ANY, Mock, call, patch from beets import util from beets.library import Item -from beets.test.helper import TestHelper +from beets.test.helper import BeetsTestCase from beetsplug.mpdstats import MPDStats -class MPDStatsTest(unittest.TestCase, TestHelper): +class MPDStatsTest(BeetsTestCase): def setUp(self): self.setup_beets() self.load_plugins("mpdstats") diff --git a/test/plugins/test_parentwork.py b/test/plugins/test_parentwork.py index 377784983..372c1ed2f 100644 --- a/test/plugins/test_parentwork.py +++ b/test/plugins/test_parentwork.py @@ -20,7 +20,7 @@ import unittest from unittest.mock import patch from beets.library import Item -from beets.test.helper import TestHelper +from beets.test.helper import BeetsTestCase from beetsplug import parentwork work = { @@ -85,7 +85,7 @@ def mock_workid_response(mbid, includes): return p_work -class ParentWorkIntegrationTest(unittest.TestCase, TestHelper): +class ParentWorkIntegrationTest(BeetsTestCase): def setUp(self): """Set up configuration""" self.setup_beets() @@ -180,7 +180,7 @@ class ParentWorkIntegrationTest(unittest.TestCase, TestHelper): ) -class ParentWorkTest(unittest.TestCase, TestHelper): +class ParentWorkTest(BeetsTestCase): def setUp(self): """Set up configuration""" self.setup_beets() diff --git a/test/plugins/test_permissions.py b/test/plugins/test_permissions.py index d10a873cd..82fb3c443 100644 --- a/test/plugins/test_permissions.py +++ b/test/plugins/test_permissions.py @@ -7,7 +7,7 @@ import unittest from unittest.mock import Mock, patch from beets.test._common import touch -from beets.test.helper import TestHelper +from beets.test.helper import BeetsTestCase from beets.util import displayable_path from beetsplug.permissions import ( check_permissions, @@ -16,7 +16,7 @@ from beetsplug.permissions import ( ) -class PermissionsPluginTest(unittest.TestCase, TestHelper): +class PermissionsPluginTest(BeetsTestCase): def setUp(self): self.setup_beets() self.load_plugins("permissions") diff --git a/test/plugins/test_play.py b/test/plugins/test_play.py index ac60e8281..8dcf9d044 100644 --- a/test/plugins/test_play.py +++ b/test/plugins/test_play.py @@ -20,14 +20,14 @@ import sys import unittest from unittest.mock import ANY, patch -from beets.test.helper import CleanupModulesMixin, TestHelper, control_stdin +from beets.test.helper import BeetsTestCase, CleanupModulesMixin, control_stdin from beets.ui import UserError from beets.util import open_anything from beetsplug.play import PlayPlugin @patch("beetsplug.play.util.interactive_open") -class PlayPluginTest(CleanupModulesMixin, unittest.TestCase, TestHelper): +class PlayPluginTest(CleanupModulesMixin, BeetsTestCase): modules = (PlayPlugin.__module__,) def setUp(self): diff --git a/test/plugins/test_player.py b/test/plugins/test_player.py index f7c9c892d..486808d33 100644 --- a/test/plugins/test_player.py +++ b/test/plugins/test_player.py @@ -32,7 +32,7 @@ from unittest import mock import confuse import yaml -from beets.test.helper import TestHelper +from beets.test.helper import BeetsTestCase from beets.util import bluelet from beetsplug import bpd @@ -277,7 +277,7 @@ def start_server(args, assigned_port, listener_patch): beets.ui.main(args) -class BPDTestHelper(unittest.TestCase, TestHelper): +class BPDTestHelper(BeetsTestCase): def setUp(self): self.setup_beets(disk=True) self.load_plugins("bpd") diff --git a/test/plugins/test_playlist.py b/test/plugins/test_playlist.py index a4e6a91f9..63018ef68 100644 --- a/test/plugins/test_playlist.py +++ b/test/plugins/test_playlist.py @@ -18,10 +18,11 @@ import unittest from shlex import quote import beets -from beets.test import _common, helper +from beets.test import _common +from beets.test.helper import BeetsTestCase -class PlaylistTestHelper(helper.TestHelper): +class PlaylistTestCase(BeetsTestCase): def setUp(self): self.setup_beets() self.lib = beets.library.Library(":memory:") @@ -88,7 +89,7 @@ class PlaylistTestHelper(helper.TestHelper): self.teardown_beets() -class PlaylistQueryTestHelper(PlaylistTestHelper): +class PlaylistQueryTest: def test_name_query_with_absolute_paths_in_playlist(self): q = "playlist:absolute" results = self.lib.items(q) @@ -166,7 +167,7 @@ class PlaylistQueryTestHelper(PlaylistTestHelper): self.assertEqual(set(results), set()) -class PlaylistTestRelativeToLib(PlaylistQueryTestHelper, unittest.TestCase): +class PlaylistTestRelativeToLib(PlaylistQueryTest, PlaylistTestCase): def setup_test(self): with open(os.path.join(self.playlist_dir, "absolute.m3u"), "w") as f: f.write( @@ -187,7 +188,7 @@ class PlaylistTestRelativeToLib(PlaylistQueryTestHelper, unittest.TestCase): self.config["playlist"]["relative_to"] = "library" -class PlaylistTestRelativeToDir(PlaylistQueryTestHelper, unittest.TestCase): +class PlaylistTestRelativeToDir(PlaylistQueryTest, PlaylistTestCase): def setup_test(self): with open(os.path.join(self.playlist_dir, "absolute.m3u"), "w") as f: f.write( @@ -208,7 +209,7 @@ class PlaylistTestRelativeToDir(PlaylistQueryTestHelper, unittest.TestCase): self.config["playlist"]["relative_to"] = self.music_dir -class PlaylistTestRelativeToPls(PlaylistQueryTestHelper, unittest.TestCase): +class PlaylistTestRelativeToPls(PlaylistQueryTest, PlaylistTestCase): def setup_test(self): with open(os.path.join(self.playlist_dir, "absolute.m3u"), "w") as f: f.write( @@ -251,7 +252,7 @@ class PlaylistTestRelativeToPls(PlaylistQueryTestHelper, unittest.TestCase): self.config["playlist"]["playlist_dir"] = self.playlist_dir -class PlaylistUpdateTestHelper(PlaylistTestHelper): +class PlaylistUpdateTest: def setup_test(self): with open(os.path.join(self.playlist_dir, "absolute.m3u"), "w") as f: f.write( @@ -273,7 +274,7 @@ class PlaylistUpdateTestHelper(PlaylistTestHelper): self.config["playlist"]["relative_to"] = "library" -class PlaylistTestItemMoved(PlaylistUpdateTestHelper, unittest.TestCase): +class PlaylistTestItemMoved(PlaylistUpdateTest, PlaylistTestCase): def test_item_moved(self): # Emit item_moved event for an item that is in a playlist results = self.lib.items( @@ -339,7 +340,7 @@ class PlaylistTestItemMoved(PlaylistUpdateTestHelper, unittest.TestCase): ) -class PlaylistTestItemRemoved(PlaylistUpdateTestHelper, unittest.TestCase): +class PlaylistTestItemRemoved(PlaylistUpdateTest, PlaylistTestCase): def test_item_removed(self): # Emit item_removed event for an item that is in a playlist results = self.lib.items( diff --git a/test/plugins/test_plexupdate.py b/test/plugins/test_plexupdate.py index f45ea9d8f..e8e7b83b4 100644 --- a/test/plugins/test_plexupdate.py +++ b/test/plugins/test_plexupdate.py @@ -2,11 +2,11 @@ import unittest import responses -from beets.test.helper import TestHelper +from beets.test.helper import BeetsTestCase from beetsplug.plexupdate import get_music_section, update_plex -class PlexUpdateTest(unittest.TestCase, TestHelper): +class PlexUpdateTest(BeetsTestCase): def add_response_get_music_section(self, section_name="Music"): """Create response for mocking the get_music_section function.""" diff --git a/test/plugins/test_random.py b/test/plugins/test_random.py index b371fa832..842e018eb 100644 --- a/test/plugins/test_random.py +++ b/test/plugins/test_random.py @@ -24,7 +24,7 @@ from beets import random from beets.test.helper import TestHelper -class RandomTest(unittest.TestCase, TestHelper): +class RandomTest(TestHelper, unittest.TestCase): def setUp(self): self.lib = None self.artist1 = "Artist 1" @@ -37,9 +37,6 @@ class RandomTest(unittest.TestCase, TestHelper): self.random_gen = Random() self.random_gen.seed(12345) - def tearDown(self): - pass - def _stats(self, data): mean = sum(data) / len(data) stdev = math.sqrt(sum((p - mean) ** 2 for p in data) / (len(data) - 1)) diff --git a/test/plugins/test_thumbnails.py b/test/plugins/test_thumbnails.py index 951fc6e8c..942b91db0 100644 --- a/test/plugins/test_thumbnails.py +++ b/test/plugins/test_thumbnails.py @@ -19,7 +19,7 @@ from shutil import rmtree from tempfile import mkdtemp from unittest.mock import Mock, call, patch -from beets.test.helper import TestHelper +from beets.test.helper import BeetsTestCase from beets.util import bytestring_path, syspath from beetsplug.thumbnails import ( LARGE_DIR, @@ -30,7 +30,7 @@ from beetsplug.thumbnails import ( ) -class ThumbnailsTest(unittest.TestCase, TestHelper): +class ThumbnailsTest(BeetsTestCase): def setUp(self): self.setup_beets() diff --git a/test/plugins/test_types_plugin.py b/test/plugins/test_types_plugin.py index 8225c3302..54766e7aa 100644 --- a/test/plugins/test_types_plugin.py +++ b/test/plugins/test_types_plugin.py @@ -19,10 +19,10 @@ from datetime import datetime from confuse import ConfigValueError -from beets.test.helper import TestHelper +from beets.test.helper import BeetsTestCase -class TypesPluginTest(unittest.TestCase, TestHelper): +class TypesPluginTest(BeetsTestCase): def setUp(self): self.setup_beets() self.load_plugins("types") diff --git a/test/plugins/test_zero.py b/test/plugins/test_zero.py index 378e419d5..1925bd464 100644 --- a/test/plugins/test_zero.py +++ b/test/plugins/test_zero.py @@ -5,12 +5,12 @@ import unittest from mediafile import MediaFile from beets.library import Item -from beets.test.helper import TestHelper, control_stdin +from beets.test.helper import BeetsTestCase, control_stdin from beets.util import syspath from beetsplug.zero import ZeroPlugin -class ZeroPluginTest(unittest.TestCase, TestHelper): +class ZeroPluginTest(BeetsTestCase): def setUp(self): self.setup_beets() self.config["zero"] = { diff --git a/test/test_config_command.py b/test/test_config_command.py index 0b122cf1c..72a0affd9 100644 --- a/test/test_config_command.py +++ b/test/test_config_command.py @@ -5,10 +5,10 @@ from unittest.mock import patch import yaml from beets import config, ui -from beets.test.helper import TestHelper +from beets.test.helper import BeetsTestCase -class ConfigCommandTest(unittest.TestCase, TestHelper): +class ConfigCommandTest(BeetsTestCase): def setUp(self): self.setup_beets() for k in ("VISUAL", "EDITOR"): diff --git a/test/test_importer.py b/test/test_importer.py index 8c2b474e0..f3a255e4e 100644 --- a/test/test_importer.py +++ b/test/test_importer.py @@ -38,7 +38,6 @@ from beets.test.helper import ( AutotagStub, BeetsTestCase, ImportHelper, - TestHelper, capture_log, has_program, ) @@ -1171,7 +1170,7 @@ def match_album_mock(*args, **kwargs): @patch("beets.autotag.mb.match_album", Mock(side_effect=match_album_mock)) -class ImportDuplicateAlbumTest(unittest.TestCase, TestHelper): +class ImportDuplicateAlbumTest(BeetsTestCase): def setUp(self): self.setup_beets() @@ -1293,7 +1292,7 @@ def match_track_mock(*args, **kwargs): @patch("beets.autotag.mb.match_track", Mock(side_effect=match_track_mock)) -class ImportDuplicateSingletonTest(unittest.TestCase, TestHelper): +class ImportDuplicateSingletonTest(BeetsTestCase): def setUp(self): self.setup_beets() @@ -1382,7 +1381,7 @@ class TagLogTest(BeetsTestCase): self.assertIn("status caf\xe9", sio.getvalue()) -class ResumeImportTest(unittest.TestCase, TestHelper): +class ResumeImportTest(BeetsTestCase): def setUp(self): self.setup_beets() @@ -1433,7 +1432,7 @@ class ResumeImportTest(unittest.TestCase, TestHelper): self.assertIsNotNone(self.lib.items("title:track 1").get()) -class IncrementalImportTest(unittest.TestCase, TestHelper): +class IncrementalImportTest(BeetsTestCase): def setUp(self): self.setup_beets() self.config["import"]["incremental"] = True diff --git a/test/test_library.py b/test/test_library.py index 179927dc9..7d27604d6 100644 --- a/test/test_library.py +++ b/test/test_library.py @@ -32,7 +32,7 @@ import beets.library from beets import config, plugins, util from beets.test import _common from beets.test._common import item -from beets.test.helper import BeetsTestCase, LibTestCase, TestHelper +from beets.test.helper import BeetsTestCase, LibTestCase from beets.util import bytestring_path, syspath # Shortcut to path normalization. @@ -1267,7 +1267,7 @@ class UnicodePathTest(LibTestCase): self.i.write() -class WriteTest(unittest.TestCase, TestHelper): +class WriteTest(BeetsTestCase): def setUp(self): self.setup_beets() @@ -1355,7 +1355,7 @@ class ItemReadTest(unittest.TestCase): item.read("/thisfiledoesnotexist") -class FilesizeTest(unittest.TestCase, TestHelper): +class FilesizeTest(BeetsTestCase): def setUp(self): self.setup_beets() diff --git a/test/test_logging.py b/test/test_logging.py index db7f33bfd..0cd3d4821 100644 --- a/test/test_logging.py +++ b/test/test_logging.py @@ -47,7 +47,7 @@ class LoggingTest(BeetsTestCase): self.assertTrue(stream.getvalue(), "foo oof baz") -class LoggingLevelTest(unittest.TestCase, helper.TestHelper): +class LoggingLevelTest(BeetsTestCase): class DummyModule: class DummyPlugin(plugins.BeetsPlugin): def __init__(self): diff --git a/test/test_plugins.py b/test/test_plugins.py index 707c7db31..284cee041 100644 --- a/test/test_plugins.py +++ b/test/test_plugins.py @@ -35,9 +35,9 @@ from beets.test import helper from beets.test._common import RSRC from beets.test.helper import ( AutotagStub, + BeetsTestCase, ImportHelper, TerminalImportSessionSetup, - TestHelper, ) from beets.util import bytestring_path, displayable_path, syspath from beets.util.id_extractors import ( @@ -47,7 +47,7 @@ from beets.util.id_extractors import ( ) -class PluginLoaderTestCase(unittest.TestCase, TestHelper): +class PluginLoaderTestCase(BeetsTestCase): def setup_plugin_loader(self): # FIXME the mocking code is horrific, but this is the lowest and # earliest level of the plugin mechanism we can hook into. diff --git a/test/test_query.py b/test/test_query.py index 897b247dc..a5a2091bf 100644 --- a/test/test_query.py +++ b/test/test_query.py @@ -30,7 +30,7 @@ from beets.dbcore.query import ( ParsingError, ) from beets.library import Item, Library -from beets.test import _common, helper +from beets.test import _common from beets.test.helper import BeetsTestCase, LibTestCase from beets.util import syspath @@ -39,7 +39,13 @@ from beets.util import syspath WIN32_NO_IMPLICIT_PATHS = "Implicit paths are not supported on Windows" -class TestHelper(helper.TestHelper): +class AssertsMixin: + def assert_items_matched(self, results, titles): + self.assertEqual({i.title for i in results}, set(titles)) + + def assert_albums_matched(self, results, albums): + self.assertEqual({a.album for a in results}, set(albums)) + def assertInResult(self, item, results): # noqa result_ids = [i.id for i in results] self.assertIn(item.id, result_ids) @@ -83,14 +89,6 @@ class AnyFieldQueryTest(LibTestCase): self.assertNotEqual(q1, q2) -class AssertsMixin: - def assert_items_matched(self, results, titles): - self.assertEqual({i.title for i in results}, set(titles)) - - def assert_albums_matched(self, results, albums): - self.assertEqual({a.album for a in results}, set(albums)) - - # A test case class providing a library with some dummy data and some # assertions involving that data. class DummyDataTestCase(BeetsTestCase, AssertsMixin): @@ -488,7 +486,7 @@ class MatchTest(BeetsTestCase): self.assertNotEqual(q3, q4) -class PathQueryTest(LibTestCase, TestHelper, AssertsMixin): +class PathQueryTest(LibTestCase, AssertsMixin): def setUp(self): super().setUp() @@ -726,11 +724,12 @@ class PathQueryTest(LibTestCase, TestHelper, AssertsMixin): os.chdir(cur_dir) -class IntQueryTest(unittest.TestCase, TestHelper): +class IntQueryTest(BeetsTestCase): def setUp(self): self.lib = Library(":memory:") def tearDown(self): + super().tearDown() Item._types = {} def test_exact_value_match(self): @@ -764,12 +763,14 @@ class IntQueryTest(unittest.TestCase, TestHelper): self.assertIsNone(matched) -class BoolQueryTest(unittest.TestCase, TestHelper): +class BoolQueryTest(BeetsTestCase, AssertsMixin): def setUp(self): + super().setUp() self.lib = Library(":memory:") Item._types = {"flexbool": types.Boolean()} def tearDown(self): + super().tearDown() Item._types = {} def test_parse_true(self): @@ -834,8 +835,9 @@ class DefaultSearchFieldsTest(DummyDataTestCase): self.assert_items_matched(items, []) -class NoneQueryTest(unittest.TestCase, TestHelper): +class NoneQueryTest(BeetsTestCase, AssertsMixin): def setUp(self): + super().setUp() self.lib = Library(":memory:") def test_match_singletons(self): diff --git a/test/test_ui.py b/test/test_ui.py index 9ca68992a..8b3ef7276 100644 --- a/test/test_ui.py +++ b/test/test_ui.py @@ -32,7 +32,6 @@ from beets.autotag.match import distance from beets.test import _common from beets.test.helper import ( BeetsTestCase, - TestHelper, capture_stdout, control_stdin, has_program, @@ -190,7 +189,7 @@ class RemoveTest(BeetsTestCase): self.assertEqual(num_existing, 1) -class ModifyTest(unittest.TestCase, TestHelper): +class ModifyTest(BeetsTestCase): def setUp(self): self.setup_beets() self.album = self.add_album_fixture() @@ -404,7 +403,7 @@ class ModifyTest(unittest.TestCase, TestHelper): self.assertEqual(mods, {"title": "newTitle"}) -class WriteTest(unittest.TestCase, TestHelper): +class WriteTest(BeetsTestCase): def setUp(self): self.setup_beets() @@ -845,7 +844,7 @@ class ImportTest(BeetsTestCase): @_common.slow_test() -class ConfigTest(unittest.TestCase, TestHelper): +class ConfigTest(BeetsTestCase): def setUp(self): self.setup_beets() @@ -1469,7 +1468,7 @@ class CompletionTest(BeetsTestCase): ) -class CommonOptionsParserCliTest(unittest.TestCase, TestHelper): +class CommonOptionsParserCliTest(BeetsTestCase): """Test CommonOptionsParser and formatting LibModel formatting on 'list' command. """ @@ -1552,7 +1551,7 @@ class CommonOptionsParserCliTest(unittest.TestCase, TestHelper): # self.assertIn('plugins: ', l) -class CommonOptionsParserTest(unittest.TestCase, TestHelper): +class CommonOptionsParserTest(BeetsTestCase): def setUp(self): self.setup_beets()