1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128
|
# coding: utf-8
import textwrap
import pytest
from deprecated.sphinx import SphinxAdapter
from deprecated.sphinx import deprecated
from deprecated.sphinx import versionadded
from deprecated.sphinx import versionchanged
@pytest.mark.parametrize(
"line_length, expected",
[
(
50,
textwrap.dedent(
"""
Description of foo
:return: nothing
.. {directive}:: 1.2.3
foo has changed in this version
bar bar bar bar bar bar bar bar bar bar bar
bar bar bar bar bar bar bar bar bar bar bar
bar
"""
),
),
(
0,
textwrap.dedent(
"""
Description of foo
:return: nothing
.. {directive}:: 1.2.3
foo has changed in this version
bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar
"""
),
),
],
ids=["wrapped", "long"],
)
@pytest.mark.parametrize("directive", ["versionchanged", "versionadded", "deprecated"])
def test_sphinx_adapter(directive, line_length, expected):
lines = [
"foo has changed in this version",
"", # newline
"bar " * 23, # long line
"", # trailing newline
]
reason = "\n".join(lines)
adapter = SphinxAdapter(directive, reason=reason, version="1.2.3", line_length=line_length)
def foo():
"""
Description of foo
:return: nothing
"""
wrapped = adapter.__call__(foo)
expected = expected.format(directive=directive)
assert wrapped.__doc__ == expected
@pytest.mark.parametrize("directive", ["versionchanged", "versionadded", "deprecated"])
def test_sphinx_adapter__empty_docstring(directive):
lines = [
"foo has changed in this version",
"", # newline
"bar " * 23, # long line
"", # trailing newline
]
reason = "\n".join(lines)
adapter = SphinxAdapter(directive, reason=reason, version="1.2.3", line_length=50)
def foo():
pass
wrapped = adapter.__call__(foo)
expected = textwrap.dedent(
"""
.. {directive}:: 1.2.3
foo has changed in this version
bar bar bar bar bar bar bar bar bar bar bar
bar bar bar bar bar bar bar bar bar bar bar
bar
"""
)
expected = expected.format(directive=directive)
assert wrapped.__doc__ == expected
@pytest.mark.parametrize(
"decorator_factory, directive",
[
(versionadded, "versionadded"),
(versionchanged, "versionchanged"),
(deprecated, "deprecated"),
],
)
def test_decorator_accept_line_length(decorator_factory, directive):
reason = "bar " * 30
decorator = decorator_factory(reason=reason, version="1.2.3", line_length=50)
def foo():
pass
foo = decorator(foo)
expected = textwrap.dedent(
"""
.. {directive}:: 1.2.3
bar bar bar bar bar bar bar bar bar bar bar
bar bar bar bar bar bar bar bar bar bar bar
bar bar bar bar bar bar bar bar
"""
)
expected = expected.format(directive=directive)
assert foo.__doc__ == expected
|