1local helpers = require('test.functional.helpers')(after_each) 2 3local clear = helpers.clear 4local eq = helpers.eq 5local eval = helpers.eval 6local exec = helpers.exec 7local mkdir_p = helpers.mkdir_p 8local rmdir = helpers.rmdir 9local write_file = helpers.write_file 10 11describe('runtime:', function() 12 local plug_dir = 'Test_Plugin' 13 local sep = helpers.get_pathsep() 14 local init = 'dummy_init.lua' 15 16 setup(function() 17 io.open(init, 'w'):close() -- touch init file 18 clear{args = {'-u', init}} 19 exec('set rtp+=' .. plug_dir) 20 end) 21 22 teardown(function() 23 os.remove(init) 24 end) 25 26 before_each(function() 27 mkdir_p(plug_dir) 28 end) 29 30 after_each(function() 31 rmdir(plug_dir) 32 end) 33 34 describe('colors', function() 35 local colorscheme_folder = plug_dir .. sep .. 'colors' 36 37 it('loads lua colorscheme', function() 38 local colorscheme_file = colorscheme_folder .. sep .. 'new_colorscheme.lua' 39 mkdir_p(colorscheme_folder) 40 write_file(colorscheme_file, [[vim.g.lua_colorscheme = 1]]) 41 42 exec('colorscheme new_colorscheme') 43 44 eq(1, eval('g:lua_colorscheme')) 45 rmdir(colorscheme_folder) 46 end) 47 48 it('loads vim colorscheme when both lua and vim version exist', function() 49 local colorscheme_file = colorscheme_folder .. sep .. 'new_colorscheme' 50 mkdir_p(colorscheme_folder) 51 write_file(colorscheme_file..'.vim', [[let g:colorscheme = 'vim']]) 52 write_file(colorscheme_file..'.lua', [[vim.g.colorscheme = 'lua']]) 53 54 exec('colorscheme new_colorscheme') 55 56 eq('vim', eval('g:colorscheme')) 57 rmdir(colorscheme_folder) 58 end) 59 end) 60 61 describe('compiler', function() 62 local compiler_folder = plug_dir .. sep .. 'compiler' 63 64 it('loads lua compilers', function() 65 local compiler_file = compiler_folder .. sep .. 'new_compiler.lua' 66 mkdir_p(compiler_folder) 67 write_file(compiler_file, [[vim.g.lua_compiler = 1]]) 68 69 exec('compiler new_compiler') 70 71 eq(1, eval('g:lua_compiler')) 72 rmdir(compiler_folder) 73 end) 74 75 it('loads vim compilers when both lua and vim version exist', function() 76 local compiler_file = compiler_folder .. sep .. 'new_compiler' 77 mkdir_p(compiler_folder) 78 write_file(compiler_file..'.vim', [[let g:compiler = 'vim']]) 79 write_file(compiler_file..'.lua', [[vim.g.compiler = 'lua']]) 80 81 exec('compiler new_compiler') 82 83 eq('vim', eval('g:compiler')) 84 rmdir(compiler_folder) 85 end) 86 end) 87 88 describe('ftplugin', function() 89 local ftplugin_folder = table.concat({plug_dir, 'ftplugin'}, sep) 90 91 it('loads lua ftplugins', function() 92 local ftplugin_file = table.concat({ftplugin_folder , 'new-ft.lua'}, sep) 93 mkdir_p(ftplugin_folder) 94 write_file(ftplugin_file , [[vim.g.lua_ftplugin = 1]]) 95 96 exec [[set filetype=new-ft]] 97 eq(1, eval('g:lua_ftplugin')) 98 rmdir(ftplugin_folder) 99 end) 100 end) 101 102 describe('indent', function() 103 local indent_folder = table.concat({plug_dir, 'indent'}, sep) 104 105 it('loads lua indents', function() 106 local indent_file = table.concat({indent_folder , 'new-ft.lua'}, sep) 107 mkdir_p(indent_folder) 108 write_file(indent_file , [[vim.g.lua_indent = 1]]) 109 110 exec [[set filetype=new-ft]] 111 eq(1, eval('g:lua_indent')) 112 rmdir(indent_folder) 113 end) 114 end) 115 116 describe('syntax', function() 117 local syntax_folder = table.concat({plug_dir, 'syntax'}, sep) 118 119 it('loads lua syntaxes on filetype change', function() 120 local syntax_file = table.concat({syntax_folder , 'my-lang.lua'}, sep) 121 mkdir_p(syntax_folder) 122 write_file(syntax_file , [[vim.g.lua_syntax = 1]]) 123 124 exec('set filetype=my-lang') 125 eq(1, eval('g:lua_syntax')) 126 rmdir(syntax_folder) 127 end) 128 129 it('loads lua syntaxes on syntax change', function() 130 local syntax_file = table.concat({syntax_folder , 'my-lang.lua'}, sep) 131 mkdir_p(syntax_folder) 132 write_file(syntax_file , [[vim.g.lua_syntax = 5]]) 133 134 exec('set syntax=my-lang') 135 eq(5, eval('g:lua_syntax')) 136 rmdir(syntax_folder) 137 end) 138 end) 139 140end) 141 142