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

1"""testing shrinky things""" 

2 

3from pathlib import Path 

4from click.testing import CliRunner 

5 

6from shrinky import new_filename, parse_geometry 

7from shrinky import cli, VALID_OUTPUT_TYPES 

8 

9TEST_IMAGE_FILENAME = Path("tests/test_image.jpg").resolve() 

10 

11 

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() 

16 

17 

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() 

22 

23 

24def test_parse_geometry() -> None: 

25 """tests parse_geometry""" 

26 

27 testval = "800x800" 

28 result = parse_geometry(testval) 

29 assert result == (800, 800) 

30 

31 testval = "800x" 

32 result = parse_geometry(testval) 

33 assert result == (800, None) 

34 

35 testval = "x800" 

36 result = parse_geometry(testval) 

37 assert result == (None, 800) 

38 

39 

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 ) 

51 

52 assert result.exit_code == 0 

53 

54 destfile = Path(f"{tmpdir}/test.jpg") 

55 assert destfile.exists() 

56 assert destfile.is_file() 

57 

58 

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 ) 

66 

67 destfile = Path(f"{tmpdir}/test.jpg") 

68 assert destfile.exists() 

69 assert destfile.is_file() 

70 assert result.exit_code == 0 

71 

72 

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 ) 

80 

81 destfile = Path(f"{tmpdir}/test.jpg") 

82 assert destfile.exists() 

83 assert destfile.is_file() 

84 assert result.exit_code == 0 

85 

86 

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() 

94 

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 

101 

102 

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=}") 

108 

109 result = runner.invoke( 

110 cli, 

111 f"{test_filename}", 

112 ) 

113 print(result.stdout) 

114 assert result.exit_code == 1 

115 

116 

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 ) 

128 

129 print(result.stdout) 

130 assert result.exit_code == 1 

131 assert result.exit_code == 1 

132 

133 

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 ) 

141 

142 print(result.stdout) 

143 assert result.exit_code == 1 

144 

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 

151 

152 

153def test_cli_file_write_variants(tmpdir: str) -> None: 

154 """tests the cli""" 

155 runner = CliRunner() # capture stderr 

156 

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