mirror of
				https://github.com/neovim/neovim.git
				synced 2025-11-04 09:44:31 +00:00 
			
		
		
		
	Problem: Not all Lua code is checked by stylua. Automating code-style is an important mechanism for reducing time spent on accidental (non-essential) complexity. Solution: - Enable lintlua for `test/unit/` directory. - TODO: only `test/functional/` remains unchecked. previous:45fe4d11adprevious:517f0cc634
		
			
				
	
	
		
			90 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
			
		
		
	
	
			90 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
local platform = vim.uv.os_uname()
 | 
						|
local deps_install_dir = table.remove(_G.arg, 1)
 | 
						|
local subcommand = table.remove(_G.arg, 1)
 | 
						|
local suffix = (platform and platform.sysname:lower():find 'windows') and '.dll' or '.so'
 | 
						|
package.path = deps_install_dir
 | 
						|
  .. '/share/lua/5.1/?.lua;'
 | 
						|
  .. deps_install_dir
 | 
						|
  .. '/share/lua/5.1/?/init.lua;'
 | 
						|
  .. package.path
 | 
						|
package.cpath = deps_install_dir .. '/lib/lua/5.1/?' .. suffix .. ';' .. package.cpath
 | 
						|
 | 
						|
local uv = vim.uv
 | 
						|
 | 
						|
-- we use busted and luacheck and their lua dependencies
 | 
						|
-- But installing their binary dependencies with luarocks is very
 | 
						|
-- slow, replace them with vim.uv wrappers
 | 
						|
 | 
						|
local system = {}
 | 
						|
package.loaded['system.core'] = system
 | 
						|
function system.monotime()
 | 
						|
  uv.update_time()
 | 
						|
  return uv.now() * 1e-3
 | 
						|
end
 | 
						|
function system.gettime()
 | 
						|
  local sec, usec = uv.gettimeofday()
 | 
						|
  return sec + usec * 1e-6
 | 
						|
end
 | 
						|
function system.sleep(sec)
 | 
						|
  uv.sleep(sec * 1e3)
 | 
						|
end
 | 
						|
 | 
						|
local term = {}
 | 
						|
package.loaded['term.core'] = term
 | 
						|
function term.isatty(_)
 | 
						|
  return uv.guess_handle(1) == 'tty'
 | 
						|
end
 | 
						|
 | 
						|
local lfs = { _VERSION = 'fake' }
 | 
						|
package.loaded['lfs'] = lfs
 | 
						|
 | 
						|
function lfs.attributes(path, attr)
 | 
						|
  local stat = uv.fs_stat(path)
 | 
						|
  if attr == 'mode' then
 | 
						|
    return stat and stat.type or ''
 | 
						|
  elseif attr == 'modification' then
 | 
						|
    if not stat then
 | 
						|
      return nil
 | 
						|
    end
 | 
						|
    local mtime = stat.mtime
 | 
						|
    return mtime.sec + mtime.nsec * 1e-9
 | 
						|
  else
 | 
						|
    error('not implemented')
 | 
						|
  end
 | 
						|
end
 | 
						|
 | 
						|
function lfs.currentdir()
 | 
						|
  return uv.cwd()
 | 
						|
end
 | 
						|
 | 
						|
function lfs.chdir(dir)
 | 
						|
  local status, err = pcall(uv.chdir, dir)
 | 
						|
  if status then
 | 
						|
    return true
 | 
						|
  else
 | 
						|
    return nil, err
 | 
						|
  end
 | 
						|
end
 | 
						|
 | 
						|
function lfs.dir(path)
 | 
						|
  local fs = uv.fs_scandir(path)
 | 
						|
  return function()
 | 
						|
    if not fs then
 | 
						|
      return
 | 
						|
    end
 | 
						|
    return uv.fs_scandir_next(fs)
 | 
						|
  end
 | 
						|
end
 | 
						|
 | 
						|
function lfs.mkdir(dir)
 | 
						|
  return uv.fs_mkdir(dir, 493) -- octal 755
 | 
						|
end
 | 
						|
 | 
						|
if subcommand == 'busted' then
 | 
						|
  require 'busted.runner'({ standalone = false })
 | 
						|
elseif subcommand == 'luacheck' then
 | 
						|
  require 'luacheck.main'
 | 
						|
else
 | 
						|
  error 'unknown subcommand'
 | 
						|
end
 |