Coverage for tests/test_model.py: 97%
74 statements
« prev ^ index » next coverage.py v7.6.12, created at 2025-04-24 11:13 +0000
« prev ^ index » next coverage.py v7.6.12, created at 2025-04-24 11:13 +0000
1from extension_catalog_model import VersionRange, Release, Extension, Catalog
2import pytest
4def test_version_ranges_can_be_created():
5 v1 = VersionRange(min="v0.1.0")
6 v2 = VersionRange(min="v0.1.0", max="v0.2.0")
8def test_version_ranges_cant_be_disordered():
9 with pytest.raises(Exception):
10 VersionRange(min="v0.2.0", max="v0.1.0")
12def test_version_excludes_cant_be_too_high():
13 with pytest.raises(Exception):
14 VersionRange(min="v0.2.0", max="v0.3.0", excludes=["v0.6.0"])
16def test_version_excludes_cant_be_too_low():
17 with pytest.raises(Exception):
18 VersionRange(min="v0.2.0", max="v0.3.0", excludes=["v0.1.0"])
20def test_release_can_be_created():
21 Release(name="v0.1.0", main_url="https://github.com/a/b/", version_range = VersionRange())
23def test_release_name():
24 with pytest.raises(Exception):
25 Release(name="blah", main_url="https://github.com/a/b/", version_range = VersionRange())
27def test_release_name_v():
28 with pytest.raises(Exception):
29 Release(name="0.1.0", main_url="https://github.com/a/b/", version_range = VersionRange())
32def test_release_needs_url():
33 with pytest.raises(Exception):
34 Release(name="v0.1.0", version_range=VersionRange())
36def test_release_url_must_match():
37 with pytest.raises(Exception):
38 Release(name="v0.1.0", main_url="https://github.com/", version_range=VersionRange())
40def test_release_url_cant_be_gl():
41 with pytest.raises(Exception):
42 Release(name="v0.1.0", main_url="https://gitlab.com/a/b/", version_range=VersionRange())
44def test_required_deps_scijava():
45 Release(
46 name="v0.1.0",
47 main_url="https://github.com/a/b/",
48 required_dependency_urls=["https://maven.scijava.org/content/repositories/snapshots/io/github/qupath/qupath-extension-py4j/0.1.0-SNAPSHOT/qupath-extension-py4j-0.1.0-20241021.201937-1-all.jar"],
49 version_range=VersionRange())
51def test_required_deps_maven():
52 Release(
53 name="v0.1.0",
54 main_url="https://github.com/a/b/",
55 required_dependency_urls=["https://repo1.maven.org/maven2/org/webjars/ace/04.09.2013/ace-04.09.2013.jar"],
56 version_range=VersionRange())
58def test_release_needs_versions():
59 with pytest.raises(Exception):
60 Release(name="v0.1.0", main_url="https://github.com/a/b")
62def test_required_deps_gh():
63 Release(
64 name="v0.1.0",
65 main_url="https://github.com/a/b/",
66 required_dependency_urls=["https://github.com/a/b/"],
67 version_range=VersionRange())
69def test_required_deps_cant_be_gl():
70 with pytest.raises(Exception):
71 Release(
72 name="v0.1.0",
73 main_url="https://github.com/a/b/",
74 required_dependency_urls=["https://gitlab.com/a/b/"],
75 version_range=VersionRange())
77def test_optional_deps():
78 Release(
79 name="v0.1.0",
80 main_url="https://github.com/a/b/",
81 optional_dependency_urls=["https://github.com/a/b/"],
82 version_range=VersionRange())
84def test_optional_deps_cant_be_gl():
85 with pytest.raises(Exception):
86 Release(
87 name="v0.1.0",
88 main_url="https://github.com/a/b/",
89 optional_dependency_urls=["https://gitlab.com/a/b/"],
90 version_range=VersionRange())
92def test_optional_deps_scijava():
93 Release(
94 name="v0.1.0",
95 main_url="https://github.com/a/b/",
96 optional_dependency_urls=["https://maven.scijava.org/content/repositories/snapshots/io/github/qupath/qupath-extension-py4j/0.1.0-SNAPSHOT/qupath-extension-py4j-0.1.0-20241021.201937-1-all.jar"],
97 version_range=VersionRange())
99def test_optional_deps_maven():
100 Release(
101 name="v0.1.0",
102 main_url="https://github.com/a/b/",
103 optional_dependency_urls=["https://repo1.maven.org/maven2/org/webjars/ace/04.09.2013/ace-04.09.2013.jar"],
104 version_range=VersionRange())
106def test_javadoc_urls():
107 Release(
108 name="v0.1.0",
109 main_url="https://github.com/a/b/",
110 javadoc_urls=["https://github.com/a/b/"],
111 version_range=VersionRange())
113def test_javadoc_urls_cant_be_gl():
114 with pytest.raises(Exception):
115 Release(
116 name="v0.1.0",
117 main_url="https://github.com/a/b/",
118 javadoc_urls=["https://gitlab.com/a/b/"],
119 version_range=VersionRange())
121def test_optional_deps_scijava():
122 Release(
123 name="v0.1.0",
124 main_url="https://github.com/a/b/",
125 javadoc_urls=["https://maven.scijava.org/content/repositories/snapshots/io/github/qupath/qupath-extension-py4j/0.1.0-SNAPSHOT/qupath-extension-py4j-0.1.0-20241021.201937-1-all.jar"],
126 version_range=VersionRange())
128def test_optional_deps_maven():
129 Release(
130 name="v0.1.0",
131 main_url="https://github.com/a/b/",
132 javadoc_urls=["https://repo1.maven.org/maven2/org/webjars/ace/04.09.2013/ace-04.09.2013.jar"],
133 version_range=VersionRange())
136def test_extension_creation():
137 Extension(
138 name="my-extension",
139 description="My extension",
140 author="Me",
141 homepage="https://github.com/a/b",
142 releases = [
143 Release(
144 name="v0.1.0",
145 main_url="https://github.com/a/b/",
146 version_range=VersionRange()
147 )
148 ]
149 )
151def test_extension_homepage_validation():
152 with pytest.raises(Exception):
153 Extension(
154 name="my-extension",
155 description="My extension",
156 author="Me",
157 homepage="https://github.com/",
158 releases = [
159 Release(
160 name="v0.1.0",
161 main_url="https://github.com/a/b/",
162 version_range=VersionRange()
163 )
164 ]
165 )
167def test_extension_homepage_must_be_gh():
168 with pytest.raises(Exception):
169 Extension(
170 name="my-extension",
171 description="My extension",
172 author="Me",
173 homepage="https://gitlab.com/a/b",
174 releases = [
175 Release(
176 name="v0.1.0",
177 main_url="https://github.com/a/b/",
178 version_range=VersionRange()
179 )
180 ]
181 )
183def test_catalog_creation():
184 Catalog(
185 name="My catalog",
186 description="My description",
187 extensions = [
188 Extension(
189 name="my-extension",
190 description="My extension",
191 author="Me",
192 homepage="https://github.com/a/b",
193 releases = [
194 Release(
195 name="v0.1.0",
196 main_url="https://github.com/a/b/",
197 version_range=VersionRange()
198 )
199 ]
200 )
201 ]
202 )
204def test_catalog_cannot_have_duplicate_names():
205 with pytest.raises(Exception):
206 Catalog(
207 name="My catalog",
208 description="My description",
209 extensions = [
210 Extension(
211 name="my-extension",
212 description="My extension",
213 author="Me",
214 homepage="https://github.com/a/b",
215 releases = [
216 Release(
217 name="v0.1.0",
218 main_url="https://github.com/a/b/",
219 version_range=VersionRange()
220 )
221 ]
222 ),
223 Extension(
224 name="my-extension",
225 description="My extension",
226 author="Me",
227 homepage="https://github.com/a/b",
228 releases = [
229 Release(
230 name="v0.1.0",
231 main_url="https://github.com/a/b/",
232 version_range=VersionRange()
233 )
234 ]
235 )
236 ]
237 )