blob: 3bee035e781de88f8897591d2170ff4926af75b0 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
|
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
|