49 Commits

Author SHA1 Message Date
Šarūnas Nejus
3f277ad5a0 typing: feed PathLike as database path 2026-07-16 13:11:16 +01:00
dong
7cc3e0b5a4 Support multi-value modify operators 2026-07-08 12:12:15 +01:00
Šarūnas Nejus
230bf19c7f Remove redundant test logic exposed by full coverage
- Removing the coverage omit configuration exposed unused branches, helpers, and
  fixtures across the test suite.
- Delete that redundant logic and simplify affected tests while preserving their
  behavior.
2026-07-07 15:57:35 +01:00
Sebastian Mohr
54a2bd20e1 Removed This file is part of beets... headers. 2026-06-29 11:20:15 +02:00
Sebastian Mohr
1368efd4dd Pytest based setup for ImportTest, now TestImport. 2026-06-16 17:14:03 +02:00
Šarūnas Nejus
af27ed2ee6 Centralise RUNNING_IN_CI definition 2026-06-13 01:46:44 +01:00
Sebastian Mohr
8db903c8f8 Propagate rename to test_ui_importer 2026-06-11 10:39:14 +02:00
Sebastian Mohr
fb2470dd0b Naming change in ui inheritance. 2026-06-11 10:39:14 +02:00
Šarūnas Nejus
648f24cbc2 Enable and fix flake8-builtins 2026-06-09 00:14:06 +01:00
Šarūnas Nejus
d53ee774a9 Enable and fix flake8-return 2026-06-09 00:14:06 +01:00
Šarūnas Nejus
5be035f49d Enable and fix flake8-pie 2026-06-09 00:14:06 +01:00
Alok Saboo
fe860fd75a fix copilot comments 2026-06-08 10:32:04 -04:00
Alok Saboo
faa7deaf5d Enhance move command to handle missing files gracefully 2026-06-08 09:51:38 -04:00
Šarūnas Nejus
d62e0952c0 Return KeysView from every keys method 2026-06-06 06:53:25 +01:00
Šarūnas Nejus
29580d2f00 Import everything from parent beets.autotag 2026-06-02 08:57:35 +01:00
Šarūnas Nejus
9efb7eabdb Clarify the logic inside get_path_formats 2026-05-24 15:09:58 +01:00
Šarūnas Nejus
0c227e9453 Define Library.path_formats property 2026-05-24 15:09:58 +01:00
李家成
495ab71e16 Merge branch 'master' of https://github.com/beetbox/beets into fix/album-mod-multivalue-string-splitting 2026-05-22 00:05:59 +08:00
Sebastian Mohr
adfb73b66d Run ruff format 2026-05-20 16:53:06 +02:00
Betterlol
38423eb6f4 Fix album modify splitting multi-value strings into characters
When using `beet mod -a` to set a multi-value field (e.g. artists,
genres, composers) on an album, the value string was being split into
individual characters when propagated to items. This happened because:

1. `Album._type('artists')` returned `DEFAULT` since `artists` is not
   an Album fixed field, so `_parse` returned a plain string.
2. `DelimitedString.normalize` fell through to `model_type(value)`
   (= `list(value)`) for string input, splitting it into characters.

Two fixes:
- `DelimitedString.normalize`: handle string input by parsing it
  (splitting by delimiter if present) instead of calling `list()`.
- `Model._type`: fall back to the related model's field/type
  definitions so multi-value field types are recognized on both
  Album and Item.

Fixes #5690
2026-05-19 02:04:44 +08:00
Šarūnas Nejus
9e3f22b8be Do not move command desc to the next line 2026-05-17 07:38:50 +01:00
Šarūnas Nejus
6a2c451cc3 Reproduce the issue in a test 2026-05-17 07:35:56 +01:00
Šarūnas Nejus
30ab81eb5b Extract UserError from beets.ui to a new beets.exceptions module.
Update all references in core, plugins, and tests to import UserError
from the new location. This centralizes exception handling and improves
code organization.
2026-05-16 11:18:51 +01:00
Šarūnas Nejus
ccdccdfa8d Remove slow_test unittest marker 2026-04-22 21:47:16 +01:00
Sebastian Mohr
be057e8bbf Fixed tests 2026-04-22 22:20:01 +02:00
Šarūnas Nejus
a2cb160064 Store item paths relative to library directory
Convert item paths to relative on write and back to absolute on read,
keeping the database free of hardcoded library directory. Fix tests to
account for absolute path return values.
2026-04-11 13:01:41 +01:00
Šarūnas Nejus
02be9b277d Handle legacy fields in modify and queries 2026-04-07 10:42:56 +01:00
Šarūnas Nejus
b8def07121 autotag: use explicit imports 2026-03-28 12:26:27 +00:00
Šarūnas Nejus
2a003ac709 Refactor ShowChangeTest to use snapshot-style assertions
Replace multiple small tests with two comprehensive snapshot tests
covering the same edge cases and newline and column layouts.

Use BeetsTestCase to ensure that the local dev config is ignored.
2026-03-17 17:59:51 +00:00
Šarūnas Nejus
286bce13c9 Fix show_model_changes 2026-03-16 07:38:21 +00:00
Šarūnas Nejus
6a93bf54af Move layout utils to beets/util/layout.py 2026-03-14 12:02:30 +00:00
Šarūnas Nejus
fc39ab791c Create a dedicated get_model_changes function in beets/util/diff.py
- Add `get_model_changes` as the public API for computing diffs
- Remove tests for `show_model_changes` as test_diff.py fully covers them.
2026-03-14 12:02:30 +00:00
Šarūnas Nejus
756d5c9921 Move diff utils to beets/util/diff.py 2026-03-14 11:58:04 +00:00
Šarūnas Nejus
a6fcb7ba0f Fix references to color utils 2026-03-14 11:57:18 +00:00
Šarūnas Nejus
aa52aaca56 Move colorisation to beets/util/color.py 2026-03-14 11:57:18 +00:00
Šarūnas Nejus
a8d53f78de Fix the rest of the tests 2026-02-27 18:34:26 +00:00
Šarūnas Nejus
4699958f25 Remove redundant coloring logic 2026-02-22 16:13:21 +00:00
Šarūnas Nejus
31f79f14a3 Colorize multi-valued field changes distinctly 2026-02-22 16:13:20 +00:00
Šarūnas Nejus
d613981efe Replace capture_output with io.getoutput 2026-02-10 00:53:20 +00:00
Šarūnas Nejus
fea789bb59 Replace control_stdin with io.addinput 2026-02-10 00:53:20 +00:00
Šarūnas Nejus
6a65f13776 Replace custom stdio mocks with pytest io fixture
Create a centralised pytest fixture to provide controllable stdin and
captured stdout in all tests. Simplify DummyIO/DummyIn and remove the
custom DummyOut implementation and make use of pytest builtin fixtures.

Create a centralised pytest fixture to provide controllable stdin and
captured stdout that can be applied to any tests, regardless whether
they are based on pytest or unittest.

* `io` fixture can be used as a fixture in pytest-based tests
* `IOMixin` can be used to attach `io` attribute to any test class,
  including `unittest.TestCase`
2026-02-10 00:53:20 +00:00
Šarūnas Nejus
1c87da2c05 Fix test failures 2026-02-10 00:53:20 +00:00
Šarūnas Nejus
a4249af700 Patch sys.stdin and sys.stdout in tests 2026-02-10 00:53:20 +00:00
Šarūnas Nejus
c52656fb0a Enable RUF rules 2026-01-13 20:55:40 +00:00
Šarūnas Nejus
c807effeda Define a shared fixture for config 2025-12-27 14:30:35 +00:00
Šarūnas Nejus
75baec611a Improve and simplify show_model_changes 2025-12-27 14:30:35 +00:00
Šarūnas Nejus
ea157832fe hooks: make AlbumMatch.mapping a tuple 2025-12-24 11:01:26 +00:00
Emi Katagiri-Simpson
86a74970f9 Merge remote-tracking branch 'upstream/master' into HEAD 2025-11-06 20:11:57 -05:00
Sebastian Mohr
a59e41a883 tests: move command tests into dedicated files
Moved tests related to ui into own folder.
Moved 'modify' command tests into own file.
Moved 'write' command tests into own file.
Moved 'fields' command tests into own file.
Moved 'do_query' test into own file.
Moved 'list' command tests into own file.
Moved 'remove' command tests into own file.
Moved 'move' command tests into own file.
Moved 'update' command tests into own file.
Moved 'show_change' test into test_import file.
Moved 'summarize_items' test into test_import file.
Moved 'completion' command test into own file.
2025-11-03 14:00:58 +01:00