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

1"""Tests for the `collector` module.""" 

2 

3from unittest import mock 

4 

5import pytest 

6from mkdocstrings import CollectionError 

7 

8from mkdocstrings_handlers.python import get_handler 

9 

10 

11class _FakeMkDocsConfig: 

12 config_file_path = "mkdocs.yml" 

13 

14 

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. 

25 

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