diff options
Diffstat (limited to 'test')
-rw-r--r-- | test/functional/runtime/autoload/provider/python3_spec.lua | 79 | ||||
-rw-r--r-- | test/functional/runtime/autoload/provider/python_spec.lua | 100 |
2 files changed, 122 insertions, 57 deletions
diff --git a/test/functional/runtime/autoload/provider/python3_spec.lua b/test/functional/runtime/autoload/provider/python3_spec.lua new file mode 100644 index 0000000000..6e6ba96f81 --- /dev/null +++ b/test/functional/runtime/autoload/provider/python3_spec.lua @@ -0,0 +1,79 @@ +do + local proc = + io.popen([[python3 -c 'import neovim, sys; sys.stdout.write("ok")' 2> /dev/null]]) + if proc:read() ~= 'ok' then + -- Don't run these tests if python3 is not available + return + end +end + + +local helpers = require('test.functional.helpers') +local eval, command, feed = helpers.eval, helpers.command, helpers.feed +local eq, clear, insert = helpers.eq, helpers.clear, helpers.insert +local expect = helpers.expect + + +describe('python3 commands and functions', function() + before_each(function() + clear() + command('python3 import vim') + end) + + it('feature test', function() + eq(1, eval('has("python3")')) + end) + + it('python3_execute', function() + command('python3 vim.vars["set_by_python3"] = [100, 0]') + eq({100, 0}, eval('g:set_by_python3')) + end) + + it('python3_execute with nested commands', function() + command([[python3 vim.command('python3 vim.command("python3 vim.command(\'let set_by_nested_python3 = 555\')")')]]) + eq(555, eval('g:set_by_nested_python3')) + end) + + it('python3_execute with range', function() + insert([[ + line1 + line2 + line3 + line4]]) + feed('ggjvj:python3 vim.vars["range"] = vim.current.range[:]<CR>') + eq({'line2', 'line3'}, eval('g:range')) + end) + + it('py3file', function() + local fname = 'py3file.py' + local F = io.open(fname, 'w') + F:write('vim.command("let set_by_py3file = 123")') + F:close() + command('py3file py3file.py') + eq(123, eval('g:set_by_py3file')) + os.remove(fname) + end) + + it('py3do', function() + -- :pydo3 42 returns None for all lines, + -- the buffer should not be changed + command('normal :py3do 42') + eq(0, eval('&mod')) + -- insert some text + insert('abc\ndef\nghi') + expect([[ + abc + def + ghi]]) + -- go to top and select and replace the first two lines + feed('ggvj:py3do return str(linenr)<CR>') + expect([[ + 1 + 2 + ghi]]) + end) + + it('py3eval', function() + eq({1, 2, {['key'] = 'val'}}, eval([[py3eval('[1, 2, {"key": "val"}]')]])) + end) +end) diff --git a/test/functional/runtime/autoload/provider/python_spec.lua b/test/functional/runtime/autoload/provider/python_spec.lua index 1a726652d6..5398d668bf 100644 --- a/test/functional/runtime/autoload/provider/python_spec.lua +++ b/test/functional/runtime/autoload/provider/python_spec.lua @@ -20,74 +20,60 @@ describe('python commands and functions', function() command('python import vim') end) - describe('feature test', function() - it('ok', function() - eq(1, eval('has("python")')) - end) + it('feature test', function() + eq(1, eval('has("python")')) end) - describe('python_execute', function() - it('ok', function() - command('python vim.vars["set_by_python"] = [100, 0]') - eq({100, 0}, eval('g:set_by_python')) - end) + it('python_execute', function() + command('python vim.vars["set_by_python"] = [100, 0]') + eq({100, 0}, eval('g:set_by_python')) end) - describe('python_execute with nested commands', function() - it('ok', function() - command([[python vim.command('python vim.command("python vim.command(\'let set_by_nested_python = 555\')")')]]) - eq(555, eval('g:set_by_nested_python')) - end) + it('python_execute with nested commands', function() + command([[python vim.command('python vim.command("python vim.command(\'let set_by_nested_python = 555\')")')]]) + eq(555, eval('g:set_by_nested_python')) end) - describe('python_execute with range', function() - it('ok', function() - insert([[ - line1 - line2 - line3 - line4]]) - feed('ggjvj:python vim.vars["range"] = vim.current.range[:]<CR>') - eq({'line2', 'line3'}, eval('g:range')) - end) + it('python_execute with range', function() + insert([[ + line1 + line2 + line3 + line4]]) + feed('ggjvj:python vim.vars["range"] = vim.current.range[:]<CR>') + eq({'line2', 'line3'}, eval('g:range')) end) - describe('pyfile', function() - it('ok', function() - local fname = 'pyfile.py' - local F = io.open(fname, 'w') - F:write('vim.command("let set_by_pyfile = 123")') - F:close() - command('pyfile pyfile.py') - eq(123, eval('g:set_by_pyfile')) - os.remove(fname) - end) + it('pyfile', function() + local fname = 'pyfile.py' + local F = io.open(fname, 'w') + F:write('vim.command("let set_by_pyfile = 123")') + F:close() + command('pyfile pyfile.py') + eq(123, eval('g:set_by_pyfile')) + os.remove(fname) end) - describe('pydo', function() - it('ok', function() - -- :pydo 42 returns None for all lines, - -- the buffer should not be changed - command('normal :pydo 42') - eq(0, eval('&mod')) - -- insert some text - insert('abc\ndef\nghi') - expect([[ - abc - def - ghi]]) - -- go to top and select and replace the first two lines - feed('ggvj:pydo return str(linenr)<CR>') - expect([[ - 1 - 2 - ghi]]) - end) + it('pydo', function() + -- :pydo 42 returns None for all lines, + -- the buffer should not be changed + command('normal :pydo 42') + eq(0, eval('&mod')) + -- insert some text + insert('abc\ndef\nghi') + expect([[ + abc + def + ghi]]) + -- go to top and select and replace the first two lines + feed('ggvj:pydo return str(linenr)<CR>') + expect([[ + 1 + 2 + ghi]]) end) - describe('pyeval', function() - it('ok', function() - eq({1, 2, {['key'] = 'val'}}, eval([[pyeval('[1, 2, {"key": "val"}]')]])) - end) + it('pyeval', function() + eq({1, 2, {['key'] = 'val'}}, eval([[pyeval('[1, 2, {"key": "val"}]')]])) end) end) |