diff options
Diffstat (limited to 'test/functional/legacy/eval_spec.lua')
-rw-r--r-- | test/functional/legacy/eval_spec.lua | 61 |
1 files changed, 45 insertions, 16 deletions
diff --git a/test/functional/legacy/eval_spec.lua b/test/functional/legacy/eval_spec.lua index 583b519cdd..33114f2b1a 100644 --- a/test/functional/legacy/eval_spec.lua +++ b/test/functional/legacy/eval_spec.lua @@ -1,34 +1,27 @@ -- Test for various eval features. --- Note: system clipboard support is not tested. I do not think anybody will --- thank me for messing with clipboard. local helpers = require('test.functional.helpers') local feed, insert, source = helpers.feed, helpers.insert, helpers.source local clear, execute, expect = helpers.clear, helpers.execute, helpers.expect local eq, eval, wait, write_file = helpers.eq, helpers.eval, helpers.wait, helpers.write_file +local function has_clipboard() + clear() + return 1 == eval("has('clipboard')") +end + describe('eval', function() setup(function() write_file('test_eval_setup.vim', [[ - set encoding=latin1 set noswapfile lang C - fun RegInfo(reg) - return [ - \ a:reg, - \ getregtype(a:reg), - \ getreg(a:reg), - \ string(getreg(a:reg, 0, 1)), - \ getreg(a:reg, 1), - \ string(getreg(a:reg, 1, 1)) - \ ] + fun AppendRegContents(reg) + call AppendRegParts(a:reg, getregtype(a:reg), getreg(a:reg), string(getreg(a:reg, 0, 1)), getreg(a:reg, 1), string(getreg(a:reg, 1, 1))) endfun - fun AppendRegContents(reg) - let x = RegInfo(a:reg) - call append('$', printf('%s: type %s; value: %s (%s), expr: %s (%s)', - \ x[0], x[1], x[2], x[3], x[4], x[5])) + fun AppendRegParts(reg, type, cont, strcont, cont1, strcont1) + call append('$', printf('%s: type %s; value: %s (%s), expr: %s (%s)', a:reg, a:type, a:cont, a:strcont, a:cont1, a:strcont1)) endfun command -nargs=? AR :call AppendRegContents(<q-args>) @@ -526,6 +519,42 @@ describe('eval', function() =: type v; value: abc/]].."\x00 (['abc/\x00"..[[']), expr: "abc/]]..'\x00'..[[" (['"abc/]]..'\x00'..[["'])]]) end) + -- If the clipboard feature is not available the next test will be sciped. + if has_clipboard() then + it('system clipboard', function() + insert([[ + Some first line (this text was at the top of the old test_eval.in). + + Note: system clipboard is saved, changed and restored. + + clipboard contents + something else]]) + execute('so test_eval_setup.vim') + -- Save and restore system clipboard. + execute("let _clipreg = ['*', getreg('*'), getregtype('*')]") + execute('let _clipopt = &cb') + execute("let &cb='unnamed'") + execute('5y') + execute('AR *') + execute('tabdo :windo :echo "hi"') + execute('6y') + execute('AR *') + execute('let &cb=_clipopt') + execute("call call('setreg', _clipreg)") + expect([[ + Some first line (this text was at the top of the old test_eval.in). + + Note: system clipboard is saved, changed and restored. + + clipboard contents + something else + *: type V; value: clipboard contents]]..'\00'..[[ (['clipboard contents']), expr: clipboard contents]]..'\00'..[[ (['clipboard contents']) + *: type V; value: something else]]..'\00'..[[ (['something else']), expr: something else]]..'\00'..[[ (['something else'])]]) + end) + else + pending('system clipboard not available', function() end) + end + it('errors', function() source([[ fun ErrExe(str) |