From 0278a54a4faed3e672acf6ee086f9dfa0b371b35 Mon Sep 17 00:00:00 2001 From: Paul Haesler Date: Tue, 23 Jul 2024 20:37:32 +1000 Subject: [PATCH] get sphinx tests working - fixture parametisation needs more work. --- tests/test_sphinx.py | 33 ++++++++++++++++++++++++--------- 1 file changed, 24 insertions(+), 9 deletions(-) diff --git a/tests/test_sphinx.py b/tests/test_sphinx.py index 82756f7..b4b4630 100644 --- a/tests/test_sphinx.py +++ b/tests/test_sphinx.py @@ -38,7 +38,6 @@ def sphinx_directive(directive): return mapping[directive] - # noinspection PyShadowingNames @pytest.mark.parametrize( "reason, version, remove_version, expected", @@ -52,7 +51,7 @@ def sphinx_directive(directive): ), ), ( - None, + '', '1.2.0', None, textwrap.dedent( @@ -74,11 +73,18 @@ def foo(x, y): # is decorated with: decorator_factory = getattr(deprecat.sphinx, directive) - decorator = decorator_factory(reason=reason, version=version) + if directive in ("versionadded", "versionchanged") and remove_version is not None: + return + + if directive in ("versionadded", "versionchanged"): + decorator = decorator_factory(reason=reason, version=version) + expected = expected.format(directive=sphinx_directive, version=version, reason=reason, remove_version=None) + else: + decorator = decorator_factory(reason=reason, version=version, remove_version=remove_version) + expected = expected.format(directive=sphinx_directive, version=version, reason=reason, remove_version=remove_version) foo = decorator(foo) # The function must contain this Sphinx docstring: - expected = expected.format(directive=sphinx_directive, version=version, reason=reason, remove_version=remove_version) current = textwrap.dedent(foo.__doc__) assert current.endswith(expected) @@ -116,16 +122,16 @@ def foo(x, y): textwrap.dedent( """\ .. {directive}:: {version} - {reason} + {reason} - Warning: This deprecated feature will be removed in version {remove_version} + Warning: This deprecated feature will be removed in version {remove_version} """ ), ), ( - None, + "", '1.2.0', - None, + "", textwrap.dedent( """\ .. {directive}:: {version} @@ -136,6 +142,8 @@ def foo(x, y): ids=["reason&version", "version"], ) def test_cls_has_sphinx_docstring(docstring, directive, sphinx_directive, reason, version, remove_version, expected): + if directive in ("versionadded", "versionchanged") and remove_version is not None: + return # The class: class Foo(object): pass @@ -145,9 +153,16 @@ class Foo(object): # is decorated with: decorator_factory = getattr(deprecat.sphinx, directive) - decorator = decorator_factory(reason=reason, version=version) + + if directive in ("versionadded", "versionchanged"): + decorator = decorator_factory(reason=reason, version=version, line_length=85) + expected = expected.format(directive=sphinx_directive, version=version, reason=reason, remove_version=None, line_length=85) + else: + decorator = decorator_factory(reason=reason, version=version, remove_version=remove_version, line_length=85) + expected = expected.format(directive=sphinx_directive, version=version, reason=reason, remove_version=remove_version, line_length=85) Foo = decorator(Foo) + # The class must contain this Sphinx docstring: expected = expected.format(directive=sphinx_directive, version=version, remove_version=remove_version, reason=reason)