| 
									
										
										
										
											2024-03-16 18:06:58 +01:00
										 |  |  | from __future__ import annotations | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-07-23 02:38:45 +01:00
										 |  |  | import gettext | 
					
						
							| 
									
										
										
										
											2023-09-13 17:58:35 -04:00
										 |  |  | import os | 
					
						
							| 
									
										
										
										
											2024-01-17 02:38:46 +00:00
										 |  |  | import sys | 
					
						
							| 
									
										
										
										
											2023-07-28 00:39:12 +01:00
										 |  |  | from pathlib import Path | 
					
						
							| 
									
										
										
										
											2024-03-16 18:06:58 +01:00
										 |  |  | from typing import TYPE_CHECKING | 
					
						
							| 
									
										
										
										
											2017-01-07 00:46:26 +09:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-08-26 11:28:06 +09:00
										 |  |  | import docutils | 
					
						
							| 
									
										
										
										
											2017-05-07 16:46:44 +09:00
										 |  |  | import pytest | 
					
						
							| 
									
										
										
										
											2018-02-19 22:39:14 +09:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-08-26 11:28:06 +09:00
										 |  |  | import sphinx | 
					
						
							| 
									
										
										
										
											2023-01-31 23:10:48 +01:00
										 |  |  | import sphinx.locale | 
					
						
							| 
									
										
										
										
											2024-01-17 02:38:46 +00:00
										 |  |  | import sphinx.pycode | 
					
						
							| 
									
										
										
										
											2024-01-18 23:30:22 +00:00
										 |  |  | from sphinx.testing.util import _clean_up_global_state | 
					
						
							| 
									
										
										
										
											2017-01-03 22:24:00 +09:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-03-16 18:06:58 +01:00
										 |  |  | if TYPE_CHECKING: | 
					
						
							| 
									
										
										
										
											2024-04-09 03:26:44 +01:00
										 |  |  |     from collections.abc import Iterator | 
					
						
							| 
									
										
										
										
											2024-03-16 18:06:58 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-01-31 23:10:48 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-03-16 18:06:58 +01:00
										 |  |  | def _init_console( | 
					
						
							| 
									
										
										
										
											2024-08-11 14:58:56 +01:00
										 |  |  |     locale_dir: str | None = sphinx.locale._LOCALE_DIR, | 
					
						
							|  |  |  |     catalog: str = 'sphinx', | 
					
						
							| 
									
										
										
										
											2024-07-23 02:38:45 +01:00
										 |  |  | ) -> tuple[gettext.NullTranslations, bool]: | 
					
						
							| 
									
										
										
										
											2023-01-31 23:10:48 +01:00
										 |  |  |     """Monkeypatch ``init_console`` to skip its action.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     Some tests rely on warning messages in English. We don't want | 
					
						
							|  |  |  |     CLI tests to bleed over those tests and make their warnings | 
					
						
							|  |  |  |     translated. | 
					
						
							|  |  |  |     """
 | 
					
						
							| 
									
										
										
										
											2024-07-23 02:38:45 +01:00
										 |  |  |     return gettext.NullTranslations(), False | 
					
						
							| 
									
										
										
										
											2023-01-31 23:10:48 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | sphinx.locale.init_console = _init_console | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-03-16 18:06:58 +01:00
										 |  |  | pytest_plugins = ['sphinx.testing.fixtures'] | 
					
						
							| 
									
										
										
										
											2017-01-03 22:24:00 +09:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-10-26 16:59:46 +01:00
										 |  |  | # Exclude 'roots' dirs for pytest test collector | 
					
						
							|  |  |  | collect_ignore = ['roots'] | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-09-13 17:58:35 -04:00
										 |  |  | os.environ['SPHINX_AUTODOC_RELOAD_MODULES'] = '1' | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-01-03 22:24:00 +09:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-05-07 16:46:44 +09:00
										 |  |  | @pytest.fixture(scope='session') | 
					
						
							| 
									
										
										
										
											2024-03-16 18:06:58 +01:00
										 |  |  | def rootdir() -> Path: | 
					
						
							| 
									
										
										
										
											2024-01-17 02:38:46 +00:00
										 |  |  |     return Path(__file__).parent.resolve() / 'roots' | 
					
						
							| 
									
										
										
										
											2017-12-22 18:50:49 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-03-16 18:06:58 +01:00
										 |  |  | def pytest_report_header(config: pytest.Config) -> str: | 
					
						
							| 
									
										
										
										
											2024-08-11 14:58:56 +01:00
										 |  |  |     header = f'libraries: Sphinx-{sphinx.__display_version__}, docutils-{docutils.__version__}' | 
					
						
							| 
									
										
										
										
											2019-02-01 19:01:51 +09:00
										 |  |  |     if hasattr(config, '_tmp_path_factory'): | 
					
						
							| 
									
										
										
										
											2024-08-11 14:58:56 +01:00
										 |  |  |         header += f'\nbase tmp_path: {config._tmp_path_factory.getbasetemp()}' | 
					
						
							| 
									
										
										
										
											2019-02-01 19:01:51 +09:00
										 |  |  |     return header | 
					
						
							| 
									
										
										
										
											2024-01-17 02:38:46 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | @pytest.fixture(autouse=True) | 
					
						
							| 
									
										
										
										
											2024-04-09 03:26:44 +01:00
										 |  |  | def _cleanup_docutils() -> Iterator[None]: | 
					
						
							| 
									
										
										
										
											2024-01-17 02:38:46 +00:00
										 |  |  |     saved_path = sys.path | 
					
						
							|  |  |  |     yield  # run the test | 
					
						
							|  |  |  |     sys.path[:] = saved_path | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-01-18 23:30:22 +00:00
										 |  |  |     _clean_up_global_state() |