From 529c4208e6f48886e18c053597bedf96b2822432 Mon Sep 17 00:00:00 2001 From: Pey Lian Lim <2090236+pllim@users.noreply.github.com> Date: Fri, 13 Mar 2020 16:41:51 -0400 Subject: [PATCH 1/2] Jail doctestplus outputs in tmpdir. Co-authored-by: James Davies --- pytest_doctestplus/plugin.py | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/pytest_doctestplus/plugin.py b/pytest_doctestplus/plugin.py index 6d90d71..fa4abdc 100644 --- a/pytest_doctestplus/plugin.py +++ b/pytest_doctestplus/plugin.py @@ -51,6 +51,23 @@ def __exit__(self, *args, **kwargs): """.lstrip() +@pytest.fixture(autouse=True) +def _docdir(request): + """Run doctests in isolated tmpdir so outputs do not end up in repo""" + # Trigger ONLY for doctestplus + doctest_plugin = request.config.pluginmanager.getplugin("doctestplus") + if isinstance(request.node, doctest_plugin._doctest_textfile_item_cls): + # Don't apply this fixture to io.rst. It reads files and doesn't write + if "io.rst" not in request.node.name: + tmpdir = request.getfixturevalue('tmpdir') + with tmpdir.as_cwd(): + yield + else: + yield + else: + yield + + # these pytest hooks allow us to mark tests and run the marked tests with # specific command line options. def pytest_addoption(parser): From a93c148bc643435bc2522049a409bfb6ca23a5ec Mon Sep 17 00:00:00 2001 From: Pey Lian Lim <2090236+pllim@users.noreply.github.com> Date: Mon, 16 Mar 2020 17:14:23 -0400 Subject: [PATCH 2/2] Call my name, Bastian --- pytest_doctestplus/plugin.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pytest_doctestplus/plugin.py b/pytest_doctestplus/plugin.py index fa4abdc..131548a 100644 --- a/pytest_doctestplus/plugin.py +++ b/pytest_doctestplus/plugin.py @@ -55,8 +55,8 @@ def __exit__(self, *args, **kwargs): def _docdir(request): """Run doctests in isolated tmpdir so outputs do not end up in repo""" # Trigger ONLY for doctestplus - doctest_plugin = request.config.pluginmanager.getplugin("doctestplus") - if isinstance(request.node, doctest_plugin._doctest_textfile_item_cls): + doctest_plugin = request.config.pluginmanager.getplugin("pytest_doctestplus") + if isinstance(request.node, doctest_plugin.DocTestTextfilePlus): # Don't apply this fixture to io.rst. It reads files and doesn't write if "io.rst" not in request.node.name: tmpdir = request.getfixturevalue('tmpdir')