summaryrefslogtreecommitdiff
path: root/tests/test_pycode_ast.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/test_pycode_ast.py')
-rw-r--r--tests/test_pycode_ast.py34
1 files changed, 33 insertions, 1 deletions
diff --git a/tests/test_pycode_ast.py b/tests/test_pycode_ast.py
index af7e34a86..117feb8f7 100644
--- a/tests/test_pycode_ast.py
+++ b/tests/test_pycode_ast.py
@@ -8,27 +8,51 @@
:license: BSD, see LICENSE for details.
"""
+import sys
+
import pytest
from sphinx.pycode import ast
@pytest.mark.parametrize('source,expected', [
+ ("a + b", "a + b"), # Add
+ ("a and b", "a and b"), # And
("os.path", "os.path"), # Attribute
+ ("1 * 2", "1 * 2"), # BinOp
+ ("a & b", "a & b"), # BitAnd
+ ("a | b", "a | b"), # BitOr
+ ("a ^ b", "a ^ b"), # BitXor
+ ("a and b and c", "a and b and c"), # BoolOp
("b'bytes'", "b'bytes'"), # Bytes
("object()", "object()"), # Call
("1234", "1234"), # Constant
("{'key1': 'value1', 'key2': 'value2'}",
"{'key1': 'value1', 'key2': 'value2'}"), # Dict
+ ("a / b", "a / b"), # Div
("...", "..."), # Ellipsis
+ ("a // b", "a // b"), # FloorDiv
("Tuple[int, int]", "Tuple[int, int]"), # Index, Subscript
+ ("~ 1", "~ 1"), # Invert
("lambda x, y: x + y",
- "<function <lambda>>"), # Lambda
+ "lambda x, y: ..."), # Lambda
("[1, 2, 3]", "[1, 2, 3]"), # List
+ ("a << b", "a << b"), # LShift
+ ("a @ b", "a @ b"), # MatMult
+ ("a % b", "a % b"), # Mod
+ ("a * b", "a * b"), # Mult
("sys", "sys"), # Name, NameConstant
("1234", "1234"), # Num
+ ("not a", "not a"), # Not
+ ("a or b", "a or b"), # Or
+ ("a ** b", "a ** b"), # Pow
+ ("a >> b", "a >> b"), # RShift
("{1, 2, 3}", "{1, 2, 3}"), # Set
+ ("a - b", "a - b"), # Sub
("'str'", "'str'"), # Str
+ ("+ a", "+ a"), # UAdd
+ ("- 1", "- 1"), # UnaryOp
+ ("- a", "- a"), # USub
("(1, 2, 3)", "1, 2, 3"), # Tuple
])
def test_unparse(source, expected):
@@ -38,3 +62,11 @@ def test_unparse(source, 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