mirror of
				https://github.com/neovim/neovim.git
				synced 2025-10-26 12:27:24 +00:00 
			
		
		
		
	 052498ed42
			
		
	
	052498ed42
	
	
	
		
			
			Specifically, functions that are run in the context of the test runner are put in module `test/testutil.lua` while the functions that are run in the context of the test session are put in `test/functional/testnvim.lua`. Closes https://github.com/neovim/neovim/issues/27004.
		
			
				
	
	
		
			72 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
			
		
		
	
	
			72 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
| local t = require('test.testutil')
 | |
| local n = require('test.functional.testnvim')()
 | |
| 
 | |
| local eq, clear = t.eq, n.clear
 | |
| local missing_provider = n.missing_provider
 | |
| local command = n.command
 | |
| local write_file = t.write_file
 | |
| local eval = n.eval
 | |
| local retry = t.retry
 | |
| 
 | |
| do
 | |
|   clear()
 | |
|   local reason = missing_provider('node')
 | |
|   if reason then
 | |
|     pending(
 | |
|       string.format('Missing nodejs host, or nodejs version is too old (%s)', reason),
 | |
|       function() end
 | |
|     )
 | |
|     return
 | |
|   end
 | |
| end
 | |
| 
 | |
| before_each(function()
 | |
|   clear()
 | |
| end)
 | |
| 
 | |
| describe('nodejs host', function()
 | |
|   teardown(function()
 | |
|     os.remove('Xtest-nodejs-hello.js')
 | |
|     os.remove('Xtest-nodejs-hello-plugin.js')
 | |
|   end)
 | |
| 
 | |
|   it('works', function()
 | |
|     local fname = 'Xtest-nodejs-hello.js'
 | |
|     write_file(
 | |
|       fname,
 | |
|       [[
 | |
|       const neovim = require('neovim');
 | |
|       const nvim = neovim.attach({socket: process.env.NVIM});
 | |
|       nvim.command('let g:job_out = "hello"');
 | |
|     ]]
 | |
|     )
 | |
|     command('let g:job_id = jobstart(["node", "' .. fname .. '"])')
 | |
|     retry(nil, 3000, function()
 | |
|       eq('hello', eval('g:job_out'))
 | |
|     end)
 | |
|   end)
 | |
|   it('plugin works', function()
 | |
|     local fname = 'Xtest-nodejs-hello-plugin.js'
 | |
|     write_file(
 | |
|       fname,
 | |
|       [[
 | |
|       const neovim = require('neovim');
 | |
|       const nvim = neovim.attach({socket: process.env.NVIM});
 | |
| 
 | |
|       class TestPlugin {
 | |
|         hello() {
 | |
|           this.nvim.command('let g:job_out = "hello-plugin"');
 | |
|         }
 | |
|       }
 | |
|       const PluginClass = neovim.Plugin(TestPlugin);
 | |
|       const plugin = new neovim.NvimPlugin(null, PluginClass, nvim);
 | |
|       plugin.instance.hello();
 | |
|     ]]
 | |
|     )
 | |
|     command('let g:job_id = jobstart(["node", "' .. fname .. '"])')
 | |
|     retry(nil, 3000, function()
 | |
|       eq('hello-plugin', eval('g:job_out'))
 | |
|     end)
 | |
|   end)
 | |
| end)
 |