From 08d012ee4694ad6d14b27e67fcfbc6b29c92a9a0 Mon Sep 17 00:00:00 2001 From: samueljlieber Date: Wed, 12 Feb 2025 13:27:25 -0500 Subject: [PATCH] [IMP] tests: check resource file referenced Part-of: odoo/documentation#12063 Signed-off-by: Antoine Vandevenne (anv) Signed-off-by: Samuel Lieber (sali) --- tests/checkers/resource_files.py | 21 +++++++++++++++++++++ tests/main.py | 13 ++++++++----- 2 files changed, 29 insertions(+), 5 deletions(-) diff --git a/tests/checkers/resource_files.py b/tests/checkers/resource_files.py index 576fda893..28a14aa15 100644 --- a/tests/checkers/resource_files.py +++ b/tests/checkers/resource_files.py @@ -57,6 +57,27 @@ def check_resource_file_name(file_path): 'resource-file-name' ) +def check_resource_file_referenced(file, options=None): + """ Check that resource files are referenced in at least one RST file. """ + resource_file = Path(file) + resource_folder = resource_file.parent + rst_file = resource_folder.with_suffix('.rst') + if rst_file.exists(): + if resource_file.name not in rst_file.read_text(): + log_error( + file, + 0, + f"the resource file is not referenced in {rst_file}", + "resource-file-referenced", + ) + else: + log_error( + rst_file, + 0, + f"resource folder name '{resource_folder.name}' does not match an rst file name.", + 'resource-folder-match', + ) + @sphinxlint.checker('') def check_file_extensions(file, lines, options=None): """ Check that there is no file without extension. """ diff --git a/tests/main.py b/tests/main.py index 8d7de7760..3af845e85 100644 --- a/tests/main.py +++ b/tests/main.py @@ -18,15 +18,14 @@ CUSTOM_RST_DIRECTIVES = [ ] ADDITIONAL_CHECKERS = [ - checkers.resource_files.check_image_size, - checkers.resource_files.check_resource_file_name, + checkers.resource_files.check_resource_file_referenced ] def run_additional_checks(argv=None): _enabled_checkers, args = sphinxlint.parse_args(argv) for path in chain.from_iterable(sphinxlint.walk(path, args.ignore) for path in args.paths): - if not path.endswith('.rst'): + if path.startswith('content') and not path.endswith('.rst'): for checker in ADDITIONAL_CHECKERS: checker(path) @@ -88,6 +87,10 @@ if __name__ == '__main__': if os.getenv('REVIEW') == '1': # Enable checkers for `make review`. setattr(sphinxlint.check_line_too_long, 'enabled', True) setattr(checkers.rst_style.check_early_line_breaks, 'enabled', True) - ADDITIONAL_CHECKERS.extend([checkers.resource_files.check_image_color_depth]) - run_additional_checks() + ADDITIONAL_CHECKERS.extend([ + checkers.resource_files.check_image_size, + checkers.resource_files.check_image_color_depth, + checkers.resource_files.check_resource_file_name, + ]) + run_additional_checks() sys.exit(sphinxlint.main())