Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package python-pytest-doctestplus for 
openSUSE:Factory checked in at 2023-07-25 11:51:24
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-pytest-doctestplus (Old)
 and      /work/SRC/openSUSE:Factory/.python-pytest-doctestplus.new.1467 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-pytest-doctestplus"

Tue Jul 25 11:51:24 2023 rev:15 rq:1100443 version:0.13.0

Changes:
--------
--- 
/work/SRC/openSUSE:Factory/python-pytest-doctestplus/python-pytest-doctestplus.changes
      2023-05-05 15:58:50.540620435 +0200
+++ 
/work/SRC/openSUSE:Factory/.python-pytest-doctestplus.new.1467/python-pytest-doctestplus.changes
    2023-07-25 11:53:14.806205516 +0200
@@ -1,0 +2,9 @@
+Mon Jul 24 18:57:08 UTC 2023 - Dirk Müller <dmuel...@suse.com>
+
+- update to 0.13.0:
+  * Compatibility with pytest 7.4 with respect to
+    ``norecursedirs`` handling. [#201]
+  * Respect ``--doctest-continue-on-failure`` flag. [#197]
+  * Report doctests raising skip exceptions as skipped. [#196]
+
+-------------------------------------------------------------------

Old:
----
  pytest-doctestplus-0.12.1.tar.gz

New:
----
  pytest-doctestplus-0.13.0.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ python-pytest-doctestplus.spec ++++++
--- /var/tmp/diff_new_pack.0bW04s/_old  2023-07-25 11:53:15.862211699 +0200
+++ /var/tmp/diff_new_pack.0bW04s/_new  2023-07-25 11:53:15.870211746 +0200
@@ -27,7 +27,7 @@
 
 %{?sle15_python_module_pythons}
 Name:           python-pytest-doctestplus%{psuffix}
-Version:        0.12.1
+Version:        0.13.0
 Release:        0
 Summary:        Pytest plugin with advanced doctest features
 License:        BSD-3-Clause

++++++ pytest-doctestplus-0.12.1.tar.gz -> pytest-doctestplus-0.13.0.tar.gz 
++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/pytest-doctestplus-0.12.1/.github/workflows/publish.yml 
new/pytest-doctestplus-0.13.0/.github/workflows/publish.yml
--- old/pytest-doctestplus-0.12.1/.github/workflows/publish.yml 2022-09-26 
21:22:32.000000000 +0200
+++ new/pytest-doctestplus-0.13.0/.github/workflows/publish.yml 2023-06-08 
07:19:59.000000000 +0200
@@ -13,10 +13,10 @@
     if: ((github.event_name == 'push' && startsWith(github.ref, 'refs/tags')) 
|| contains(github.event.pull_request.labels.*.name, 'Build wheels'))
 
     steps:
-    - uses: actions/checkout@v2
+    - uses: actions/checkout@v3
       with:
         fetch-depth: 0
-    - uses: actions/setup-python@v2
+    - uses: actions/setup-python@v4
       with:
         python-version: 3.8
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/pytest-doctestplus-0.12.1/.github/workflows/python-tests.yml 
new/pytest-doctestplus-0.13.0/.github/workflows/python-tests.yml
--- old/pytest-doctestplus-0.12.1/.github/workflows/python-tests.yml    
2022-09-26 21:22:32.000000000 +0200
+++ new/pytest-doctestplus-0.13.0/.github/workflows/python-tests.yml    
2023-06-08 07:19:59.000000000 +0200
@@ -5,6 +5,7 @@
   push:
     branches: [ main ]
     tags:
+      - '*'
   workflow_dispatch:
   schedule:
     # Run every Sunday at 03:53 UTC
@@ -42,19 +43,19 @@
             python-version: 3.9
             toxenv: py39-test-pytest62
           - os: macos-latest
-            python-version: 3.8
-            toxenv: py38-test-pytestdev
+            python-version: '3.11'
+            toxenv: py311-test-pytestdev
           - os: ubuntu-latest
             python-version: '3.10'
             toxenv: py310-test-pytest70
             toxargs: --pre
 
     steps:
-    - uses: actions/checkout@v2
+    - uses: actions/checkout@v3
       with:
         fetch-depth: 0
     - name: Set up Python ${{ matrix.python-version }}
-      uses: actions/setup-python@v2
+      uses: actions/setup-python@v4
       with:
         python-version: ${{ matrix.python-version }}
     - name: Install Tox
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pytest-doctestplus-0.12.1/.mailmap 
new/pytest-doctestplus-0.13.0/.mailmap
--- old/pytest-doctestplus-0.12.1/.mailmap      1970-01-01 01:00:00.000000000 
+0100
+++ new/pytest-doctestplus-0.13.0/.mailmap      2023-06-08 07:19:59.000000000 
+0200
@@ -0,0 +1,18 @@
+Brigitta Sipőcz        <bsip...@gmail.com>
+Brigitta Sipőcz        <bsip...@gmail.com> <b.sip...@gmail.com>
+Dan D'Avella           <drdave...@gmail.com>
+Dan D'Avella           <drdave...@gmail.com> <ddave...@stsci.edu>
+E. Madison Bray        <erik.m.b...@gmail.com>
+E. Madison Bray        <erik.m.b...@gmail.com> <emb...@stsci.edu>
+Hans Moritz Günther    <hgunt...@mit.edu>
+Kirill Tchernyshyov    <ktchernysh...@pha.jhu.edu>
+Leo Singer             <leo.p.sin...@nasa.gov> <leo.sin...@ligo.org>
+Matt Davis             <jiffyclub.programa...@gmail.com>
+Matteo Bachetti        <mat...@matteobachetti.it>
+Matteo Bachetti         <mat...@matteobachetti.it> 
<matteo.bache...@irap.omp.eu>
+Michael Seifert        <michaelseifer...@yahoo.de>
+Pey Lian Lim           <l...@stsci.edu> 
<2090236+pl...@users.noreply.github.com>
+Pratik Patel           <pratikpatel15...@gmail.com>
+Simon Conseil          <cont...@saimon.org> <s.cons...@ip2i.in2p3.fr>
+Simon Conseil          <cont...@saimon.org> <scons...@gemini.edu>
+Tinuade Adeleke        <summittinu...@gmail.com>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pytest-doctestplus-0.12.1/CHANGES.rst 
new/pytest-doctestplus-0.13.0/CHANGES.rst
--- old/pytest-doctestplus-0.12.1/CHANGES.rst   2022-09-26 21:22:32.000000000 
+0200
+++ new/pytest-doctestplus-0.13.0/CHANGES.rst   2023-06-08 07:19:59.000000000 
+0200
@@ -1,3 +1,12 @@
+0.13.0 (2023-06-07)
+===================
+
+- Compatibility with pytest 7.4 with respect to ``norecursedirs`` handling. 
[#201]
+
+- Respect ``--doctest-continue-on-failure`` flag. [#197]
+
+- Report doctests raising skip exceptions as skipped. [#196]
+
 0.12.1 (2022-09-26)
 ===================
 
@@ -6,7 +15,7 @@
 0.12.0 (2022-02-25)
 ===================
 
-- Run doctests in docstrings of Numpy ufuncs. [#123, #174]
+- Run doctests in docstrings of Numpy ufuncs. [#174, #175]
 
 0.11.2 (2021-12-09)
 ===================
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pytest-doctestplus-0.12.1/LICENSE.rst 
new/pytest-doctestplus-0.13.0/LICENSE.rst
--- old/pytest-doctestplus-0.12.1/LICENSE.rst   2022-09-26 21:22:32.000000000 
+0200
+++ new/pytest-doctestplus-0.13.0/LICENSE.rst   2023-06-08 07:19:59.000000000 
+0200
@@ -1,4 +1,4 @@
-Copyright (c) 2011-2017, Astropy Developers
+Copyright (c) 2011-2023, Astropy Developers
 
 All rights reserved.
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pytest-doctestplus-0.12.1/PKG-INFO 
new/pytest-doctestplus-0.13.0/PKG-INFO
--- old/pytest-doctestplus-0.12.1/PKG-INFO      2022-09-26 21:22:59.767977500 
+0200
+++ new/pytest-doctestplus-0.13.0/PKG-INFO      2023-06-08 07:20:18.047553800 
+0200
@@ -1,6 +1,6 @@
 Metadata-Version: 2.1
 Name: pytest-doctestplus
-Version: 0.12.1
+Version: 0.13.0
 Summary: Pytest plugin with advanced doctest features.
 Home-page: https://github.com/astropy/pytest-doctestplus
 Author: The Astropy Developers
@@ -123,6 +123,12 @@
 ``pytest-doctestplus`` plugin will be used, regardless of the contents of
 ``setup.cfg``.
 
+``pytest-doctestplus`` respects the ``--doctest-continue-on-failure`` flag.
+If set, doctests will report all failing lines, which may be useful to detect
+independent errors within the same doctest. However, it is likely to generate
+false positives when an early failure causes a variable later lines access to
+remain unset or have an unexpected value.
+
 This plugin respects the doctest options that are used by the built-in doctest
 plugin and are set in ``doctest_optionflags`` in ``setup.cfg``. By default,
 ``ELLIPSIS`` and ``NORMALIZE_WHITESPACE`` are used. For a description of all
@@ -246,6 +252,22 @@
 However, it is often useful to be able to skip docstrings associated with
 particular functions, methods, classes, or even entire files.
 
+Skipping All the Tests
+^^^^^^^^^^^^^^^^^^^^^^
+
+It is also possible to skip all doctests below a certain line using
+a ``doctest-skip-all`` comment.  Note the lack of ``::`` at the end
+of the line here.
+
+.. code-block:: rst
+
+    .. doctest-skip-all
+
+       >>> import non_existing
+       >>> non_existing.write_pseudo_code()
+       All the doctests are skipped in the file below
+
+
 Skip Unconditionally
 ^^^^^^^^^^^^^^^^^^^^
 
@@ -300,6 +322,16 @@
 
         >>> import asdf
         >>> asdf.open('file.asdf')
+
+Furthermore, if the code only runs for specific versions of the optional 
dependency,
+you can add a version check like this:
+
+.. code-block:: rst
+
+    .. doctest-requires:: asdf<3
+
+        >>> import asdf
+        >>> asdf.open('file.asdf')
 
 Finally, it is possible to skip collecting doctests in entire subpackages by
 using the ``doctest_subpackage_requires`` in the ``[tool:pytest]`` section of
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pytest-doctestplus-0.12.1/README.rst 
new/pytest-doctestplus-0.13.0/README.rst
--- old/pytest-doctestplus-0.12.1/README.rst    2022-09-26 21:22:32.000000000 
+0200
+++ new/pytest-doctestplus-0.13.0/README.rst    2023-06-08 07:19:59.000000000 
+0200
@@ -94,6 +94,12 @@
 ``pytest-doctestplus`` plugin will be used, regardless of the contents of
 ``setup.cfg``.
 
+``pytest-doctestplus`` respects the ``--doctest-continue-on-failure`` flag.
+If set, doctests will report all failing lines, which may be useful to detect
+independent errors within the same doctest. However, it is likely to generate
+false positives when an early failure causes a variable later lines access to
+remain unset or have an unexpected value.
+
 This plugin respects the doctest options that are used by the built-in doctest
 plugin and are set in ``doctest_optionflags`` in ``setup.cfg``. By default,
 ``ELLIPSIS`` and ``NORMALIZE_WHITESPACE`` are used. For a description of all
@@ -217,6 +223,22 @@
 However, it is often useful to be able to skip docstrings associated with
 particular functions, methods, classes, or even entire files.
 
+Skipping All the Tests
+^^^^^^^^^^^^^^^^^^^^^^
+
+It is also possible to skip all doctests below a certain line using
+a ``doctest-skip-all`` comment.  Note the lack of ``::`` at the end
+of the line here.
+
+.. code-block:: rst
+
+    .. doctest-skip-all
+
+       >>> import non_existing
+       >>> non_existing.write_pseudo_code()
+       All the doctests are skipped in the file below
+
+
 Skip Unconditionally
 ^^^^^^^^^^^^^^^^^^^^
 
@@ -271,6 +293,16 @@
 
         >>> import asdf
         >>> asdf.open('file.asdf')
+
+Furthermore, if the code only runs for specific versions of the optional 
dependency,
+you can add a version check like this:
+
+.. code-block:: rst
+
+    .. doctest-requires:: asdf<3
+
+        >>> import asdf
+        >>> asdf.open('file.asdf')
 
 Finally, it is possible to skip collecting doctests in entire subpackages by
 using the ``doctest_subpackage_requires`` in the ``[tool:pytest]`` section of
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/pytest-doctestplus-0.12.1/pytest_doctestplus/plugin.py 
new/pytest-doctestplus-0.13.0/pytest_doctestplus/plugin.py
--- old/pytest-doctestplus-0.12.1/pytest_doctestplus/plugin.py  2022-09-26 
21:22:32.000000000 +0200
+++ new/pytest-doctestplus-0.13.0/pytest_doctestplus/plugin.py  2023-06-08 
07:19:59.000000000 +0200
@@ -11,8 +11,11 @@
 import warnings
 from pathlib import Path
 from textwrap import indent
+from unittest import SkipTest
 
 import pytest
+from _pytest.outcomes import OutcomeException  # Private API, but been around 
since 3.7
+from _pytest.doctest import _get_continue_on_failure  # Since 3.5, still in 7.3
 from packaging.version import Version
 
 from pytest_doctestplus.utils import ModuleChecker
@@ -258,8 +261,13 @@
 
             # uses internal doctest module parsing mechanism
             finder = DocTestFinderPlus(doctest_ufunc=use_doctest_ufunc)
-            runner = doctest.DebugRunner(
-                verbose=False, optionflags=options, checker=OutputChecker())
+            runner = DebugRunnerPlus(
+                verbose=False,
+                optionflags=options,
+                checker=OutputChecker(),
+                # Helper disables continue-on-failure when debugging is enabled
+                continue_on_failure=_get_continue_on_failure(config),
+            )
 
             for test in finder.find(module):
                 if test.examples:  # skip empty doctests
@@ -320,8 +328,10 @@
 
             optionflags = get_optionflags(self) | FIX
 
-            runner = doctest.DebugRunner(
-                verbose=False, optionflags=optionflags, 
checker=OutputChecker())
+            runner = DebugRunnerPlus(
+                verbose=False, optionflags=optionflags, 
checker=OutputChecker(),
+                continue_on_failure=_get_continue_on_failure(self.config),
+            )
 
             parser = DocTestParserPlus()
             test = parser.get_doctest(text, globs, filepath, filename, 0)
@@ -499,16 +509,12 @@
         """
         if PYTEST_GE_7_0:
             dirpath = Path(path).parent
-        else:
-            dirpath = path.dirpath()
-
-        try:
-            collect_ignore = config._getconftest_pathlist("collect_ignore", 
path=dirpath)
-        except TypeError:
-            # Pytest 7.0+
             collect_ignore = config._getconftest_pathlist("collect_ignore",
                                                           path=dirpath,
                                                           
rootpath=config.rootpath)
+        else:
+            dirpath = path.dirpath()
+            collect_ignore = config._getconftest_pathlist("collect_ignore", 
path=dirpath)
 
         # The collect_ignore conftest.py variable should cause all test
         # runners to ignore this file and all subfiles and subdirectories
@@ -548,7 +554,7 @@
                     self._ignore_paths.append(path)
                     break
 
-        return False
+        # None = Let other plugins decide the outcome.
 
     def pytest_collect_file(self, path, parent):
         """Implements an enhanced version of the doctest module from py.test
@@ -675,9 +681,10 @@
         if name is None and hasattr(obj, '__name__'):
             name = obj.__name__
         else:
-            raise ValueError("DocTestFinder.find: name must be given "
-                                "when obj.__name__ doesn't exist: {!r}"
-                                .format((type(obj),)))
+            raise ValueError(
+                "DocTestFinder.find: name must be given when obj.__name__ 
doesn't exist: "
+                f"{type(obj)!r}"
+            )
 
         if self._doctest_ufunc:
             for ufunc_name, ufunc_method in obj.__dict__.items():
@@ -711,3 +718,26 @@
             tests = list(filter(test_filter, tests))
 
         return tests
+
+
+class DebugRunnerPlus(doctest.DebugRunner):
+    def __init__(self, checker=None, verbose=None, optionflags=0, 
continue_on_failure=True):
+        super().__init__(checker=checker, verbose=verbose, 
optionflags=optionflags)
+        self.continue_on_failure = continue_on_failure
+
+    def report_failure(self, out, test, example, got):
+        failure = doctest.DocTestFailure(test, example, got)
+        if self.continue_on_failure:
+            out.append(failure)
+        else:
+            raise failure
+
+    def report_unexpected_exception(self, out, test, example, exc_info):
+        cls, exception, traceback = exc_info
+        if isinstance(exception, (OutcomeException, SkipTest)):
+            raise exception
+        failure = doctest.UnexpectedException(test, example, exc_info)
+        if self.continue_on_failure:
+            out.append(failure)
+        else:
+            raise failure
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/pytest-doctestplus-0.12.1/pytest_doctestplus/version.py 
new/pytest-doctestplus-0.13.0/pytest_doctestplus/version.py
--- old/pytest-doctestplus-0.12.1/pytest_doctestplus/version.py 2022-09-26 
21:22:59.000000000 +0200
+++ new/pytest-doctestplus-0.13.0/pytest_doctestplus/version.py 2023-06-08 
07:20:17.000000000 +0200
@@ -1,5 +1,4 @@
-# coding: utf-8
 # file generated by setuptools_scm
 # don't change, don't track in version control
-__version__ = version = '0.12.1'
-__version_tuple__ = version_tuple = (0, 12, 1)
+__version__ = version = '0.13.0'
+__version_tuple__ = version_tuple = (0, 13, 0)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/pytest-doctestplus-0.12.1/pytest_doctestplus.egg-info/PKG-INFO 
new/pytest-doctestplus-0.13.0/pytest_doctestplus.egg-info/PKG-INFO
--- old/pytest-doctestplus-0.12.1/pytest_doctestplus.egg-info/PKG-INFO  
2022-09-26 21:22:59.000000000 +0200
+++ new/pytest-doctestplus-0.13.0/pytest_doctestplus.egg-info/PKG-INFO  
2023-06-08 07:20:17.000000000 +0200
@@ -1,6 +1,6 @@
 Metadata-Version: 2.1
 Name: pytest-doctestplus
-Version: 0.12.1
+Version: 0.13.0
 Summary: Pytest plugin with advanced doctest features.
 Home-page: https://github.com/astropy/pytest-doctestplus
 Author: The Astropy Developers
@@ -123,6 +123,12 @@
 ``pytest-doctestplus`` plugin will be used, regardless of the contents of
 ``setup.cfg``.
 
+``pytest-doctestplus`` respects the ``--doctest-continue-on-failure`` flag.
+If set, doctests will report all failing lines, which may be useful to detect
+independent errors within the same doctest. However, it is likely to generate
+false positives when an early failure causes a variable later lines access to
+remain unset or have an unexpected value.
+
 This plugin respects the doctest options that are used by the built-in doctest
 plugin and are set in ``doctest_optionflags`` in ``setup.cfg``. By default,
 ``ELLIPSIS`` and ``NORMALIZE_WHITESPACE`` are used. For a description of all
@@ -246,6 +252,22 @@
 However, it is often useful to be able to skip docstrings associated with
 particular functions, methods, classes, or even entire files.
 
+Skipping All the Tests
+^^^^^^^^^^^^^^^^^^^^^^
+
+It is also possible to skip all doctests below a certain line using
+a ``doctest-skip-all`` comment.  Note the lack of ``::`` at the end
+of the line here.
+
+.. code-block:: rst
+
+    .. doctest-skip-all
+
+       >>> import non_existing
+       >>> non_existing.write_pseudo_code()
+       All the doctests are skipped in the file below
+
+
 Skip Unconditionally
 ^^^^^^^^^^^^^^^^^^^^
 
@@ -300,6 +322,16 @@
 
         >>> import asdf
         >>> asdf.open('file.asdf')
+
+Furthermore, if the code only runs for specific versions of the optional 
dependency,
+you can add a version check like this:
+
+.. code-block:: rst
+
+    .. doctest-requires:: asdf<3
+
+        >>> import asdf
+        >>> asdf.open('file.asdf')
 
 Finally, it is possible to skip collecting doctests in entire subpackages by
 using the ``doctest_subpackage_requires`` in the ``[tool:pytest]`` section of
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/pytest-doctestplus-0.12.1/pytest_doctestplus.egg-info/SOURCES.txt 
new/pytest-doctestplus-0.13.0/pytest_doctestplus.egg-info/SOURCES.txt
--- old/pytest-doctestplus-0.12.1/pytest_doctestplus.egg-info/SOURCES.txt       
2022-09-26 21:22:59.000000000 +0200
+++ new/pytest-doctestplus-0.13.0/pytest_doctestplus.egg-info/SOURCES.txt       
2023-06-08 07:20:18.000000000 +0200
@@ -1,4 +1,5 @@
 .gitignore
+.mailmap
 CHANGES.rst
 LICENSE.rst
 MANIFEST.in
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pytest-doctestplus-0.12.1/tests/conf.py 
new/pytest-doctestplus-0.13.0/tests/conf.py
--- old/pytest-doctestplus-0.12.1/tests/conf.py 2022-09-26 21:22:32.000000000 
+0200
+++ new/pytest-doctestplus-0.13.0/tests/conf.py 2023-06-08 07:19:59.000000000 
+0200
@@ -18,7 +18,7 @@
 # -- Project information -----------------------------------------------------
 
 project = 'pytest-doctestplus'
-copyright = '2021, Astropy Infrastructure Team'
+copyright = '2011-2023, Astropy Infrastructure Team'
 author = 'Astropy Infrastructure Team'
 
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pytest-doctestplus-0.12.1/tests/test_doctestplus.py 
new/pytest-doctestplus-0.13.0/tests/test_doctestplus.py
--- old/pytest-doctestplus-0.12.1/tests/test_doctestplus.py     2022-09-26 
21:22:32.000000000 +0200
+++ new/pytest-doctestplus-0.13.0/tests/test_doctestplus.py     2023-06-08 
07:19:59.000000000 +0200
@@ -1,6 +1,5 @@
 import glob
 import os
-from packaging.version import Version
 from textwrap import dedent
 import sys
 
@@ -676,35 +675,34 @@
     ).assertoutcome(passed=2)
 
 
-if Version('4.3.0') <= Version(pytest.__version__):
-    def test_ignore_glob_option(testdir):
-        testdir.makepyfile(foo="""
-            def f():
-                '''
-                >>> 1+1
-                2
-                '''
-                pass
-        """)
-        testdir.makepyfile(bar="""
-            def f():
-                '''
-                >>> 1+1
-                2
-                '''
-                pass
-        """)
-        testdir.makefile('.rst', foo='>>> 1+1\n2')
+def test_ignore_glob_option(testdir):
+    testdir.makepyfile(foo="""
+        def f():
+            '''
+            >>> 1+1
+            2
+            '''
+            pass
+    """)
+    testdir.makepyfile(bar="""
+        def f():
+            '''
+            >>> 1+1
+            2
+            '''
+            pass
+    """)
+    testdir.makefile('.rst', foo='>>> 1+1\n2')
 
-        testdir.inline_run(
-            '--doctest-plus', '--doctest-rst', '--ignore-glob', 'foo*'
-        ).assertoutcome(passed=1)
-        testdir.inline_run(
-            '--doctest-plus', '--doctest-rst', '--ignore-glob', 'bar*'
-        ).assertoutcome(passed=2)
-        testdir.inline_run(
-            '--doctest-plus', '--doctest-rst', '--ignore-glob', '*.rst'
-        ).assertoutcome(passed=2)
+    testdir.inline_run(
+        '--doctest-plus', '--doctest-rst', '--ignore-glob', 'foo*'
+    ).assertoutcome(passed=1)
+    testdir.inline_run(
+        '--doctest-plus', '--doctest-rst', '--ignore-glob', 'bar*'
+    ).assertoutcome(passed=2)
+    testdir.inline_run(
+        '--doctest-plus', '--doctest-rst', '--ignore-glob', '*.rst'
+    ).assertoutcome(passed=2)
 
 
 def test_doctest_only(testdir, makepyfile, maketestfile, makerstfile):
@@ -731,7 +729,7 @@
     testdir.inline_run("--doctest-only", 
"--doctest-rst").assertoutcome(passed=3, failed=2)
 
 
-def test_doctest_float_replacement(tmpdir):
+def test_doctest_float_replacement(tmp_path):
     test1 = dedent("""
         This will demonstrate a doctest that fails due to a few extra decimal
         places::
@@ -748,17 +746,27 @@
             0.333333333333333311
     """)
 
-    test1_rst = tmpdir.join('test1.rst')
-    test2_rst = tmpdir.join('test2.rst')
-    test1_rst.write(test1)
-    test2_rst.write(test2)
+    test1_rst = tmp_path / "test1.rst"
+    test2_rst = tmp_path / "test2.rst"
+    test1_rst.write_text(test1)
+    test2_rst.write_text(test2)
 
     with pytest.raises(doctest.DocTestFailure):
-        doctest.testfile(str(test1_rst), module_relative=False,
-                         raise_on_error=True, verbose=False, encoding='utf-8')
+        doctest.testfile(
+            test1_rst,
+            module_relative=False,
+            raise_on_error=True,
+            verbose=False,
+            encoding="utf-8",
+        )
 
-    doctest.testfile(str(test2_rst), module_relative=False,
-                     raise_on_error=True, verbose=False, encoding='utf-8')
+    doctest.testfile(
+        test2_rst,
+        module_relative=False,
+        raise_on_error=True,
+        verbose=False,
+        encoding="utf-8",
+    )
 
 
 def test_doctest_subpackage_requires(testdir, caplog):
@@ -957,6 +965,80 @@
     testdir.inline_run(p, '--doctest-plus', 
'--doctest-rst').assertoutcome(skipped=1)
 
 
+def test_skiptest(testdir):
+    testdir.makeini(
+        """
+        [pytest]
+        doctestplus = enabled
+    """
+    )
+    p = testdir.makepyfile(
+        """
+        class MyClass:
+            '''
+            >>> import pytest
+            >>> pytest.skip("I changed my mind")
+            >>> assert False, "This should not be reached"
+            '''
+            pass
+    """
+    )
+    reprec = testdir.inline_run(p, "--doctest-plus")
+    reprec.assertoutcome(skipped=1, failed=0)
+
+
+@pytest.mark.parametrize('cont_on_fail', [False, True])
+def test_fail_two_tests(testdir, cont_on_fail):
+    p = testdir.makepyfile(
+        """
+        class MyClass:
+            '''
+            .. doctest::
+
+                >>> print(2)
+                1
+
+            .. doctest::
+
+                >>> print(3)
+                1
+            '''
+            pass
+    """
+    )
+    arg = ("--doctest-continue-on-failure",) if cont_on_fail else ()
+    reprec = testdir.inline_run(p, "--doctest-plus", *arg)
+    reprec.assertoutcome(skipped=0, failed=1)
+    _, _, failed = reprec.listoutcomes()
+    report = failed[0]
+    assert "Expected:\n    1\nGot:\n    2" in report.longreprtext
+    assert ("Expected:\n    1\nGot:\n    3" in report.longreprtext) is 
cont_on_fail
+
+
+@pytest.mark.parametrize('cont_on_fail', [False, True])
+def test_fail_data_dependency(testdir, cont_on_fail):
+    p = testdir.makepyfile(
+        """
+        class MyClass:
+            '''
+            .. doctest::
+
+                >>> import nonexistentmodule as nem
+                >>> a = nem.calculate_something()
+            '''
+            pass
+    """
+    )
+    arg = ("--doctest-continue-on-failure",) if cont_on_fail else ()
+    reprec = testdir.inline_run(p, "--doctest-plus", *arg)
+    reprec.assertoutcome(skipped=0, failed=1)
+    _, _, failed = reprec.listoutcomes()
+    # Both lines fail in a single error
+    report = failed[0]
+    assert " as nem\nUNEXPECTED EXCEPTION: ModuleNotFoundError" in 
report.longreprtext
+    assert ("something()\nUNEXPECTED EXCEPTION: NameError" in 
report.longreprtext) is cont_on_fail
+
+
 def test_ufunc(testdir):
     pytest.importorskip('numpy')
 
@@ -1060,3 +1142,26 @@
 
     result = testdir.inline_run(build_dir, '--doctest-plus', 
'--doctest-modules', '--doctest-ufunc')
     result.assertoutcome(passed=2, failed=0)
+
+
+def test_norecursedirs(testdir):
+    testdir.makeini(
+        """
+        [pytest]
+        norecursedirs = \"bad_dir\"
+        doctestplus = enabled
+    """
+    )
+    subdir = testdir.mkdir("bad_dir")
+    badfile = subdir.join("test_foobar.py")
+    badfile.write_text("""
+        def f():
+            '''
+            >>> x = 1/3.
+            >>> x
+            0.333333
+            '''
+            fail
+    """, "utf-8")
+    reprec = testdir.inline_run(str(testdir), "--doctest-plus")
+    reprec.assertoutcome(failed=0, passed=0)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pytest-doctestplus-0.12.1/tox.ini 
new/pytest-doctestplus-0.13.0/tox.ini
--- old/pytest-doctestplus-0.12.1/tox.ini       2022-09-26 21:22:32.000000000 
+0200
+++ new/pytest-doctestplus-0.13.0/tox.ini       2023-06-08 07:19:59.000000000 
+0200
@@ -1,6 +1,6 @@
 [tox]
 envlist =
-    py{37,38,39,310}-test
+    py{37,38,39,310,311}-test
     codestyle
 requires =
     setuptools >= 30.3.0

Reply via email to