Add duplicate filename diagnostics
This commit is contained in:
@@ -0,0 +1,57 @@
|
||||
from pathlib import Path
|
||||
|
||||
from serato_doctor.duplicates import find_duplicate_groups
|
||||
from serato_doctor.models.duplicate import DuplicateKind
|
||||
from serato_doctor.models.track import DiskTrack
|
||||
|
||||
|
||||
def track(path):
|
||||
path = Path(path)
|
||||
return DiskTrack(path, path.name, 100, path.suffix.lower())
|
||||
|
||||
|
||||
def test_exact_names_in_different_folders_form_a_group():
|
||||
groups = find_duplicate_groups(
|
||||
[track("/A/Song.mp3"), track("/B/Song.mp3")]
|
||||
)
|
||||
|
||||
assert len(groups) == 1
|
||||
assert groups[0].kind is DuplicateKind.EXACT_NAME
|
||||
assert groups[0].display_name == "Song.mp3"
|
||||
assert groups[0].extra_files == 1
|
||||
|
||||
|
||||
def test_case_only_difference_is_an_exact_name_duplicate():
|
||||
groups = find_duplicate_groups(
|
||||
[track("/A/SONG.MP3"), track("/B/song.mp3")]
|
||||
)
|
||||
|
||||
assert groups[0].kind is DuplicateKind.EXACT_NAME
|
||||
|
||||
|
||||
def test_numeric_suffixes_form_a_suspected_cloud_conflict_group():
|
||||
groups = find_duplicate_groups(
|
||||
[
|
||||
track("/A/Track.mp3"),
|
||||
track("/B/Track 2.mp3"),
|
||||
track("/C/Track 3.mp3"),
|
||||
]
|
||||
)
|
||||
|
||||
assert len(groups) == 1
|
||||
assert groups[0].kind is DuplicateKind.CLOUD_CONFLICT
|
||||
assert groups[0].display_name == "Track.mp3"
|
||||
assert groups[0].extra_files == 2
|
||||
assert [item.path for item in groups[0].tracks] == [
|
||||
Path("/A/Track.mp3"),
|
||||
Path("/B/Track 2.mp3"),
|
||||
Path("/C/Track 3.mp3"),
|
||||
]
|
||||
|
||||
|
||||
def test_unrelated_and_single_files_are_not_reported():
|
||||
groups = find_duplicate_groups(
|
||||
[track("/A/First.mp3"), track("/B/Second.mp3")]
|
||||
)
|
||||
|
||||
assert groups == ()
|
||||
Reference in New Issue
Block a user