feat: AudioLibraryTab — persistent extracted-clip library (add/edit/re-export/play/remove)
This commit is contained in:
@@ -823,3 +823,49 @@ def test_editor_reject_cleans_temps(win, tmp_path):
|
||||
dlg.reject() # Escape path
|
||||
assert not t1.exists() # op temp swept
|
||||
assert os.path.exists(str(src)) # entry temp (_versions[0]) survives
|
||||
|
||||
|
||||
def test_audio_library_add_dedup_and_persist(win, tmp_path):
|
||||
import main as m
|
||||
a = tmp_path / "a.wav"; a.write_bytes(b"")
|
||||
b = tmp_path / "b.wav"; b.write_bytes(b"")
|
||||
win._settings.setValue("audio_library_test", [])
|
||||
lib = m.AudioLibraryTab(win._settings, key="audio_library_test")
|
||||
assert lib.clips() == []
|
||||
lib.add_clip(str(a)); lib.add_clip(str(b)); lib.add_clip(str(a)) # dup ignored
|
||||
assert lib.clips() == [str(a), str(b)] # order preserved, deduped
|
||||
assert lib._list.count() == 2
|
||||
# a fresh instance restores from the same key
|
||||
lib2 = m.AudioLibraryTab(win._settings, key="audio_library_test")
|
||||
assert lib2.clips() == [str(a), str(b)]
|
||||
|
||||
|
||||
def test_audio_library_drops_missing_on_load(win, tmp_path):
|
||||
import main as m
|
||||
good = tmp_path / "g.wav"; good.write_bytes(b"")
|
||||
win._settings.setValue("audio_library_test2", [str(good), "/no/such/file.wav"])
|
||||
lib = m.AudioLibraryTab(win._settings, key="audio_library_test2")
|
||||
assert lib.clips() == [str(good)] # missing path dropped on load
|
||||
|
||||
|
||||
def test_audio_library_remove(win, tmp_path):
|
||||
import main as m
|
||||
a = tmp_path / "a.wav"; a.write_bytes(b""); b = tmp_path / "b.wav"; b.write_bytes(b"")
|
||||
win._settings.setValue("audio_library_test3", [])
|
||||
lib = m.AudioLibraryTab(win._settings, key="audio_library_test3")
|
||||
lib.add_clip(str(a)); lib.add_clip(str(b))
|
||||
lib._list.setCurrentRow(0)
|
||||
lib._on_remove()
|
||||
assert lib.clips() == [str(b)]
|
||||
|
||||
|
||||
def test_audio_library_edit_emits(win, tmp_path):
|
||||
import main as m
|
||||
a = tmp_path / "a.wav"; a.write_bytes(b"")
|
||||
win._settings.setValue("audio_library_test4", [])
|
||||
lib = m.AudioLibraryTab(win._settings, key="audio_library_test4")
|
||||
lib.add_clip(str(a)); lib._list.setCurrentRow(0)
|
||||
got = []
|
||||
lib.edit_requested.connect(lambda p: got.append(p))
|
||||
lib._on_edit()
|
||||
assert got == [str(a)]
|
||||
|
||||
Reference in New Issue
Block a user