153901442SBram Moolenaar" Test for python 3 commands. 2213ed008SBram Moolenaar" TODO: move tests from test87.in here. 3a58883b4SBram Moolenaar 4b46fecd3SBram Moolenaarsource check.vim 5b46fecd3SBram MoolenaarCheckFeature python3 6a58883b4SBram Moolenaar 7a58883b4SBram Moolenaarfunc Test_py3do() 8a58883b4SBram Moolenaar " Check deleting lines does not trigger an ml_get error. 9a58883b4SBram Moolenaar py3 import vim 10a58883b4SBram Moolenaar new 11a58883b4SBram Moolenaar call setline(1, ['one', 'two', 'three']) 12a58883b4SBram Moolenaar py3do vim.command("%d_") 13a58883b4SBram Moolenaar bwipe! 14a58883b4SBram Moolenaar 15a58883b4SBram Moolenaar " Check switching to another buffer does not trigger an ml_get error. 16a58883b4SBram Moolenaar new 17a58883b4SBram Moolenaar let wincount = winnr('$') 18a58883b4SBram Moolenaar call setline(1, ['one', 'two', 'three']) 19a58883b4SBram Moolenaar py3do vim.command("new") 20a58883b4SBram Moolenaar call assert_equal(wincount + 1, winnr('$')) 21a58883b4SBram Moolenaar bwipe! 22a58883b4SBram Moolenaar bwipe! 23a58883b4SBram Moolenaarendfunc 2453901442SBram Moolenaar 2553901442SBram Moolenaarfunc Test_set_cursor() 2653901442SBram Moolenaar " Check that setting the cursor position works. 2753901442SBram Moolenaar py3 import vim 2853901442SBram Moolenaar new 2953901442SBram Moolenaar call setline(1, ['first line', 'second line']) 3053901442SBram Moolenaar normal gg 3153901442SBram Moolenaar py3do vim.current.window.cursor = (1, 5) 3253901442SBram Moolenaar call assert_equal([1, 6], [line('.'), col('.')]) 3353901442SBram Moolenaar 3453901442SBram Moolenaar " Check that movement after setting cursor position keeps current column. 3553901442SBram Moolenaar normal j 3653901442SBram Moolenaar call assert_equal([2, 6], [line('.'), col('.')]) 3753901442SBram Moolenaarendfunc 389123c0b3SBram Moolenaar 399123c0b3SBram Moolenaarfunc Test_vim_function() 409123c0b3SBram Moolenaar " Check creating vim.Function object 419123c0b3SBram Moolenaar py3 import vim 429123c0b3SBram Moolenaar 439123c0b3SBram Moolenaar func s:foo() 449123c0b3SBram Moolenaar return matchstr(expand('<sfile>'), '<SNR>\zs\d\+_foo$') 459123c0b3SBram Moolenaar endfunc 469123c0b3SBram Moolenaar let name = '<SNR>' . s:foo() 479123c0b3SBram Moolenaar 489123c0b3SBram Moolenaar try 499123c0b3SBram Moolenaar py3 f = vim.bindeval('function("s:foo")') 509123c0b3SBram Moolenaar call assert_equal(name, py3eval('f.name')) 519123c0b3SBram Moolenaar catch 529123c0b3SBram Moolenaar call assert_false(v:exception) 539123c0b3SBram Moolenaar endtry 549123c0b3SBram Moolenaar 559123c0b3SBram Moolenaar try 569123c0b3SBram Moolenaar py3 f = vim.Function(b'\x80\xfdR' + vim.eval('s:foo()').encode()) 573f4f3d8eSBram Moolenaar call assert_equal(name, 'f.name'->py3eval()) 589123c0b3SBram Moolenaar catch 599123c0b3SBram Moolenaar call assert_false(v:exception) 609123c0b3SBram Moolenaar endtry 619123c0b3SBram Moolenaar 629123c0b3SBram Moolenaar py3 del f 639123c0b3SBram Moolenaar delfunc s:foo 649123c0b3SBram Moolenaarendfunc 6514816ad6SBram Moolenaar 6614816ad6SBram Moolenaarfunc Test_skipped_python3_command_does_not_affect_pyxversion() 6714816ad6SBram Moolenaar set pyxversion=0 6814816ad6SBram Moolenaar if 0 6914816ad6SBram Moolenaar python3 import vim 7014816ad6SBram Moolenaar endif 7114816ad6SBram Moolenaar call assert_equal(0, &pyxversion) " This assertion would have failed with Vim 8.0.0251. (pyxversion was introduced in 8.0.0251.) 7214816ad6SBram Moolenaarendfunc 7363dbfd33SBram Moolenaar 7463dbfd33SBram Moolenaarfunc _SetUpHiddenBuffer() 7563dbfd33SBram Moolenaar py3 import vim 7663dbfd33SBram Moolenaar new 7763dbfd33SBram Moolenaar edit hidden 7863dbfd33SBram Moolenaar setlocal bufhidden=hide 7963dbfd33SBram Moolenaar 8063dbfd33SBram Moolenaar enew 8163dbfd33SBram Moolenaar let lnum = 0 8263dbfd33SBram Moolenaar while lnum < 10 8363dbfd33SBram Moolenaar call append( 1, string( lnum ) ) 8463dbfd33SBram Moolenaar let lnum = lnum + 1 8563dbfd33SBram Moolenaar endwhile 8663dbfd33SBram Moolenaar normal G 8763dbfd33SBram Moolenaar 8863dbfd33SBram Moolenaar call assert_equal( line( '.' ), 11 ) 8963dbfd33SBram Moolenaarendfunc 9063dbfd33SBram Moolenaar 91bfd36036SBram Moolenaarfunc _CleanUpHiddenBuffer() 92bfd36036SBram Moolenaar bwipe! hidden 93bfd36036SBram Moolenaar bwipe! 94bfd36036SBram Moolenaarendfunc 95bfd36036SBram Moolenaar 9663dbfd33SBram Moolenaarfunc Test_Write_To_HiddenBuffer_Does_Not_Fix_Cursor_Clear() 9763dbfd33SBram Moolenaar call _SetUpHiddenBuffer() 9863dbfd33SBram Moolenaar py3 vim.buffers[ int( vim.eval( 'bufnr("hidden")' ) ) ][:] = None 9963dbfd33SBram Moolenaar call assert_equal( line( '.' ), 11 ) 100bfd36036SBram Moolenaar call _CleanUpHiddenBuffer() 10163dbfd33SBram Moolenaarendfunc 10263dbfd33SBram Moolenaar 10363dbfd33SBram Moolenaarfunc Test_Write_To_HiddenBuffer_Does_Not_Fix_Cursor_List() 10463dbfd33SBram Moolenaar call _SetUpHiddenBuffer() 10563dbfd33SBram Moolenaar py3 vim.buffers[ int( vim.eval( 'bufnr("hidden")' ) ) ][:] = [ 'test' ] 10663dbfd33SBram Moolenaar call assert_equal( line( '.' ), 11 ) 107bfd36036SBram Moolenaar call _CleanUpHiddenBuffer() 10863dbfd33SBram Moolenaarendfunc 10963dbfd33SBram Moolenaar 11063dbfd33SBram Moolenaarfunc Test_Write_To_HiddenBuffer_Does_Not_Fix_Cursor_Str() 11163dbfd33SBram Moolenaar call _SetUpHiddenBuffer() 11263dbfd33SBram Moolenaar py3 vim.buffers[ int( vim.eval( 'bufnr("hidden")' ) ) ][0] = 'test' 11363dbfd33SBram Moolenaar call assert_equal( line( '.' ), 11 ) 114bfd36036SBram Moolenaar call _CleanUpHiddenBuffer() 11563dbfd33SBram Moolenaarendfunc 11663dbfd33SBram Moolenaar 11763dbfd33SBram Moolenaarfunc Test_Write_To_HiddenBuffer_Does_Not_Fix_Cursor_ClearLine() 11863dbfd33SBram Moolenaar call _SetUpHiddenBuffer() 11963dbfd33SBram Moolenaar py3 vim.buffers[ int( vim.eval( 'bufnr("hidden")' ) ) ][0] = None 12063dbfd33SBram Moolenaar call assert_equal( line( '.' ), 11 ) 121bfd36036SBram Moolenaar call _CleanUpHiddenBuffer() 12263dbfd33SBram Moolenaarendfunc 12363dbfd33SBram Moolenaar 12463dbfd33SBram Moolenaarfunc _SetUpVisibleBuffer() 12563dbfd33SBram Moolenaar py3 import vim 12663dbfd33SBram Moolenaar new 12763dbfd33SBram Moolenaar let lnum = 0 12863dbfd33SBram Moolenaar while lnum < 10 12963dbfd33SBram Moolenaar call append( 1, string( lnum ) ) 13063dbfd33SBram Moolenaar let lnum = lnum + 1 13163dbfd33SBram Moolenaar endwhile 13263dbfd33SBram Moolenaar normal G 13363dbfd33SBram Moolenaar call assert_equal( line( '.' ), 11 ) 13463dbfd33SBram Moolenaarendfunc 13563dbfd33SBram Moolenaar 13663dbfd33SBram Moolenaarfunc Test_Write_To_Current_Buffer_Fixes_Cursor_Clear() 13763dbfd33SBram Moolenaar call _SetUpVisibleBuffer() 13863dbfd33SBram Moolenaar 13963dbfd33SBram Moolenaar py3 vim.current.buffer[:] = None 14063dbfd33SBram Moolenaar call assert_equal( line( '.' ), 1 ) 14163dbfd33SBram Moolenaar 14263dbfd33SBram Moolenaar bwipe! 14363dbfd33SBram Moolenaarendfunc 14463dbfd33SBram Moolenaar 14563dbfd33SBram Moolenaarfunc Test_Write_To_Current_Buffer_Fixes_Cursor_List() 14663dbfd33SBram Moolenaar call _SetUpVisibleBuffer() 14763dbfd33SBram Moolenaar 14863dbfd33SBram Moolenaar py3 vim.current.buffer[:] = [ 'test' ] 14963dbfd33SBram Moolenaar call assert_equal( line( '.' ), 1 ) 15063dbfd33SBram Moolenaar 15163dbfd33SBram Moolenaar bwipe! 15263dbfd33SBram Moolenaarendfunction 15363dbfd33SBram Moolenaar 15463dbfd33SBram Moolenaarfunc Test_Write_To_Current_Buffer_Fixes_Cursor_Str() 15563dbfd33SBram Moolenaar call _SetUpVisibleBuffer() 15663dbfd33SBram Moolenaar 15763dbfd33SBram Moolenaar py3 vim.current.buffer[-1] = None 15863dbfd33SBram Moolenaar call assert_equal( line( '.' ), 10 ) 15963dbfd33SBram Moolenaar 16063dbfd33SBram Moolenaar bwipe! 16163dbfd33SBram Moolenaarendfunction 1627f3a2849SBram Moolenaar 1637f3a2849SBram Moolenaarfunc Test_Catch_Exception_Message() 1647f3a2849SBram Moolenaar try 1657f3a2849SBram Moolenaar py3 raise RuntimeError( 'TEST' ) 1667f3a2849SBram Moolenaar catch /.*/ 1677f3a2849SBram Moolenaar call assert_match( '^Vim(.*):RuntimeError: TEST$', v:exception ) 1687f3a2849SBram Moolenaar endtry 1697f3a2849SBram Moolenaarendfunc 170556684ffSBram Moolenaar 171556684ffSBram Moolenaarfunc Test_unicode() 172556684ffSBram Moolenaar " this crashed Vim once 173556684ffSBram Moolenaar set encoding=utf32 174556684ffSBram Moolenaar py3 print('hello') 175*d518f952SBram Moolenaar set encoding=debug 176*d518f952SBram Moolenaar py3 print('hello') 177*d518f952SBram Moolenaar set encoding=euc-tw 178*d518f952SBram Moolenaar py3 print('hello') 179556684ffSBram Moolenaar set encoding=utf8 180556684ffSBram Moolenaarendfunc 181