mirror of
				https://github.com/neovim/neovim.git
				synced 2025-10-26 12:27:24 +00:00 
			
		
		
		
	 07cc231142
			
		
	
	07cc231142
	
	
	
		
			
			The commit summary maybe does not make sense, but calling a function that does not wait on anything `wait()` makes even less sense.
		
			
				
	
	
		
			62 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
			
		
		
	
	
			62 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
| local helpers = require('test.functional.helpers')(after_each)
 | |
| 
 | |
| local command = helpers.command
 | |
| local meths = helpers.meths
 | |
| local clear = helpers.clear
 | |
| local sleep = helpers.sleep
 | |
| local poke_eventloop = helpers.poke_eventloop
 | |
| local feed = helpers.feed
 | |
| local eq = helpers.eq
 | |
| 
 | |
| local dur
 | |
| local min_dur = 8
 | |
| local len = 131072
 | |
| 
 | |
| describe('List support code', function()
 | |
|   if not pending('does not actually allows interrupting with just got_int', function() end) then return end
 | |
|   -- The following tests are confirmed to work with os_breakcheck() just before
 | |
|   -- `if (got_int) {break;}` in tv_list_copy and list_join_inner() and not to
 | |
|   -- work without.
 | |
|   setup(function()
 | |
|     clear()
 | |
|     dur = 0
 | |
|     while true do
 | |
|       command(([[
 | |
|         let rt = reltime()
 | |
|         let bl = range(%u)
 | |
|         let dur = reltimestr(reltime(rt))
 | |
|       ]]):format(len))
 | |
|       dur = tonumber(meths.get_var('dur'))
 | |
|       if dur >= min_dur then
 | |
|         -- print(('Using len %u, dur %g'):format(len, dur))
 | |
|         break
 | |
|       else
 | |
|         len = len * 2
 | |
|       end
 | |
|     end
 | |
|   end)
 | |
|   it('allows interrupting copy', function()
 | |
|     feed(':let t_rt = reltime()<CR>:let t_bl = copy(bl)<CR>')
 | |
|     sleep(min_dur / 16 * 1000)
 | |
|     feed('<C-c>')
 | |
|     poke_eventloop()
 | |
|     command('let t_dur = reltimestr(reltime(t_rt))')
 | |
|     local t_dur = tonumber(meths.get_var('t_dur'))
 | |
|     if t_dur >= dur / 8 then
 | |
|       eq(nil, ('Took too long to cancel: %g >= %g'):format(t_dur, dur / 8))
 | |
|     end
 | |
|   end)
 | |
|   it('allows interrupting join', function()
 | |
|     feed(':let t_rt = reltime()<CR>:let t_j = join(bl)<CR>')
 | |
|     sleep(min_dur / 16 * 1000)
 | |
|     feed('<C-c>')
 | |
|     poke_eventloop()
 | |
|     command('let t_dur = reltimestr(reltime(t_rt))')
 | |
|     local t_dur = tonumber(meths.get_var('t_dur'))
 | |
|     print(('t_dur: %g'):format(t_dur))
 | |
|     if t_dur >= dur / 8 then
 | |
|       eq(nil, ('Took too long to cancel: %g >= %g'):format(t_dur, dur / 8))
 | |
|     end
 | |
|   end)
 | |
| end)
 |