diff --git a/src/mkdocs_git_revision_date_localized_plugin/__init__.py b/src/mkdocs_git_revision_date_localized_plugin/__init__.py index bf25615..daa50c7 100644 --- a/src/mkdocs_git_revision_date_localized_plugin/__init__.py +++ b/src/mkdocs_git_revision_date_localized_plugin/__init__.py @@ -1 +1 @@ -__version__ = "1.4.1" +__version__ = "1.4.2" diff --git a/src/mkdocs_git_revision_date_localized_plugin/plugin.py b/src/mkdocs_git_revision_date_localized_plugin/plugin.py index 495251b..671b352 100644 --- a/src/mkdocs_git_revision_date_localized_plugin/plugin.py +++ b/src/mkdocs_git_revision_date_localized_plugin/plugin.py @@ -149,11 +149,21 @@ def parallel_compute_commit_timestamps(self, files, original_source: Optional[Di pool = multiprocessing.Pool(processes=min(10, multiprocessing.cpu_count())) results = [] for f in files: - if f.is_documentation_page(): + print(f.abs_src_path) + if not f.is_documentation_page(): + continue + elif getattr(f, "generated_by", None): + continue + elif f.abs_src_path is None: + continue + elif exclude(f.src_path, self.config.get("exclude", [])): + continue + else: abs_src_path = f.abs_src_path - # Support plugins like monorep that might have moved the files from the original source that is under git + # Support plugins like monorepo that might have moved the files from the original source that is under git if original_source and abs_src_path in original_source: abs_src_path = original_source[abs_src_path] + assert Path(abs_src_path).exists() abs_src_path = str(Path(abs_src_path).absolute()) result = pool.apply_async(self.util.get_git_commit_timestamp, args=(abs_src_path, is_first_commit)) @@ -182,11 +192,12 @@ def on_files(self, files: Files, config: MkDocsConfig): try: if not self.last_revision_commits: - self.parallel_compute_commit_timestamps(files=files, original_source=original_source, is_first_commit=False) + self.parallel_compute_commit_timestamps(files=files, original_source=original_source, is_first_commit=False) if not self.created_commits: self.parallel_compute_commit_timestamps(files=files, original_source=original_source, is_first_commit=True) except Exception as e: logging.warning(f"Parallel processing failed: {str(e)}.\n To fall back to serial processing, use 'enable_parallel_processing: False' setting.") + raise e def on_page_markdown(self, markdown: str, page: Page, config: config_options.Config, files, **kwargs) -> str: diff --git a/tests/fixtures/basic_project/gen_files.py b/tests/fixtures/basic_project/gen_files.py new file mode 100644 index 0000000..8534291 --- /dev/null +++ b/tests/fixtures/basic_project/gen_files.py @@ -0,0 +1,5 @@ +# for testing with generated files. See mkdocs_plugin_genfiles.yml +import mkdocs_gen_files + +with mkdocs_gen_files.open("foo.md", "w") as f: + print("Bar, world!", file=f) \ No newline at end of file diff --git a/tests/fixtures/basic_project/mkdocs_plugin_genfiles.yml b/tests/fixtures/basic_project/mkdocs_plugin_genfiles.yml new file mode 100644 index 0000000..abbf9f8 --- /dev/null +++ b/tests/fixtures/basic_project/mkdocs_plugin_genfiles.yml @@ -0,0 +1,9 @@ +site_name: test gitrevisiondatelocalized_plugin +use_directory_urls: true + +plugins: + - search + - gen-files: + scripts: + - gen_files.py # or any other name or path + - git-revision-date-localized \ No newline at end of file diff --git a/tests/test_builds.py b/tests/test_builds.py index a85022e..417afd6 100644 --- a/tests/test_builds.py +++ b/tests/test_builds.py @@ -119,8 +119,10 @@ def setup_clean_mkdocs_folder(mkdocs_yml_path, output_path): else: shutil.copytree("tests/fixtures/basic_project/docs", str(testproject_path / "docs")) + shutil.copyfile("tests/fixtures/basic_project/gen_files.py", str(testproject_path / "gen_files.py")) shutil.copyfile(mkdocs_yml_path, str(testproject_path / "mkdocs.yml")) + if "gen-files" in mkdocs_yml_path: shutil.copyfile(str(Path(mkdocs_yml_path).parent / "gen_pages.py"), str(testproject_path / "gen_pages.py")) @@ -694,3 +696,15 @@ def test_monorepo_compat_reverse_order(tmp_path): setup_commit_history(testproject_path) result = build_docs_setup(testproject_path) assert result.exit_code == 0, f"'mkdocs build' command failed with:\n\n{result.stdout}" + + +def test_genfiles_plugin(tmp_path): + testproject_path = setup_clean_mkdocs_folder("tests/fixtures/basic_project/mkdocs_plugin_genfiles.yml", tmp_path) + setup_commit_history(testproject_path) + + result = build_docs_setup(testproject_path) + assert result.exit_code == 0, f"'mkdocs build' command failed with:\n\n{result.stdout}" + + page_with_tag = testproject_path / "site/foo/index.html" + contents = page_with_tag.read_text(encoding="utf8") + assert "Bar, world!" in contents \ No newline at end of file