beets/test
Johann Fot ee5f96be78
Add native support for multiple genres per album/track
Simplify multi-genre implementation based on maintainer feedback (PR #6169).

Changes:
- Remove multi_value_genres and genre_separator config options
- Replace complex sync_genre_fields() with ensure_first_value('genre', 'genres')
- Update all plugins (Beatport, MusicBrainz, LastGenre) to always write genres as lists
- Add automatic migration for comma/semicolon/slash-separated genre strings
- Add 'beet migrate genres' command for explicit batch migration with --pretend flag
- Update all tests to reflect simplified approach (44 tests passing)
- Update documentation

Implementation aligns with maintainer vision of always using multi-value genres
internally with automatic backward-compatible sync to the genre field via
ensure_first_value(), eliminating configuration complexity.

Migration strategy avoids problems from #5540:
- Automatic lazy migration on item access (no reimport/mbsync needed)
- Optional batch migration command for user control
- No endless rewrite loops due to proper field synchronization
2026-02-22 14:19:17 +00:00
..
autotag Enable RUF rules 2026-01-13 20:55:40 +00:00
plugins Add native support for multiple genres per album/track 2026-02-22 14:19:17 +00:00
rsrc musicbrainz: lookup release directly 2025-12-20 01:35:51 +00:00
ui Replace capture_output with io.getoutput 2026-02-10 00:53:20 +00:00
util Enable RUF rules 2026-01-13 20:55:40 +00:00
__init__.py Remove unused imports 2021-08-26 20:59:48 +10:00
conftest.py Replace custom stdio mocks with pytest io fixture 2026-02-10 00:53:20 +00:00
test_art_resize.py Enable RUF rules 2026-01-13 20:55:40 +00:00
test_autotag.py Add native support for multiple genres per album/track 2026-02-22 14:19:17 +00:00
test_datequery.py Replace string concatenation (' + ') 2025-08-30 23:10:15 +01:00
test_dbcore.py Merge branch 'master' into indices 2026-01-30 01:03:18 +00:00
test_files.py reflink() doesn't take Path parameters 2025-11-23 13:50:57 -04:00
test_hidden.py Fix duplicate database change event send on Library.add (#5561) 2025-05-30 13:41:29 +00:00
test_importer.py Merge branch 'master' into master 2025-07-23 19:44:17 +02:00
test_library.py Add native support for multiple genres per album/track 2026-02-22 14:19:17 +00:00
test_logging.py fix: Sanitize log messages by removing control characters 2025-12-02 15:27:24 +05:00
test_m3ufile.py Reformat the codebase 2024-09-21 11:57:48 +01:00
test_metadata_plugins.py Simplify tests 2026-01-31 23:42:09 +00:00
test_metasync.py Replace capture_output with io.getoutput 2026-02-10 00:53:20 +00:00
test_pipeline.py pipeline: remove old tests, integrate with out test suite 2025-05-06 14:51:20 +02:00
test_plugins.py Replace capture_output with io.getoutput 2026-02-10 00:53:20 +00:00
test_query.py Refactor test_query 2025-07-06 16:15:30 +01:00
test_release.py Improve reference title for command links 2026-02-08 07:28:09 +00:00
test_sort.py pyupgrade Python 3.10 2025-11-08 12:09:52 +00:00
test_template.py Fix formatting 2025-05-07 10:41:01 +01:00
test_types.py Add NullPathType and types to PathType 2025-07-06 16:09:49 +01:00
test_util.py Simplify and speed up plurality/album tags retrieval tests 2025-05-31 19:17:42 +01:00
testall.py Remove def suite TestLoader definitions 2024-07-28 18:58:51 +01:00