diff --git a/beets/config_default.yaml b/beets/config_default.yaml index 376859602..c0bab8056 100644 --- a/beets/config_default.yaml +++ b/beets/config_default.yaml @@ -6,8 +6,7 @@ statefile: state.pickle # --------------- Plugins --------------- -plugins: [] -disabled_plugins: [] +plugins: [musicbrainz] pluginpath: [] diff --git a/beets/plugins.py b/beets/plugins.py index 5f695712b..0dc2754b9 100644 --- a/beets/plugins.py +++ b/beets/plugins.py @@ -417,20 +417,18 @@ def get_plugin_names() -> list[str]: beets.config.add({"disabled_plugins": []}) disabled_plugins = set(beets.config["disabled_plugins"].as_str_seq()) # TODO: Remove in v3.0.0 - if "musicbrainz" not in plugins and "musicbrainz" not in disabled_plugins: + mb_enabled = beets.config["musicbrainz"].flatten().get("enabled") + if mb_enabled: deprecate_for_user( log, - "Automatic loading of 'musicbrainz' plugin", + "'musicbrainz.enabled' configuration option", "'plugins' configuration to explicitly add 'musicbrainz'", ) - - enabled = beets.config["musicbrainz"].flatten().get("enabled") - if enabled is not None: + if "musicbrainz" not in plugins: + plugins.append("musicbrainz") + elif mb_enabled is False: deprecate_for_user(log, "'musicbrainz.enabled' configuration option") - if enabled is False: disabled_plugins.add("musicbrainz") - else: - plugins.append("musicbrainz") return [p for p in plugins if p not in disabled_plugins] diff --git a/test/test_plugins.py b/test/test_plugins.py index 07bbf0966..4543b5ecc 100644 --- a/test/test_plugins.py +++ b/test/test_plugins.py @@ -543,3 +543,39 @@ class TestDeprecationCopy: assert hasattr(LegacyMetadataPlugin, "data_source_mismatch_penalty") assert hasattr(LegacyMetadataPlugin, "_extract_id") assert hasattr(LegacyMetadataPlugin, "get_artist") + + +class TestMusicBrainzPluginLoading: + @pytest.fixture(autouse=True) + def config(self): + _config = config + _config.sources = [] + _config.read(user=False, defaults=True) + return _config + + def test_default(self): + assert "musicbrainz" in plugins.get_plugin_names() + + def test_other_plugin_enabled(self, config): + config["plugins"] = ["anything"] + + assert "musicbrainz" not in plugins.get_plugin_names() + + def test_deprecated_enabled(self, config, caplog): + config["plugins"] = ["anything"] + config["musicbrainz"]["enabled"] = True + + assert "musicbrainz" in plugins.get_plugin_names() + assert ( + "musicbrainz.enabled' configuration option is deprecated" + in caplog.text + ) + + def test_deprecated_disabled(self, config, caplog): + config["musicbrainz"]["enabled"] = False + + assert "musicbrainz" not in plugins.get_plugin_names() + assert ( + "musicbrainz.enabled' configuration option is deprecated" + in caplog.text + )