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