Skip to content

Commit 21b767d

Browse files
committed
Test the ast_compat layer works with removed types
1 parent d8a0fad commit 21b767d

File tree

1 file changed

+40
-0
lines changed

1 file changed

+40
-0
lines changed

test/test_is_constant_node.py

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@
1313
@pytest.mark.filterwarnings("ignore:ast.NameConstant is deprecated:DeprecationWarning")
1414
@pytest.mark.filterwarnings("ignore:ast.Ellipsis is deprecated:DeprecationWarning")
1515
def test_type_nodes():
16+
if sys.version_info >= (3, 14):
17+
pytest.skip('Deprecated AST types removed in Python 3.14')
1618
assert is_constant_node(ast.Str('a'), ast.Str)
1719

1820
if hasattr(ast, 'Bytes'):
@@ -42,6 +44,8 @@ def test_constant_nodes():
4244
# only test on python 3.8+
4345
if sys.version_info < (3, 8):
4446
pytest.skip('Constant not available')
47+
if sys.version_info >= (3, 14):
48+
pytest.skip('Deprecated AST types removed in Python 3.14')
4549

4650
assert is_constant_node(ast.Constant('a'), ast.Str)
4751
assert is_constant_node(ast.Constant(b'a'), ast.Bytes)
@@ -51,3 +55,39 @@ def test_constant_nodes():
5155
assert is_constant_node(ast.Constant(False), ast.NameConstant)
5256
assert is_constant_node(ast.Constant(None), ast.NameConstant)
5357
assert is_constant_node(ast.Constant(ast.literal_eval('...')), ast.Ellipsis)
58+
59+
60+
def test_ast_compat_types_python314():
61+
"""Test that ast_compat provides the removed AST types in Python 3.14+"""
62+
if sys.version_info < (3, 14):
63+
pytest.skip('ast_compat types test only for Python 3.14+')
64+
65+
import python_minifier.ast_compat as ast_compat
66+
67+
# Test that ast_compat provides the removed types
68+
assert is_constant_node(ast_compat.Str('a'), ast_compat.Str)
69+
assert is_constant_node(ast_compat.Bytes(b'a'), ast_compat.Bytes)
70+
assert is_constant_node(ast_compat.Num(1), ast_compat.Num)
71+
assert is_constant_node(ast_compat.Num(0), ast_compat.Num)
72+
assert is_constant_node(ast_compat.NameConstant(True), ast_compat.NameConstant)
73+
assert is_constant_node(ast_compat.NameConstant(False), ast_compat.NameConstant)
74+
assert is_constant_node(ast_compat.NameConstant(None), ast_compat.NameConstant)
75+
assert is_constant_node(ast_compat.Ellipsis(), ast_compat.Ellipsis)
76+
77+
78+
def test_ast_compat_constant_nodes_python314():
79+
"""Test that ast_compat works with Constant nodes in Python 3.14+"""
80+
if sys.version_info < (3, 14):
81+
pytest.skip('ast_compat constant test only for Python 3.14+')
82+
83+
import python_minifier.ast_compat as ast_compat
84+
85+
# Test that Constant nodes work with ast_compat types
86+
assert is_constant_node(ast.Constant('a'), ast_compat.Str)
87+
assert is_constant_node(ast.Constant(b'a'), ast_compat.Bytes)
88+
assert is_constant_node(ast.Constant(1), ast_compat.Num)
89+
assert is_constant_node(ast.Constant(0), ast_compat.Num)
90+
assert is_constant_node(ast.Constant(True), ast_compat.NameConstant)
91+
assert is_constant_node(ast.Constant(False), ast_compat.NameConstant)
92+
assert is_constant_node(ast.Constant(None), ast_compat.NameConstant)
93+
assert is_constant_node(ast.Constant(...), ast_compat.Ellipsis)

0 commit comments

Comments
 (0)