Coverage for tests/test_shrinky.py: 100%
79 statements
« prev ^ index » next coverage.py v7.9.2, created at 2025-07-23 09:38 +1000
« prev ^ index » next coverage.py v7.9.2, created at 2025-07-23 09:38 +1000
1"""testing shrinky things"""
3from pathlib import Path
4from click.testing import CliRunner
6from shrinky import new_filename, parse_geometry
7from shrinky import cli, VALID_OUTPUT_TYPES
9TEST_IMAGE_FILENAME = Path("tests/test_image.jpg").resolve()
12def test_new_filename() -> None:
13 """testing new fileanme"""
14 input_filename = Path("~/test.jpg").resolve()
15 assert new_filename(input_filename, None) == Path("~/test-shrink.jpg").resolve()
18def test_new_filename_type() -> None:
19 """testing new fileanme"""
20 input_filename = Path("~/test.jpg").resolve()
21 assert new_filename(input_filename, "png") == Path("~/test.png").resolve()
24def test_parse_geometry() -> None:
25 """tests parse_geometry"""
27 testval = "800x800"
28 result = parse_geometry(testval)
29 assert result == (800, 800)
31 testval = "800x"
32 result = parse_geometry(testval)
33 assert result == (800, None)
35 testval = "x800"
36 result = parse_geometry(testval)
37 assert result == (None, 800)
40def test_cli(tmpdir: str) -> None:
41 """tests the cli"""
42 runner = CliRunner()
43 # input png
44 # output jpg
45 # jpg quality 65
46 # debug on
47 result = runner.invoke(
48 cli,
49 f"tests/test_image.jpg -o {tmpdir}/test.jpg -q 65 --debug",
50 )
52 assert result.exit_code == 0
54 destfile = Path(f"{tmpdir}/test.jpg")
55 assert destfile.exists()
56 assert destfile.is_file()
59def test_cli_geom(tmpdir: str) -> None:
60 """tests the cli"""
61 runner = CliRunner() # capture stderr
62 result = runner.invoke(
63 cli,
64 f"{TEST_IMAGE_FILENAME} -o {tmpdir}/test.jpg --debug -g 300x",
65 )
67 destfile = Path(f"{tmpdir}/test.jpg")
68 assert destfile.exists()
69 assert destfile.is_file()
70 assert result.exit_code == 0
73def test_cli_bad_geom(tmpdir: str) -> None:
74 """tests the cli"""
75 runner = CliRunner() # capture stderr
76 result = runner.invoke(
77 cli,
78 f"{TEST_IMAGE_FILENAME} -o {tmpdir}/test.jpg --debug -g 300",
79 )
81 destfile = Path(f"{tmpdir}/test.jpg")
82 assert destfile.exists()
83 assert destfile.is_file()
84 assert result.exit_code == 0
87def test_cli_bad_filename(tmpdir: str) -> None:
88 """tests the cli"""
89 runner = CliRunner() # capture stderr
90 test_filename = f"{tmpdir}/testdddd"
91 print(f"{test_filename=}")
92 testfile = Path(test_filename)
93 testfile.touch()
95 result = runner.invoke(
96 cli,
97 f"{test_filename} --debug -o {tmpdir}/test1234",
98 )
99 print(result.stdout)
100 assert result.exit_code == 1
103def test_cli_missing_file(tmpdir: str) -> None:
104 """tests the cli"""
105 runner = CliRunner() # capture stderr
106 test_filename = f"{tmpdir}/testdddd1234"
107 print(f"{test_filename=}")
109 result = runner.invoke(
110 cli,
111 f"{test_filename}",
112 )
113 print(result.stdout)
114 assert result.exit_code == 1
117def test_cli_file_exists_bail(tmpdir: str) -> None:
118 """tests the cli"""
119 runner = CliRunner() # capture stderr
120 result = runner.invoke(
121 cli,
122 f"{TEST_IMAGE_FILENAME} -o {tmpdir}/test.jpg --debug -g 300x",
123 )
124 result = runner.invoke(
125 cli,
126 f"{TEST_IMAGE_FILENAME} -o {tmpdir}/test.jpg --debug -g 300x",
127 )
129 print(result.stdout)
130 assert result.exit_code == 1
131 assert result.exit_code == 1
134def test_cli_file_write_weird_extension(tmpdir: str) -> None:
135 """tests the cli"""
136 runner = CliRunner() # capture stderr
137 result = runner.invoke(
138 cli,
139 f"{TEST_IMAGE_FILENAME} -o {tmpdir}/test --debug -g 300x",
140 )
142 print(result.stdout)
143 assert result.exit_code == 1
145 result = runner.invoke(
146 cli,
147 f"{TEST_IMAGE_FILENAME} -o {tmpdir}/test.exe --debug -g 300x",
148 )
149 print(result.stdout)
150 assert result.exit_code == 1
153def test_cli_file_write_variants(tmpdir: str) -> None:
154 """tests the cli"""
155 runner = CliRunner() # capture stderr
157 for extension in VALID_OUTPUT_TYPES:
158 result = runner.invoke(
159 cli,
160 f"{TEST_IMAGE_FILENAME} -o {tmpdir}/test.{extension} --debug -g 300x",
161 )
162 print(result.stdout)
163 assert result.exit_code == 0