Coverage for tests/test_collector.py: 100.00%
14 statements
« prev ^ index » next coverage.py v7.6.12, created at 2025-03-09 18:38 +0100
« prev ^ index » next coverage.py v7.6.12, created at 2025-03-09 18:38 +0100
1"""Tests for the `collector` module."""
3from unittest import mock
5import pytest
6from mkdocstrings import CollectionError
8from mkdocstrings_handlers.python import get_handler
11class _FakeMkDocsConfig:
12 config_file_path = "mkdocs.yml"
15@pytest.mark.parametrize(
16 ("retval", "exp_res"),
17 [
18 ({"error": "error1", "traceback": "hello"}, "error1\nhello"),
19 ({"error": "error1"}, "error1"),
20 ({"error": "", "traceback": "hello"}, "\nhello"),
21 ],
22)
23def test_collect_result_error(retval: dict, exp_res: str) -> None:
24 """Test handling of errors when collecting an object.
26 Args:
27 retval: Return value to mock `json.loads` with.
28 exp_res: Expected result.
29 """
30 with mock.patch("mkdocstrings_handlers.python.handler.json.loads") as m_loads: # noqa: SIM117
31 with pytest.raises(CollectionError) as excinfo: # noqa: PT012
32 m_loads.return_value = retval
33 handler = get_handler({}, _FakeMkDocsConfig, theme="material") # type: ignore[arg-type]
34 assert handler.collect("", {})
35 assert str(excinfo.value) == exp_res