aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZyX <kp-pav@yandex.ru>2017-05-12 20:03:05 +0300
committerZyX <kp-pav@yandex.ru>2017-05-13 03:06:30 +0300
commit8b171b8c507dd9db01abee169d3a71e33f8e8ff4 (patch)
treebf4ced4ac97862f0c17c207bed31861a2caecc9a
parentd9023b84e63f51611cf55f72ca5e021d64ba7ce9 (diff)
downloadrneovim-8b171b8c507dd9db01abee169d3a71e33f8e8ff4.tar.gz
rneovim-8b171b8c507dd9db01abee169d3a71e33f8e8ff4.tar.bz2
rneovim-8b171b8c507dd9db01abee169d3a71e33f8e8ff4.zip
functests: Test invalid behaviour
Test correctly fail for oneline ruby, python and python3.
-rw-r--r--test/functional/ex_cmds/script_spec.lua75
-rw-r--r--test/functional/helpers.lua14
-rw-r--r--test/functional/provider/python3_spec.lua5
-rw-r--r--test/functional/provider/python_spec.lua5
-rw-r--r--test/functional/provider/ruby_spec.lua6
5 files changed, 95 insertions, 10 deletions
diff --git a/test/functional/ex_cmds/script_spec.lua b/test/functional/ex_cmds/script_spec.lua
new file mode 100644
index 0000000000..0ee25d802c
--- /dev/null
+++ b/test/functional/ex_cmds/script_spec.lua
@@ -0,0 +1,75 @@
+local helpers = require('test.functional.helpers')(after_each)
+
+local eq = helpers.eq
+local neq = helpers.neq
+local meths = helpers.meths
+local clear = helpers.clear
+local dedent = helpers.dedent
+local source = helpers.source
+local exc_exec = helpers.exc_exec
+local check_provider = helpers.check_provider
+
+before_each(clear)
+
+describe('script_get-based command', function()
+ local garbage = ')}{+*({}]*[;(+}{&[]}{*])('
+
+ local function test_garbage_exec(cmd, check_neq)
+ describe(cmd, function()
+ it('works correctly when skipping oneline variant', function()
+ eq(true, pcall(source, (dedent([[
+ if 0
+ %s %s
+ endif
+ ]])):format(cmd, garbage)))
+ eq('', meths.command_output('messages'))
+ if check_neq then
+ neq(0, exc_exec(dedent([[
+ %s %s
+ ]])):format(cmd, garbage))
+ end
+ end)
+ it('works correctly when skipping HEREdoc variant', function()
+ eq(true, pcall(source, (dedent([[
+ if 0
+ %s << EOF
+ %s
+ EOF
+ endif
+ ]])):format(cmd, garbage)))
+ eq('', meths.command_output('messages'))
+ if check_neq then
+ eq(true, pcall(source, (dedent([[
+ let g:exc = 0
+ try
+ %s << EOF
+ %s
+ EOF
+ catch
+ let g:exc = v:exception
+ endtry
+ ]])):format(cmd, garbage)))
+ neq(0, meths.get_var('exc'))
+ end
+ end)
+ end)
+ end
+
+ clear()
+
+ -- Built-in scripts
+ test_garbage_exec('lua', true)
+
+ -- Provider-based scripts
+ test_garbage_exec('ruby', check_provider('ruby'))
+ test_garbage_exec('python', check_provider('python'))
+ test_garbage_exec('python3', check_provider('python3'))
+
+ -- Missing scripts
+ test_garbage_exec('tcl', false)
+ test_garbage_exec('mzscheme', false)
+ test_garbage_exec('perl', false)
+
+ -- Not really a script
+ test_garbage_exec('xxxinvalidlanguagexxx', true)
+end)
diff --git a/test/functional/helpers.lua b/test/functional/helpers.lua
index 1be70f917c..3ec4532cfe 100644
--- a/test/functional/helpers.lua
+++ b/test/functional/helpers.lua
@@ -566,6 +566,19 @@ local function get_pathsep()
return funcs.fnamemodify('.', ':p'):sub(-1)
end
+local function check_provider(provider)
+ if provider == 'ruby' then
+ local prog = funcs['provider#' .. provider .. '#Detect']()
+ return prog ~= ''
+ elseif provider == 'python' or provider == 'python3' then
+ local py_major_version = (provider == 'python3' and 3 or 2)
+ local errors = funcs['provider#pythonx#Detect'](py_major_version)[2]
+ return errors == ''
+ else
+ assert(false, 'Unknown provider: ' .. provider)
+ end
+end
+
local module = {
prepend_argv = prepend_argv,
clear = clear,
@@ -632,6 +645,7 @@ local module = {
meth_pcall = meth_pcall,
NIL = mpack.NIL,
get_pathsep = get_pathsep,
+ check_provider = check_provider,
}
return function(after_each)
diff --git a/test/functional/provider/python3_spec.lua b/test/functional/provider/python3_spec.lua
index 89a546675f..68818afd05 100644
--- a/test/functional/provider/python3_spec.lua
+++ b/test/functional/provider/python3_spec.lua
@@ -3,12 +3,11 @@ 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
local feed_command = helpers.feed_command
+local check_provider = helpers.check_provider
do
clear()
- command('let [g:interp, g:errors] = provider#pythonx#Detect(3)')
- local errors = eval('g:errors')
- if errors ~= '' then
+ if not check_provider('python3') then
pending(
'Python 3 (or the Python 3 neovim module) is broken or missing:\n' .. errors,
function() end)
diff --git a/test/functional/provider/python_spec.lua b/test/functional/provider/python_spec.lua
index 94dfa90ea8..ccd095e8ec 100644
--- a/test/functional/provider/python_spec.lua
+++ b/test/functional/provider/python_spec.lua
@@ -12,12 +12,11 @@ local command = helpers.command
local exc_exec = helpers.exc_exec
local write_file = helpers.write_file
local curbufmeths = helpers.curbufmeths
+local check_provider = helpers.check_provider
do
clear()
- command('let [g:interp, g:errors] = provider#pythonx#Detect(2)')
- local errors = meths.get_var('errors')
- if errors ~= '' then
+ if not check_provider('python') then
pending(
'Python 2 (or the Python 2 neovim module) is broken or missing:\n' .. errors,
function() end)
diff --git a/test/functional/provider/ruby_spec.lua b/test/functional/provider/ruby_spec.lua
index 7b0e17688d..4e8eba494a 100644
--- a/test/functional/provider/ruby_spec.lua
+++ b/test/functional/provider/ruby_spec.lua
@@ -10,13 +10,11 @@ local expect = helpers.expect
local command = helpers.command
local write_file = helpers.write_file
local curbufmeths = helpers.curbufmeths
+local check_provider = helpers.check_provider
do
clear()
- command('let g:prog = provider#ruby#Detect()')
- local prog = meths.get_var('prog')
-
- if prog == '' then
+ if not check_provider('ruby') then
pending(
"Cannot find the neovim RubyGem. Try :CheckHealth",
function() end)