aboutsummaryrefslogtreecommitdiff
path: root/test/functional/provider/python3_spec.lua
diff options
context:
space:
mode:
authorJustin M. Keyes <justinkz@gmail.com>2015-08-07 16:57:45 -0400
committerJustin M. Keyes <justinkz@gmail.com>2015-08-09 22:33:28 -0400
commit62c53c404b6b7bc71c882fe6e620a9af972cb1fd (patch)
tree9acbf28049516cf798fa86a2f3cfcc63758272af /test/functional/provider/python3_spec.lua
parent698482ec3e02ede1e5fe3a4cb087df29b0e0e36c (diff)
downloadrneovim-62c53c404b6b7bc71c882fe6e620a9af972cb1fd.tar.gz
rneovim-62c53c404b6b7bc71c882fe6e620a9af972cb1fd.tar.bz2
rneovim-62c53c404b6b7bc71c882fe6e620a9af972cb1fd.zip
test: move runtime/autoload/* to provider/
- Organize tests by logical function, not the literal impl location. - Avoid deep nesting / hyper-hierarchy.
Diffstat (limited to 'test/functional/provider/python3_spec.lua')
-rw-r--r--test/functional/provider/python3_spec.lua77
1 files changed, 77 insertions, 0 deletions
diff --git a/test/functional/provider/python3_spec.lua b/test/functional/provider/python3_spec.lua
new file mode 100644
index 0000000000..5be5390370
--- /dev/null
+++ b/test/functional/provider/python3_spec.lua
@@ -0,0 +1,77 @@
+do
+ local proc = io.popen(
+ [[python3 -c 'import neovim, sys; sys.stdout.write("ok")' 2> /dev/null]])
+ if proc:read() ~= 'ok' then
+ pending(
+ 'python3 (or the python3 neovim module) is broken or missing',
+ function() end)
+ 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, write_file = helpers.expect, helpers.write_file
+
+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'
+ write_file(fname, 'vim.command("let set_by_py3file = 123")')
+ 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)