Skip to content

Commit f9b71bd

Browse files
committed
Do not force load musicbrainz, add a test to show the behaviour
1 parent 3e06450 commit f9b71bd

File tree

3 files changed

+43
-9
lines changed

3 files changed

+43
-9
lines changed

beets/config_default.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ statefile: state.pickle
66

77
# --------------- Plugins ---------------
88

9-
plugins: []
9+
plugins: [musicbrainz]
1010
disabled_plugins: []
1111

1212
pluginpath: []

beets/plugins.py

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -420,20 +420,18 @@ def get_plugin_names() -> list[str]:
420420
plugins = unique_list(beets.config["plugins"].as_str_seq())
421421
disabled_plugins = set(beets.config["disabled_plugins"].as_str_seq())
422422
# TODO: Remove in v3.0.0
423-
if "musicbrainz" not in plugins and "musicbrainz" not in disabled_plugins:
423+
mb_enabled = beets.config["musicbrainz"].flatten().get("enabled")
424+
if mb_enabled:
424425
deprecate_for_user(
425426
log,
426-
"Automatic loading of 'musicbrainz' plugin",
427+
"'musicbrainz.enabled' configuration option",
427428
"'plugins' configuration to explicitly add 'musicbrainz'",
428429
)
429-
430-
enabled = beets.config["musicbrainz"].flatten().get("enabled")
431-
if enabled is not None:
430+
if "musicbrainz" not in plugins:
431+
plugins.append("musicbrainz")
432+
elif mb_enabled is False:
432433
deprecate_for_user(log, "'musicbrainz.enabled' configuration option")
433-
if enabled is False:
434434
disabled_plugins.add("musicbrainz")
435-
else:
436-
plugins.append("musicbrainz")
437435

438436
return [p for p in plugins if p not in disabled_plugins]
439437

test/test_plugins.py

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -543,3 +543,39 @@ class LegacyMetadataPlugin(plugins.BeetsPlugin):
543543
assert hasattr(LegacyMetadataPlugin, "data_source_mismatch_penalty")
544544
assert hasattr(LegacyMetadataPlugin, "_extract_id")
545545
assert hasattr(LegacyMetadataPlugin, "get_artist")
546+
547+
548+
class TestMusicBrainzPluginLoading:
549+
@pytest.fixture(autouse=True)
550+
def config(self):
551+
_config = config
552+
_config.sources = []
553+
_config.read(user=False, defaults=True)
554+
return _config
555+
556+
def test_default(self):
557+
assert "musicbrainz" in plugins.get_plugin_names()
558+
559+
def test_other_plugin_enabled(self, config):
560+
config["plugins"] = ["anything"]
561+
562+
assert "musicbrainz" not in plugins.get_plugin_names()
563+
564+
def test_deprecated_enabled(self, config, caplog):
565+
config["plugins"] = ["anything"]
566+
config["musicbrainz"]["enabled"] = True
567+
568+
assert "musicbrainz" in plugins.get_plugin_names()
569+
assert (
570+
"musicbrainz.enabled' configuration option is deprecated"
571+
in caplog.text
572+
)
573+
574+
def test_deprecated_disabled(self, config, caplog):
575+
config["musicbrainz"]["enabled"] = False
576+
577+
assert "musicbrainz" not in plugins.get_plugin_names()
578+
assert (
579+
"musicbrainz.enabled' configuration option is deprecated"
580+
in caplog.text
581+
)

0 commit comments

Comments
 (0)