diff --git a/roots/test-parallel/conf.py b/roots/test-parallel/conf.py new file mode 100644 index 00000000..9fefc4cd --- /dev/null +++ b/roots/test-parallel/conf.py @@ -0,0 +1 @@ +extensions = ["ablog"] diff --git a/roots/test-parallel/index.rst b/roots/test-parallel/index.rst new file mode 100644 index 00000000..6512aad2 --- /dev/null +++ b/roots/test-parallel/index.rst @@ -0,0 +1,7 @@ +test-postlist +=============== + +.. toctree:: + :maxdepth: 1 + + postlist diff --git a/roots/test-parallel/post1.rst b/roots/test-parallel/post1.rst new file mode 100644 index 00000000..102e2c32 --- /dev/null +++ b/roots/test-parallel/post1.rst @@ -0,0 +1,4 @@ +.. post:: 2020-12-01 + +post 1 +======= diff --git a/roots/test-parallel/post2.rst b/roots/test-parallel/post2.rst new file mode 100644 index 00000000..77a78606 --- /dev/null +++ b/roots/test-parallel/post2.rst @@ -0,0 +1,4 @@ +.. post:: 2020-12-01 + +post 2 +======= diff --git a/roots/test-parallel/post3.rst b/roots/test-parallel/post3.rst new file mode 100644 index 00000000..903b3dad --- /dev/null +++ b/roots/test-parallel/post3.rst @@ -0,0 +1,4 @@ +.. post:: 2020-12-01 + +post 3 +======= diff --git a/roots/test-parallel/post4.rst b/roots/test-parallel/post4.rst new file mode 100644 index 00000000..04f19d16 --- /dev/null +++ b/roots/test-parallel/post4.rst @@ -0,0 +1,4 @@ +.. post:: 2020-12-01 + +post 4 +======= diff --git a/roots/test-parallel/postlist.rst b/roots/test-parallel/postlist.rst new file mode 100644 index 00000000..a3d282df --- /dev/null +++ b/roots/test-parallel/postlist.rst @@ -0,0 +1,4 @@ +postlist +========== + +.. postlist:: diff --git a/src/ablog/__init__.py b/src/ablog/__init__.py index ce5a9640..a94772c0 100755 --- a/src/ablog/__init__.py +++ b/src/ablog/__init__.py @@ -167,6 +167,6 @@ def setup(app): app.add_message_catalog(MESSAGE_CATALOG_NAME, locale_dir) return { "version": __version__, - "parallel_read_safe": True, + "parallel_read_safe": False, "parallel_write_safe": True, } diff --git a/src/ablog/tests/test_parallel.py b/src/ablog/tests/test_parallel.py new file mode 100644 index 00000000..2e355f07 --- /dev/null +++ b/src/ablog/tests/test_parallel.py @@ -0,0 +1,27 @@ +from pathlib import Path +from subprocess import run + + +def test_not_safe_for_parallel_read(rootdir: Path, tmp_path: Path): + """Ablog is NOT safe for parallel read. In such case, it doesn't collect any posts.""" + # https://github.com/sunpy/ablog/issues/297 + # Very ugly hack to change the parallel_read_safe value to True + good_read_safe = '"parallel_read_safe": False' + bad_read_safe = '"parallel_read_safe": True' + init_py_path = Path(__file__).parent.parent / "__init__.py" + assert good_read_safe in init_py_path.read_text(encoding="utf-8") + bad_init_py = init_py_path.read_text().replace(good_read_safe, bad_read_safe) + init_py_path.write_text(bad_init_py, encoding="utf-8") + + # liborjelinek: I wasn't able to demonstrate the issue with the `parallel` argument to the `sphinx` fixture + # @pytest.mark.sphinx("html", testroot="parallel", parallel=2) + # therefore running sphinx-build externally + indir = rootdir / "test-parallel" + run(["sphinx-build", "-b", "html", indir.as_posix(), tmp_path.as_posix(), "-j", "auto"], check=True) + + # And posts are not collected by Ablog... + html = (tmp_path / "postlist.html").read_text(encoding="utf-8") + assert "post 1" not in html + assert "post 2" not in html + assert "post 3" not in html + assert "post 4" not in html