def test_folder_parent(pl, tmp_path): parent = Playlist(4, 'ParentPL') pl.parent = 4 m3u.write_all({pl.id: pl, parent.id: parent}, tmp_path, folders=True) p = tmp_path / parent.name assert p.exists() assert p.is_dir() assert list(p.iterdir())[0].name == 'TEST PLAYLIST.m3u'
def test_all_overwrite(pl, tmp_path, capfd): pl2 = Playlist(2, 'pl2', tracks=pl.tracks[:]) prev = tmp_path / 'pl2.m3u' prev.write_text('pls no delete') pls = {p.id: p for p in (pl, pl2)} m3u.write_all(pls, tmp_path) assert capfd.readouterr().err == f"'{prev}' already exists, skipping.\n" assert prev.read_text() == 'pls no delete' m3u.write_all(pls, tmp_path, overwrite=True) assert prev.read_text() != 'pls no delete'
def test_write_all(pl, tmp_path): pl2 = Playlist(2, 'pl2', tracks=pl.tracks[:]) pls = {p.id: p for p in (pl, pl2)} m3u.write_all(pls, tmp_path) m1 = tmp_path / 'TEST PLAYLIST.m3u' m2 = tmp_path / 'pl2.m3u' assert m2.exists() assert m1.exists() expected = '\n'.join(str(t.path) for t in pl.tracks) assert m1.read_text().strip() == expected assert m2.read_text().strip() == expected
def test_all_replace(pl, tmp_path): pl2 = Playlist(2, 'pl2', tracks=pl.tracks[:]) replacement = (PureWindowsPath(':/Users/testuser/Desktop/songs'), Path('/pool/Media/Music')) expected = ("/pool/Media/Music/08 Moonscape.mp3\n" "/pool/Media/Music/08 Mountains.mp3\n" "/pool/Media/Music/09 Outlands.mp3\n" "/pool/Media/Music/10 Crush.mp3\n") if os.path.sep == '\\': expected = expected.replace('/', '\\') pls = {p.id: p for p in (pl, pl2)} m3u.write_all(pls, tmp_path, replace=replacement) for p in (pl, pl2): path = tmp_path / f'{p.name}.m3u' assert path.read_text() == expected
def test_all_skip_empty(pl, tmp_path, capfd): pl.tracks = [] m3u.write_all({pl.id: pl}, tmp_path, overwrite=True) out = capfd.readouterr().err assert out == f'Skipping empty playlist "{pl.name}"\n' assert len(list(tmp_path.iterdir())) == 0
def test_pre_pend_parent(pl, tmp_path): parent = Playlist(4, 'ParentPL') pl.parent = 4 m3u.write_all({pl.id: pl, parent.id: parent}, tmp_path, prepend_parent=True) assert list(tmp_path.iterdir())[0].name == 'ParentPL - TEST PLAYLIST.m3u'
def test_sanaitize_filename(pl, tmp_path): pl.name = "Bad: File\\Name?" m3u.write_all({pl.id: pl}, tmp_path) fname = list(tmp_path.iterdir())[0] assert fname.name == 'Bad_ File_Name_.m3u'