fix: report renames honestly in a dry run
--dry-run described a FAT32 rename as an encode. process() skipped the rename whenever dry_run was set, then found no file at the target and fell through to the encode path, so a preview of enabling --fat32-safe announced a full re-encode of every track whose name held a reserved character. The real run moves those files in a moment. A preview that inverts the cost of the thing being previewed is worse than no preview at all. Prune compounded it. With nothing renamed, the pre-sanitisation files are still on disk, and they were reported as orphans due for deletion -- so the same dry run claimed the library would be re-encoded and the originals thrown away, neither of which is true. Renames are now their own outcome: reported as "would rename" in a dry run, counted separately from encodes in the pass summary, and excluded from the orphan list when a dry run leaves them in place.
This commit is contained in:
@@ -558,3 +558,58 @@ def test_a_cover_left_without_tracks_is_pruned(tmp_path, make_flac, make_cover):
|
||||
run(source, mirror)
|
||||
|
||||
assert not (mirror / "Gone").exists()
|
||||
|
||||
|
||||
def test_a_dry_run_reports_a_rename_not_an_encode(tmp_path, make_flac, caplog):
|
||||
"""The difference between moving a file and re-encoding it is the
|
||||
difference between a minute and an afternoon, so a dry run must not
|
||||
describe the first as the second."""
|
||||
source = tmp_path / "src"
|
||||
mirror = tmp_path / "dst"
|
||||
make_flac(source / "Album" / "Where Are You?.flac")
|
||||
run(source, mirror)
|
||||
|
||||
with caplog.at_level("INFO"):
|
||||
run(source, mirror, "--fat32-safe", "--dry-run")
|
||||
|
||||
assert "would rename" in caplog.text
|
||||
assert "would encode" not in caplog.text
|
||||
|
||||
|
||||
def test_a_dry_run_does_not_call_the_old_paths_orphans(tmp_path, make_flac, caplog):
|
||||
"""Nothing was renamed, so they are still there -- but they are the files a
|
||||
real run would move, not files it would delete."""
|
||||
source = tmp_path / "src"
|
||||
mirror = tmp_path / "dst"
|
||||
make_flac(source / "Album" / "Where Are You?.flac")
|
||||
run(source, mirror)
|
||||
|
||||
with caplog.at_level("INFO"):
|
||||
run(source, mirror, "--fat32-safe", "--dry-run")
|
||||
|
||||
assert "would remove orphan" not in caplog.text
|
||||
|
||||
|
||||
def test_a_dry_run_moves_nothing(tmp_path, make_flac):
|
||||
source = tmp_path / "src"
|
||||
mirror = tmp_path / "dst"
|
||||
make_flac(source / "Album" / "Where Are You?.flac")
|
||||
run(source, mirror)
|
||||
|
||||
run(source, mirror, "--fat32-safe", "--dry-run")
|
||||
|
||||
assert (mirror / "Album" / "Where Are You?.mp3").is_file()
|
||||
assert not (mirror / "Album" / "Where Are You_.mp3").exists()
|
||||
|
||||
|
||||
def test_renames_are_counted_separately_from_encodes(tmp_path, make_flac, caplog):
|
||||
source = tmp_path / "src"
|
||||
mirror = tmp_path / "dst"
|
||||
make_flac(source / "Album" / "Where Are You?.flac")
|
||||
run(source, mirror)
|
||||
|
||||
with caplog.at_level("INFO"):
|
||||
run(source, mirror, "--fat32-safe")
|
||||
|
||||
assert "1 renamed" in caplog.text
|
||||
assert "0 encoded" in caplog.text
|
||||
|
||||
Reference in New Issue
Block a user