50 lines
1.5 KiB
Python
50 lines
1.5 KiB
Python
import csv
|
|
import sys
|
|
|
|
from serato_doctor.cli import main
|
|
|
|
|
|
def test_cli_writes_reports_and_prints_counts(tmp_path, monkeypatch, capsys):
|
|
serato = tmp_path / "serato"
|
|
subcrates = serato / "Subcrates"
|
|
music = tmp_path / "music"
|
|
subcrates.mkdir(parents=True)
|
|
music.mkdir()
|
|
|
|
crate_text = (
|
|
"Users/djsplice/OneDrive/Jukebox/Found.mp漳牴k"
|
|
"Users/djsplice/OneDrive/Jukebox/Missing.mp漳牴k"
|
|
)
|
|
(subcrates / "Test.crate").write_bytes(crate_text.encode("utf-16-le"))
|
|
(music / "Found.mp3").write_bytes(b"synthetic audio")
|
|
csv_path = tmp_path / "scan.csv"
|
|
report_path = tmp_path / "report.txt"
|
|
monkeypatch.setattr(
|
|
sys,
|
|
"argv",
|
|
[
|
|
"serato-doctor",
|
|
"--serato",
|
|
str(serato),
|
|
"--music",
|
|
str(music),
|
|
"--out",
|
|
str(csv_path),
|
|
"--report",
|
|
str(report_path),
|
|
],
|
|
)
|
|
|
|
main()
|
|
|
|
output = capsys.readouterr().out
|
|
assert "Crate references: 2" in output
|
|
assert "Disk tracks: 1" in output
|
|
assert "Missing by filename: 1" in output
|
|
assert f"CSV: {csv_path}" in output
|
|
assert f"Report: {report_path}" in output
|
|
with csv_path.open(newline="", encoding="utf-8") as csv_file:
|
|
rows = list(csv.DictReader(csv_file))
|
|
assert [row["exists_by_filename"] for row in rows] == ["True", "False"]
|
|
assert "Total missing references: 1" in report_path.read_text(encoding="utf-8")
|