mirror of
https://github.com/sphinx-doc/sphinx.git
synced 2025-02-25 18:55:22 -06:00
51 lines
1.6 KiB
Python
51 lines
1.6 KiB
Python
"""
|
|
test_pycode_ast
|
|
~~~~~~~~~~~~~~~
|
|
|
|
Test pycode.ast
|
|
|
|
:copyright: Copyright 2007-2016 by the Sphinx team, see AUTHORS.
|
|
:license: BSD, see LICENSE for details.
|
|
"""
|
|
|
|
import sys
|
|
|
|
import pytest
|
|
|
|
from sphinx.pycode import ast
|
|
|
|
|
|
@pytest.mark.parametrize('source,expected', [
|
|
("os.path", "os.path"), # Attribute
|
|
("b'bytes'", "b'bytes'"), # Bytes
|
|
("object()", "object()"), # Call
|
|
("1234", "1234"), # Constant
|
|
("{'key1': 'value1', 'key2': 'value2'}",
|
|
"{'key1': 'value1', 'key2': 'value2'}"), # Dict
|
|
("...", "..."), # Ellipsis
|
|
("Tuple[int, int]", "Tuple[int, int]"), # Index, Subscript
|
|
("lambda x, y: x + y",
|
|
"lambda x, y: ..."), # Lambda
|
|
("[1, 2, 3]", "[1, 2, 3]"), # List
|
|
("sys", "sys"), # Name, NameConstant
|
|
("1234", "1234"), # Num
|
|
("{1, 2, 3}", "{1, 2, 3}"), # Set
|
|
("'str'", "'str'"), # Str
|
|
("(1, 2, 3)", "1, 2, 3"), # Tuple
|
|
])
|
|
def test_unparse(source, expected):
|
|
module = ast.parse(source)
|
|
assert ast.unparse(module.body[0].value) == expected
|
|
|
|
|
|
def test_unparse_None():
|
|
assert ast.unparse(None) is None
|
|
|
|
|
|
@pytest.mark.skipif(sys.version_info < (3, 8), reason='python 3.8+ is required.')
|
|
def test_unparse_py38():
|
|
source = "lambda x=0, /, y=1, *args, z, **kwargs: x + y + z"
|
|
expected = "lambda x=0, /, y=1, *args, z, **kwargs: ..."
|
|
module = ast.parse(source)
|
|
assert ast.unparse(module.body[0].value) == expected
|