33import pytest
44from python_minifier import unparse
55from python_minifier .ast_compare import compare_ast
6+ from python_minifier .transforms .remove_posargs import remove_posargs
67
78def test_pep ():
89 if sys .version_info < (3 , 8 ):
@@ -31,3 +32,51 @@ def combined_example(pos_only, /, standard, *, kwd_only):
3132 expected_ast = ast .parse (source )
3233 actual_ast = unparse (expected_ast )
3334 compare_ast (expected_ast , ast .parse (actual_ast ))
35+
36+ def test_convert ():
37+ if sys .version_info < (3 , 8 ):
38+ pytest .skip ('No Assignment expressions in python < 3.8' )
39+
40+ source = '''
41+ def name(p1, p2, /, p_or_kw, *, kw): pass
42+ def name(p1, p2=None, /, p_or_kw=None, *, kw): pass
43+ def name(p1, p2=None, /, *, kw): pass
44+ def name(p1, p2=None, /): pass
45+ def name(p1, p2, /, p_or_kw): pass
46+ def name(p1, p2, /): pass
47+ def name(p_or_kw, *, kw): pass
48+ def name(*, kw): pass
49+
50+ def standard_arg(arg):
51+ print(arg)
52+ def pos_only_arg(arg, /):
53+ print(arg)
54+ def kwd_only_arg(*, arg):
55+ print(arg)
56+ def combined_example(pos_only, /, standard, *, kwd_only):
57+ print(pos_only, standard, kwd_only)
58+ '''
59+
60+ expected = '''
61+ def name(p1, p2, p_or_kw, *, kw): pass
62+ def name(p1, p2=None, p_or_kw=None, *, kw): pass
63+ def name(p1, p2=None, *, kw): pass
64+ def name(p1, p2=None): pass
65+ def name(p1, p2, p_or_kw): pass
66+ def name(p1, p2): pass
67+ def name(p_or_kw, *, kw): pass
68+ def name(*, kw): pass
69+
70+ def standard_arg(arg):
71+ print(arg)
72+ def pos_only_arg(arg):
73+ print(arg)
74+ def kwd_only_arg(*, arg):
75+ print(arg)
76+ def combined_example(pos_only, standard, *, kwd_only):
77+ print(pos_only, standard, kwd_only)
78+ '''
79+
80+ expected_ast = ast .parse (expected )
81+ actual_ast = unparse (remove_posargs (ast .parse (source )))
82+ compare_ast (expected_ast , ast .parse (actual_ast ))
0 commit comments