aboutsummaryrefslogtreecommitdiff
path: root/test/functional/eval
diff options
context:
space:
mode:
Diffstat (limited to 'test/functional/eval')
-rw-r--r--test/functional/eval/has_spec.lua52
-rw-r--r--test/functional/eval/modeline_spec.lua19
-rw-r--r--test/functional/eval/system_spec.lua21
3 files changed, 86 insertions, 6 deletions
diff --git a/test/functional/eval/has_spec.lua b/test/functional/eval/has_spec.lua
new file mode 100644
index 0000000000..97b3b0e620
--- /dev/null
+++ b/test/functional/eval/has_spec.lua
@@ -0,0 +1,52 @@
+local helpers = require('test.functional.helpers')(after_each)
+local eq = helpers.eq
+local clear = helpers.clear
+local funcs = helpers.funcs
+
+describe('has()', function()
+ before_each(clear)
+
+ it('"nvim-x.y.z"', function()
+ eq(0, funcs.has("nvim-"))
+ eq(0, funcs.has("nvim- "))
+ eq(0, funcs.has("nvim- \t "))
+ eq(0, funcs.has("nvim-0. 1. 1"))
+ eq(0, funcs.has("nvim-0. 1.1"))
+ eq(0, funcs.has("nvim-0.1. 1"))
+ eq(0, funcs.has("nvim-a"))
+ eq(0, funcs.has("nvim-a.b.c"))
+ eq(0, funcs.has("nvim-0.b.c"))
+ eq(0, funcs.has("nvim-0.0.c"))
+ eq(0, funcs.has("nvim-0.b.0"))
+ eq(0, funcs.has("nvim-a.b.0"))
+ eq(0, funcs.has("nvim-.0.0.0"))
+ eq(0, funcs.has("nvim-.0"))
+ eq(0, funcs.has("nvim-0."))
+ eq(0, funcs.has("nvim-0.."))
+ eq(0, funcs.has("nvim-."))
+ eq(0, funcs.has("nvim-.."))
+ eq(0, funcs.has("nvim-..."))
+ eq(0, funcs.has("nvim-42"))
+ eq(0, funcs.has("nvim-9999"))
+ eq(0, funcs.has("nvim-99.001.05"))
+
+ eq(1, funcs.has("nvim"))
+ eq(1, funcs.has("nvim-0"))
+ eq(1, funcs.has("nvim-0.1"))
+ eq(1, funcs.has("nvim-0.0.0"))
+ eq(1, funcs.has("nvim-0.1.1."))
+ eq(1, funcs.has("nvim-0.1.1.abc"))
+ eq(1, funcs.has("nvim-0.1.1.."))
+ eq(1, funcs.has("nvim-0.1.1.. .."))
+ eq(1, funcs.has("nvim-0.1.1.... "))
+ eq(1, funcs.has("nvim-0.0.0"))
+ eq(1, funcs.has("nvim-0.0.1"))
+ eq(1, funcs.has("nvim-0.1.0"))
+ eq(1, funcs.has("nvim-0.1.1"))
+ eq(1, funcs.has("nvim-0.1.5"))
+ eq(1, funcs.has("nvim-0000.001.05"))
+ eq(1, funcs.has("nvim-0.01.005"))
+ eq(1, funcs.has("nvim-00.001.05"))
+ end)
+
+end)
diff --git a/test/functional/eval/modeline_spec.lua b/test/functional/eval/modeline_spec.lua
new file mode 100644
index 0000000000..0be7210a76
--- /dev/null
+++ b/test/functional/eval/modeline_spec.lua
@@ -0,0 +1,19 @@
+local helpers = require('test.functional.helpers')(after_each)
+local clear, execute, write_file = helpers.clear, helpers.execute, helpers.write_file
+local eq, eval = helpers.eq, helpers.eval
+
+describe("modeline", function()
+ local tempfile = helpers.tmpname()
+ before_each(clear)
+
+ after_each(function()
+ os.remove(tempfile)
+ end)
+
+ it('does not crash with a large version number', function()
+ write_file(tempfile, 'vim100000000000000000000000')
+ execute('e! ' .. tempfile)
+
+ eq(2, eval('1+1')) -- Still alive?
+ end)
+end)
diff --git a/test/functional/eval/system_spec.lua b/test/functional/eval/system_spec.lua
index b8f1f87f30..6393477260 100644
--- a/test/functional/eval/system_spec.lua
+++ b/test/functional/eval/system_spec.lua
@@ -1,6 +1,7 @@
local helpers = require('test.functional.helpers')(after_each)
-local eq, clear, eval, feed, nvim =
- helpers.eq, helpers.clear, helpers.eval, helpers.feed, helpers.nvim
+local eq, clear, eval, execute, feed, nvim =
+ helpers.eq, helpers.clear, helpers.eval, helpers.execute, helpers.feed,
+ helpers.nvim
local Screen = require('test.functional.ui.screen')
@@ -117,8 +118,12 @@ describe('system()', function()
eq("echoed", eval('system("echo -n echoed")'))
end)
it('to backgrounded command does not crash', function()
- -- This is indeterminate, just exercise the codepath.
- eval('system("echo -n echoed &")')
+ -- This is indeterminate, just exercise the codepath. May get E5677.
+ execute('call system("echo -n echoed &")')
+ local v_errnum = string.match(eval("v:errmsg"), "^E%d*:")
+ if v_errnum then
+ eq("E5677:", v_errnum)
+ end
eq(2, eval("1+1")) -- Still alive?
end)
end)
@@ -128,8 +133,12 @@ describe('system()', function()
eq("input", eval('system("cat -", "input")'))
end)
it('to backgrounded command does not crash', function()
- -- This is indeterminate, just exercise the codepath.
- eval('system("cat - &", "input")')
+ -- This is indeterminate, just exercise the codepath. May get E5677.
+ execute('call system("cat - &")')
+ local v_errnum = string.match(eval("v:errmsg"), "^E%d*:")
+ if v_errnum then
+ eq("E5677:", v_errnum)
+ end
eq(2, eval("1+1")) -- Still alive?
end)
end)