Control: forwarded -1 https://github.com/davidhalter/parso/issues/222
thanks

Dear Maintainer,

After adding:

  export PYBUILD_BEFORE_TEST=cp conftest.py {build_dir}

in debian/rules, tests pass with Python 3.11 but still fail with
Python 3.12.
I've opened an issue upstream.


...
make[1]: Leaving directory '/build/parso-0.8.3'
   dh_auto_test -O--buildsystem=pybuild
I: pybuild pybuild:310: cp conftest.py 
/build/parso-0.8.3/.pybuild/cpython3_3.12_parso/build
I: pybuild base:305: cd /build/parso-0.8.3/.pybuild/cpython3_3.12_parso/build; 
python3.12 -m pytest test
==================================================================== test 
session starts 
====================================================================
platform linux -- Python 3.12.1, pytest-7.4.4, pluggy-1.3.0
rootdir: /build/parso-0.8.3/.pybuild/cpython3_3.12_parso/build
configfile: pytest.ini
collected 1348 items                                                            
                                                                            

test/test_cache.py .........                                                    
                                                                      [  0%]
test/test_diff_parser.py 
..................................................................................
                                           [  6%]
test/test_dump_tree.py ..........                                               
                                                                      [  7%]
test/test_error_recovery.py .............                                       
                                                                      [  8%]
test/test_file_python_errors.py .....                                           
                                                                      [  8%]
test/test_fstring.py 
.....................................................................           
                                                 [ 13%]
test/test_get_code.py .............                                             
                                                                      [ 14%]
test/test_grammar.py .                                                          
                                                                      [ 14%]
test/test_load_grammar.py ...........                                           
                                                                      [ 15%]
test/test_normalizer_issues_files.py .............................              
                                                                      [ 17%]
test/test_old_fast_parser.py ...............                                    
                                                                      [ 19%]
test/test_param_splitting.py .......                                            
                                                                      [ 19%]
test/test_parser.py 
.................................................................................................................................
 [ 29%]
.............                                                                   
                                                                      [ 30%]
test/test_parser_tree.py 
............................................................................... 
                                             [ 35%]
test/test_pep8.py ...                                                           
                                                                      [ 36%]
test/test_pgen2.py 
..................................................................................................................................
 [ 45%]
.............................................................................................................................................
         [ 56%]
test/test_prefix.py ......................                                      
                                                                      [ 57%]
test/test_python_errors.py 
...........FF.............................................................................................................
 [ 66%]
............................F....................F..FFF.....FFFFF.............................................................F......................
 [ 78%]
.....................................................................................................................................
                 [ 87%]
test/test_tokenize.py 
...............................................................................................................................
 [ 97%]
.                                                                               
                                                                      [ 97%]
test/test_utils.py ...................................                          
                                                                      [100%]

========================================================================= 
FAILURES 
==========================================================================
____________________________________________________ 
test_python_exception_matches[def f(x=3, y): pass] 
_____________________________________________________

code = 'def f(x=3, y): pass'

    @pytest.mark.parametrize('code', FAILING_EXAMPLES)
    def test_python_exception_matches(code):
        wanted, line_nr = _get_actual_exception(code)
    
        errors = _get_error_list(code)
        actual = None
        if errors:
            error, = errors
            actual = error.message
>       assert actual in wanted
E       AssertionError: assert 'SyntaxError: non-default argument follows 
default argument' in ['SyntaxError: parameter without a default follows 
parameter with a default']

test/test_python_errors.py:42: AssertionError
______________________________________________________ 
test_python_exception_matches[lambda x=3, y: x] 
______________________________________________________

code = 'lambda x=3, y: x'

    @pytest.mark.parametrize('code', FAILING_EXAMPLES)
    def test_python_exception_matches(code):
        wanted, line_nr = _get_actual_exception(code)
    
        errors = _get_error_list(code)
        actual = None
        if errors:
            error, = errors
            actual = error.message
>       assert actual in wanted
E       AssertionError: assert 'SyntaxError: non-default argument follows 
default argument' in ['SyntaxError: parameter without a default follows 
parameter with a default']

test/test_python_errors.py:42: AssertionError
__________________________________________________________ 
test_python_exception_matches[f"{*x}"] 
___________________________________________________________

code = 'f"{*x}"'

    @pytest.mark.parametrize('code', FAILING_EXAMPLES)
    def test_python_exception_matches(code):
        wanted, line_nr = _get_actual_exception(code)
    
        errors = _get_error_list(code)
        actual = None
        if errors:
            error, = errors
            actual = error.message
>       assert actual in wanted
E       assert "SyntaxError: f-string: can't use starred expression here" in 
["SyntaxError: can't use starred expression here"]

test/test_python_errors.py:42: AssertionError
___________________________________________________________ 
test_python_exception_matches[f"{}"] 
____________________________________________________________

code = 'f"{}"'

    @pytest.mark.parametrize('code', FAILING_EXAMPLES)
    def test_python_exception_matches(code):
        wanted, line_nr = _get_actual_exception(code)
    
        errors = _get_error_list(code)
        actual = None
        if errors:
            error, = errors
            actual = error.message
>       assert actual in wanted
E       assert 'SyntaxError: invalid syntax' in ["SyntaxError: f-string: valid 
expression required before '}'"]

test/test_python_errors.py:42: AssertionError
___________________________________________________________ 
test_python_exception_matches[f"{#}"] 
___________________________________________________________

code = 'f"{#}"'

    @pytest.mark.parametrize('code', FAILING_EXAMPLES)
    def test_python_exception_matches(code):
        wanted, line_nr = _get_actual_exception(code)
    
        errors = _get_error_list(code)
        actual = None
        if errors:
            error, = errors
            actual = error.message
>       assert actual in wanted
E       assert 'SyntaxError: invalid syntax' in ["SyntaxError: '{' was never 
closed"]

test/test_python_errors.py:42: AssertionError
__________________________________________________________ 
test_python_exception_matches[f'{1!b}'] 
__________________________________________________________

code = "f'{1!b}'"

    @pytest.mark.parametrize('code', FAILING_EXAMPLES)
    def test_python_exception_matches(code):
        wanted, line_nr = _get_actual_exception(code)
    
        errors = _get_error_list(code)
        actual = None
        if errors:
            error, = errors
            actual = error.message
>       assert actual in wanted
E       assert "SyntaxError: f-string: invalid conversion character: expected 
's', 'r', or 'a'" in ["SyntaxError: f-string: invalid conversion character 'b': 
expected 's', 'r', or 'a'"]

test/test_python_errors.py:42: AssertionError
_______________________________________________________ 
test_python_exception_matches[f'{1:{5:{3}}}'] 
_______________________________________________________

code = "f'{1:{5:{3}}}'"

    @pytest.mark.parametrize('code', FAILING_EXAMPLES)
    def test_python_exception_matches(code):
>       wanted, line_nr = _get_actual_exception(code)

test/test_python_errors.py:35:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

code = "f'{1:{5:{3}}}'"

    def _get_actual_exception(code):
        with warnings.catch_warnings():
            # We don't care about warnings where locals/globals misbehave here.
            # It's as simple as either an error or not.
            warnings.filterwarnings('ignore', category=SyntaxWarning)
            try:
                compile(code, '<unknown>', 'exec')
            except (SyntaxError, IndentationError) as e:
                wanted = e.__class__.__name__ + ': ' + e.msg
                line_nr = e.lineno
            except ValueError as e:
                # The ValueError comes from byte literals in Python 2 like '\x'
                # that are oddly enough not SyntaxErrors.
                wanted = 'SyntaxError: (value error) ' + str(e)
                line_nr = None
            else:
>               assert False, "The piece of code should raise an exception."
E               AssertionError: The piece of code should raise an exception.
E               assert False

test/test_python_errors.py:118: AssertionError
_______________________________________________________ 
test_python_exception_matches[f'{continue}'] 
________________________________________________________

code = "f'{continue}'"

    @pytest.mark.parametrize('code', FAILING_EXAMPLES)
    def test_python_exception_matches(code):
        wanted, line_nr = _get_actual_exception(code)
    
        errors = _get_error_list(code)
        actual = None
        if errors:
            error, = errors
            actual = error.message
>       assert actual in wanted
E       assert 'SyntaxError: f-string: invalid syntax' in ["SyntaxError: 
f-string: expecting a valid expression after '{'"]

test/test_python_errors.py:42: AssertionError
__________________________________________________________ 
test_python_exception_matches[f'{1;1}'] 
__________________________________________________________

code = "f'{1;1}'"

    @pytest.mark.parametrize('code', FAILING_EXAMPLES)
    def test_python_exception_matches(code):
        wanted, line_nr = _get_actual_exception(code)
    
        errors = _get_error_list(code)
        actual = None
        if errors:
            error, = errors
            actual = error.message
>       assert actual in wanted
E       assert 'SyntaxError: f-string: invalid syntax' in ["SyntaxError: 
f-string: expecting '=', or '!', or ':', or '}'"]

test/test_python_errors.py:42: AssertionError
__________________________________________________________ 
test_python_exception_matches[f'{a;}'] 
___________________________________________________________

code = "f'{a;}'"

    @pytest.mark.parametrize('code', FAILING_EXAMPLES)
    def test_python_exception_matches(code):
        wanted, line_nr = _get_actual_exception(code)
    
        errors = _get_error_list(code)
        actual = None
        if errors:
            error, = errors
            actual = error.message
>       assert actual in wanted
E       assert 'SyntaxError: f-string: invalid syntax' in ["SyntaxError: 
f-string: expecting '=', or '!', or ':', or '}'"]

test/test_python_errors.py:42: AssertionError
________________________________________________________ 
test_python_exception_matches[f'{b"" ""}'] 
_________________________________________________________

code = 'f\'{b"" ""}\''

    @pytest.mark.parametrize('code', FAILING_EXAMPLES)
    def test_python_exception_matches(code):
        wanted, line_nr = _get_actual_exception(code)
    
        errors = _get_error_list(code)
        actual = None
        if errors:
            error, = errors
            actual = error.message
>       assert actual in wanted
E       AssertionError: assert 'SyntaxError: f-string: cannot mix bytes and 
nonbytes literals' in ['SyntaxError: cannot mix bytes and nonbytes literals']

test/test_python_errors.py:42: AssertionError
_________________________________________________________ 
test_python_exception_matches[f"{'\\n'}"] 
_________________________________________________________

code = 'f"{\'\\n\'}"'

    @pytest.mark.parametrize('code', FAILING_EXAMPLES)
    def test_python_exception_matches(code):
>       wanted, line_nr = _get_actual_exception(code)

test/test_python_errors.py:35:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

code = 'f"{\'\\n\'}"'

    def _get_actual_exception(code):
        with warnings.catch_warnings():
            # We don't care about warnings where locals/globals misbehave here.
            # It's as simple as either an error or not.
            warnings.filterwarnings('ignore', category=SyntaxWarning)
            try:
                compile(code, '<unknown>', 'exec')
            except (SyntaxError, IndentationError) as e:
                wanted = e.__class__.__name__ + ': ' + e.msg
                line_nr = e.lineno
            except ValueError as e:
                # The ValueError comes from byte literals in Python 2 like '\x'
                # that are oddly enough not SyntaxErrors.
                wanted = 'SyntaxError: (value error) ' + str(e)
                line_nr = None
            else:
>               assert False, "The piece of code should raise an exception."
E               AssertionError: The piece of code should raise an exception.
E               assert False

test/test_python_errors.py:118: AssertionError
_________________________________________________________ 
test_python_exception_matches[f'{1=!b}'] 
__________________________________________________________

code = "f'{1=!b}'"

    @pytest.mark.parametrize('code', FAILING_EXAMPLES)
    def test_python_exception_matches(code):
        wanted, line_nr = _get_actual_exception(code)
    
        errors = _get_error_list(code)
        actual = None
        if errors:
            error, = errors
            actual = error.message
>       assert actual in wanted
E       assert "SyntaxError: f-string: invalid conversion character: expected 
's', 'r', or 'a'" in ["SyntaxError: f-string: invalid conversion character 'b': 
expected 's', 'r', or 'a'"]

test/test_python_errors.py:42: AssertionError
================================================================== short test 
summary info ==================================================================
FAILED test/test_python_errors.py::test_python_exception_matches[def f(x=3, y): 
pass] - AssertionError: assert 'SyntaxError: non-default argument follows 
default argument' in ['SyntaxError: parameter
without a default follows parameter with...
FAILED test/test_python_errors.py::test_python_exception_matches[lambda x=3, y: 
x] - AssertionError: assert 'SyntaxError: non-default argument follows default 
argument' in ['SyntaxError: parameter
without a default follows parameter with...
FAILED test/test_python_errors.py::test_python_exception_matches[f"{*x}"] - 
assert "SyntaxError: f-string: can't use starred expression here" in 
["SyntaxError: can't use starred expression here"]
FAILED test/test_python_errors.py::test_python_exception_matches[f"{}"] - 
assert 'SyntaxError: invalid syntax' in ["SyntaxError: f-string: valid 
expression required before '}'"]
FAILED test/test_python_errors.py::test_python_exception_matches[f"{#}"] - 
assert 'SyntaxError: invalid syntax' in ["SyntaxError: '{' was never closed"]
FAILED test/test_python_errors.py::test_python_exception_matches[f'{1!b}'] - 
assert "SyntaxError: f-string: invalid conversion character: expected 's', 'r', 
or 'a'" in ["SyntaxError: f-string: invalid
conversion character 'b': ex...
FAILED 
test/test_python_errors.py::test_python_exception_matches[f'{1:{5:{3}}}'] - 
AssertionError: The piece of code should raise an exception.
FAILED test/test_python_errors.py::test_python_exception_matches[f'{continue}'] 
- assert 'SyntaxError: f-string: invalid syntax' in ["SyntaxError: f-string: 
expecting a valid expression after '{'"]
FAILED test/test_python_errors.py::test_python_exception_matches[f'{1;1}'] - 
assert 'SyntaxError: f-string: invalid syntax' in ["SyntaxError: f-string: 
expecting '=', or '!', or ':', or '}'"]
FAILED test/test_python_errors.py::test_python_exception_matches[f'{a;}'] - 
assert 'SyntaxError: f-string: invalid syntax' in ["SyntaxError: f-string: 
expecting '=', or '!', or ':', or '}'"]
FAILED test/test_python_errors.py::test_python_exception_matches[f'{b"" ""}'] - 
AssertionError: assert 'SyntaxError: f-string: cannot mix bytes and nonbytes 
literals' in ['SyntaxError: cannot mix
bytes and nonbytes literals']
FAILED test/test_python_errors.py::test_python_exception_matches[f"{'\\n'}"] - 
AssertionError: The piece of code should raise an exception.
FAILED test/test_python_errors.py::test_python_exception_matches[f'{1=!b}'] - 
assert "SyntaxError: f-string: invalid conversion character: expected 's', 'r', 
or 'a'" in ["SyntaxError: f-string:
invalid conversion character 'b': ex...
============================================================== 13 failed, 1335 
passed in 4.23s ==============================================================
E: pybuild pybuild:391: test: plugin distutils failed with: exit code=1: cd 
/build/parso-0.8.3/.pybuild/cpython3_3.12_parso/build; python3.12 -m pytest test
...
...


Kind Regards

Reply via email to