| import zipfile |
| from pathlib import Path |
|
|
| from src import dataset_samples |
|
|
|
|
| class FakeApi: |
| def __init__(self, files): |
| self.files = files |
| self.calls = [] |
|
|
| def list_repo_files(self, **kwargs): |
| self.calls.append(kwargs) |
| return list(self.files) |
|
|
|
|
| def test_dataset_catalog_has_licensed_default_and_fallbacks(): |
| choices = dataset_samples.dataset_sample_choices() |
| assert choices |
| assert dataset_samples.DEFAULT_DATASET_SAMPLE_ID == "sonicsets-demo-mix" |
| assert any("CC BY-NC" in label for label, _ in choices) |
| assert len({value for _, value in choices}) == len(choices) |
|
|
|
|
| def test_mix_selector_prefers_full_ensemble_over_stems(): |
| selected = dataset_samples._choose_audio_filename( |
| [ |
| "Demo_01/Isolated_Vocals.wav", |
| "Demo_01/Full_Ensemble_Mix.wav", |
| "Demo_01/Bass.wav", |
| ], |
| "ensemble-mix", |
| ) |
| assert selected == "Demo_01/Full_Ensemble_Mix.wav" |
|
|
|
|
| def test_resolve_dataset_sample_downloads_only_selected_audio(monkeypatch, tmp_path): |
| api = FakeApi([ |
| "README.md", |
| "Demo_01/Isolated_Vocals.wav", |
| "Demo_01/Full_Ensemble_Mix.wav", |
| ]) |
| calls = [] |
|
|
| def fake_download(**kwargs): |
| calls.append(kwargs) |
| target = Path(kwargs["local_dir"]) / kwargs["filename"] |
| target.parent.mkdir(parents=True, exist_ok=True) |
| target.write_bytes(b"audio") |
| return str(target) |
|
|
| monkeypatch.setattr(dataset_samples, "DATASET_SAMPLE_ROOT", tmp_path) |
| result = dataset_samples.resolve_dataset_sample( |
| "sonicsets-demo-mix", api=api, download_fn=fake_download |
| ) |
| assert result.repository_filename == "Demo_01/Full_Ensemble_Mix.wav" |
| assert result.license_id == "CC-BY-NC-4.0" |
| assert result.archive_extracted is False |
| assert len(calls) == 1 |
| assert calls[0]["repo_type"] == "dataset" |
|
|
|
|
| def test_resolve_dataset_sample_can_extract_archive(monkeypatch, tmp_path): |
| api = FakeApi(["stems_evaluation.zip"]) |
|
|
| def fake_download(**kwargs): |
| target = Path(kwargs["local_dir"]) / kwargs["filename"] |
| target.parent.mkdir(parents=True, exist_ok=True) |
| with zipfile.ZipFile(target, "w") as archive: |
| archive.writestr("Demo_01/Full_Ensemble_Mix.wav", b"mix") |
| archive.writestr("Demo_01/Isolated_Vocals.wav", b"vocal") |
| return str(target) |
|
|
| monkeypatch.setattr(dataset_samples, "DATASET_SAMPLE_ROOT", tmp_path) |
| result = dataset_samples.resolve_dataset_sample( |
| "sonicsets-demo-mix", api=api, download_fn=fake_download |
| ) |
| assert result.archive_extracted is True |
| assert Path(result.local_path).name == "Full_Ensemble_Mix.wav" |
| assert Path(result.local_path).read_bytes() == b"mix" |
|
|
|
|
| def test_safe_extract_rejects_path_traversal(tmp_path): |
| archive_path = tmp_path / "unsafe.zip" |
| with zipfile.ZipFile(archive_path, "w") as archive: |
| archive.writestr("../escape.wav", b"bad") |
|
|
| try: |
| dataset_samples._safe_extract_zip(archive_path, tmp_path / "out") |
| except RuntimeError as exc: |
| assert "Unsafe path" in str(exc) |
| else: |
| raise AssertionError("unsafe archive path was accepted") |
|
|
|
|
| def test_resolve_rejects_oversized_download(monkeypatch, tmp_path): |
| target = tmp_path / "large.mp3" |
| target.write_bytes(b"12345") |
|
|
| def fake_download(**_kwargs): |
| return str(target) |
|
|
| monkeypatch.setattr(dataset_samples, "DATASET_SAMPLE_ROOT", tmp_path / "cache") |
| monkeypatch.setattr(dataset_samples, "MAX_DATASET_SAMPLE_FILE_BYTES", 4) |
| try: |
| dataset_samples.resolve_dataset_sample( |
| "legacy-symphony-01", download_fn=fake_download |
| ) |
| except RuntimeError as exc: |
| assert "file-size limit" in str(exc) |
| else: |
| raise AssertionError("oversized dataset sample was accepted") |
|
|