Do not force load musicbrainz, add a test to show the behaviour

This commit is contained in:
Šarūnas Nejus 2025-10-26 01:23:12 +00:00
parent b643fc4ce5
commit dd72704d3d
No known key found for this signature in database
3 changed files with 43 additions and 10 deletions

View file

@ -6,8 +6,7 @@ statefile: state.pickle
# --------------- Plugins ---------------
plugins: []
disabled_plugins: []
plugins: [musicbrainz]
pluginpath: []

View file

@ -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:
deprecate_for_user(log, "'musicbrainz.enabled' configuration option")
if enabled is False:
disabled_plugins.add("musicbrainz")
else:
if "musicbrainz" not in plugins:
plugins.append("musicbrainz")
elif mb_enabled is False:
deprecate_for_user(log, "'musicbrainz.enabled' configuration option")
disabled_plugins.add("musicbrainz")
return [p for p in plugins if p not in disabled_plugins]

View file

@ -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
)