import shutil from pathlib import Path import pytest import mangadlp.app as app import mangadlp.utils as utils def test_make_archive_true(): img_path = Path("tests/test_dir") archive_path = Path("tests/test_dir.cbz") file_format = ".cbz" img_path.mkdir(parents=True, exist_ok=True) for n in range(5): img_name = img_path / f"page{n}" img_name.with_suffix(".png").touch(exist_ok=True) utils.make_archive(img_path, file_format) assert archive_path.exists() # cleanup archive_path.unlink(missing_ok=True) img_path.with_suffix(".zip").unlink(missing_ok=True) shutil.rmtree(img_path, ignore_errors=True) def test_make_archive_false(): archive_path = Path("tests/test_dir2.cbz") img_path = Path("tests/test_dir2") file_format = "cbz" with pytest.raises(IOError) as e: utils.make_archive(img_path, file_format) assert e.type == IOError assert not archive_path.exists() # cleanup Path("tests/test_dir2.zip").unlink() def test_chapter_list(): chapters_in = "1-4,8,11,14-15,22" chapters_out = ["1", "2", "3", "4", "8", "11", "14", "15", "22"] assert utils.get_chapter_list(chapters_in, []) == chapters_out def test_chapter_list_forcevol(): chapters_in = "1:1-1:4,2:8,3:11,4:14-4:15,5:22" chapters_out = ["1:1", "1:2", "1:3", "1:4", "2:8", "3:11", "4:14", "4:15", "5:22"] assert utils.get_chapter_list(chapters_in, []) == chapters_out def test_chapter_list_full(): mdlp = app.MangaDLP( url_uuid="https://mangadex.org/title/0aea9f43-d4a9-4bf7-bebc-550a512f9b95/shikimori-s-not-just-a-cutie", language="en", chapters="", list_chapters=True, file_format="cbz", forcevol=True, download_path="tests", download_wait=0.5, verbose=True, ) chap_list = utils.get_chapter_list("1:1,1:2,1:4-1:7,2:", mdlp.manga_chapter_list) assert chap_list == [ "1:1", "1:2", "1:4", "1:5", "1:6", "1:7", "2:17", "2:18", "2:19", "2:20", "2:21", "2:22", "2:23", "2:24", "2:25", "2:26", ] def test_fix_name(): filename_in1 = r"..hello?; @test1-*<\>test2.cbz.." filename_in2 = r"!hello: >test1-/test2