Skip to content

test_vim: Failure with Python 3.13 #571

Closed
@cryptomilk

Description

@cryptomilk

Hi,

I'm trying to fix pynvim with Python 3.13 which is in Fedora Rawhide (upcoming 41). The failure I get is:

=================================== FAILURES ===================================
_____________________________ test_python3_ex_eval _____________________________                                                                                                    
                                                                                          
vim = <pynvim.api.nvim.Nvim object at 0x7f2b5e068950>
                                                                                          
    def test_python3_ex_eval(vim: Nvim) -> None:                                
        assert '42' == vim.command_output('python3 =42')                                                                                                                            
        assert '42' == vim.command_output('python3 =   42     ')                
        assert '42' == vim.command_output('py3=    42     ')                                                                                                                        
        assert '42' == vim.command_output('py=42')
                                     
        # On syntax error or evaluation error, stacktrace information is printed
        # Note: the pynvim API command_output() throws an exception on error
        # because the Ex command :python will throw (wrapped with provider#python3#Call)
        with pytest.raises(NvimError) as excinfo:        
            vim.command('py3= 1/0')                                                       
>       assert textwrap.dedent('''\                                                       
            Traceback (most recent call last):                                                                                                                                      
              File "<string>", line 1, in <module>                                                                                                                                  
            ZeroDivisionError: division by zero
            ''').strip() in excinfo.value.args[0]                                                                                                                                   
E       assert 'Traceback (most recent call last):\n  File "<string>", line 1, in <module>\nZeroDivisionError: division by zero' in 'function provider#python3#Call, line 1: Vim(ret
urn):E5108: Error executing lua Vim:Error invoking \'python_execute\' on channel 3 (python3-script-host):\nTraceback (most recent call last):\n  File "<string>", line 1, in <module
>\n    import sys; sys.path = [p for p in sys.path if p != ""]; import neovim; neovim.start_host()\n    ^^^\nZeroDivisionError: division by zero\nstack traceback:\n\t[C]: at 0x55bb
fd9c11af'                                                                                                                                                                           
E        +  where 'Traceback (most recent call last):\n  File "<string>", line 1, in <module>\nZeroDivisionError: division by zero' = <built-in method strip of str object at 0x7f2b
5e0752f0>()
E        +    where <built-in method strip of str object at 0x7f2b5e0752f0> = 'Traceback (most recent call last):\n  File "<string>", line 1, in <module>\nZeroDivisionError: divisi
on by zero\n'.strip
E        +      where 'Traceback (most recent call last):\n  File "<string>", line 1, in <module>\nZeroDivisionError: division by zero\n' = <function dedent at 0x7f2b5f868ae0>('   
     Traceback (most recent call last):\n          File "<string>", line 1, in <module>\n        ZeroDivisionError: division by zero\n        ')
E        +        where <function dedent at 0x7f2b5f868ae0> = textwrap.dedent

test/test_vim.py:233: AssertionError

The traceback looks different now.

Traceback (most recent call last):
  File "<string>", line 1, in <module>
    import sys; sys.path = [p for p in sys.path if p != ""]; import neovim; neovim.start_host()
    ^^^
ZeroDivisionError: division by zero

My current fix is for Fedora is:

Index: pynvim-0.5.0/test/test_vim.py
===================================================================
--- pynvim-0.5.0.orig/test/test_vim.py  2024-06-14 08:47:38.588584340 +0200
+++ pynvim-0.5.0/test/test_vim.py       2024-06-14 09:00:22.910093156 +0200
@@ -231,8 +231,6 @@ def test_python3_ex_eval(vim: Nvim) -> N
     with pytest.raises(NvimError) as excinfo:
         vim.command('py3= 1/0')
     assert textwrap.dedent('''\
-        Traceback (most recent call last):
-          File "<string>", line 1, in <module>
         ZeroDivisionError: division by zero
         ''').strip() in excinfo.value.args[0]
 
@@ -240,9 +238,6 @@ def test_python3_ex_eval(vim: Nvim) -> N
     with pytest.raises(NvimError) as excinfo:
         vim.command_output('python3 =print("nooo", raise_error())')
     assert textwrap.dedent('''\
-        Traceback (most recent call last):
-          File "<string>", line 1, in <module>
-          File "<string>", line 1, in raise_error
         RuntimeError: oops
         ''').strip() in excinfo.value.args[0]
     assert 'nooo' not in vim.command_output(':messages')

Not sure if this is how you would like to address this.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions