Skip to content

Commit 1b0cb48

Browse files
Merge pull request steam-bell-92#1745 from jyotish6699/test/registry-validator-missing-coverage
test: add missing RegistryValidator test coverage
2 parents 6affaa9 + 05a6fd2 commit 1b0cb48

1 file changed

Lines changed: 104 additions & 0 deletions

File tree

tests/test_registry_validator.py

Lines changed: 104 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -200,3 +200,107 @@ def test_invalid_json(tmp_path):
200200

201201
assert any("invalid json" in e.lower() for e in validator.errors)
202202

203+
204+
def test_missing_registry_file(tmp_path):
205+
registry = tmp_path / "missing_registry.json"
206+
207+
validator = RegistryValidator(registry)
208+
209+
validator.validate()
210+
211+
assert any(
212+
"registry file not found" in error.lower()
213+
for error in validator.errors
214+
)
215+
216+
217+
def test_keywords_must_be_list(tmp_path):
218+
(tmp_path / "demo.py").write_text("print('hello')")
219+
220+
registry = write_registry(
221+
tmp_path,
222+
[
223+
{
224+
"name": "Demo",
225+
"emoji": "🔥",
226+
"category": "utilities",
227+
"difficulty": "beginner",
228+
"description": "Demo project",
229+
"keywords": "demo",
230+
"path": "demo.py",
231+
}
232+
],
233+
)
234+
235+
validator = RegistryValidator(registry)
236+
237+
validator.validate()
238+
239+
assert any(
240+
"keywords must be a list" in error.lower()
241+
for error in validator.errors
242+
)
243+
244+
245+
def test_empty_keywords_generates_warning(tmp_path):
246+
(tmp_path / "demo.py").write_text("print('hello')")
247+
248+
registry = write_registry(
249+
tmp_path,
250+
[
251+
{
252+
"name": "Demo",
253+
"emoji": "🔥",
254+
"category": "utilities",
255+
"difficulty": "beginner",
256+
"description": "Demo project",
257+
"keywords": [],
258+
"path": "demo.py",
259+
}
260+
],
261+
)
262+
263+
validator = RegistryValidator(registry)
264+
265+
validator.validate()
266+
267+
assert validator.errors == []
268+
269+
assert any(
270+
"has no keywords" in warning.lower()
271+
for warning in validator.warnings
272+
)
273+
274+
275+
def test_json_report(tmp_path, capsys):
276+
(tmp_path / "demo.py").write_text("print('hello')")
277+
278+
registry = write_registry(
279+
tmp_path,
280+
[
281+
{
282+
"name": "Demo",
283+
"emoji": "🔥",
284+
"category": "utilities",
285+
"difficulty": "beginner",
286+
"description": "Demo project",
287+
"keywords": ["demo"],
288+
"path": "demo.py",
289+
}
290+
],
291+
)
292+
293+
validator = RegistryValidator(registry)
294+
295+
validator.validate()
296+
297+
validator.report(json_output=True)
298+
299+
captured = capsys.readouterr()
300+
301+
output = json.loads(captured.out)
302+
303+
assert output["projects"] == 1
304+
assert output["errors"] == 0
305+
assert output["warnings"] == 0
306+
assert output["status"] == "passed"

0 commit comments

Comments
 (0)