mirror of
https://github.com/neovim/neovim.git
synced 2025-12-16 03:15:39 +00:00
unittest: Allow multiple indirect includes
Works by saving all preprocessor defines and reusing them on each run. This also saves NVIM_HEADER_H defines. Saving other defines is needed for defines like `Map(foo, bar)` which are sometimes used to declare types or functions. Saving types or function declarations is not needed because they are recorded as luajit state. Fixes #5857
This commit is contained in:
@@ -21,6 +21,9 @@ local nvim_argv = {nvim_prog, '-u', 'NONE', '-i', 'NONE', '-N',
|
||||
|
||||
local mpack = require('mpack')
|
||||
|
||||
local tmpname = global_helpers.tmpname
|
||||
local uname = global_helpers.uname
|
||||
|
||||
-- Formulate a path to the directory containing nvim. We use this to
|
||||
-- help run test executables. It helps to keep the tests working, even
|
||||
-- when the build is not in the default location.
|
||||
@@ -334,44 +337,6 @@ local function write_file(name, text, dont_dedent)
|
||||
file:close()
|
||||
end
|
||||
|
||||
-- Tries to get platform name from $SYSTEM_NAME, uname; fallback is "Windows".
|
||||
local uname = (function()
|
||||
local platform = nil
|
||||
return (function()
|
||||
if platform then
|
||||
return platform
|
||||
end
|
||||
|
||||
platform = os.getenv("SYSTEM_NAME")
|
||||
if platform then
|
||||
return platform
|
||||
end
|
||||
|
||||
local status, f = pcall(io.popen, "uname -s")
|
||||
if status then
|
||||
platform = f:read("*l")
|
||||
else
|
||||
platform = 'Windows'
|
||||
end
|
||||
return platform
|
||||
end)
|
||||
end)()
|
||||
|
||||
local function tmpname()
|
||||
local fname = os.tmpname()
|
||||
if uname() == 'Windows' and fname:sub(1, 2) == '\\s' then
|
||||
-- In Windows tmpname() returns a filename starting with
|
||||
-- special sequence \s, prepend $TEMP path
|
||||
local tmpdir = os.getenv('TEMP')
|
||||
return tmpdir..fname
|
||||
elseif fname:match('^/tmp') and uname() == 'Darwin' then
|
||||
-- In OS X /tmp links to /private/tmp
|
||||
return '/private'..fname
|
||||
else
|
||||
return fname
|
||||
end
|
||||
end
|
||||
|
||||
local function source(code)
|
||||
local fname = tmpname()
|
||||
write_file(fname, code)
|
||||
|
||||
Reference in New Issue
Block a user