unittest: Record previous defines in another place

Previous commit made preprocess.lua know how its output will be used. This moves 
state to cimport, making only it know which is cleaner.
This commit is contained in:
ZyX 2017-01-03 08:57:43 +03:00
parent 410d18ef5c
commit 0d7b779cab
3 changed files with 9 additions and 8 deletions

View File

@ -219,7 +219,7 @@ local function standalone(...) -- luacheck: ignore
Preprocess.add_to_include_path('./../../build/include')
Preprocess.add_to_include_path('./../../.deps/usr/include')
local raw = Preprocess.preprocess(arg[1])
local raw = Preprocess.preprocess('', arg[1])
if raw == nil then
print("ERROR: Preprocess.preprocess() returned empty")

View File

@ -45,6 +45,8 @@ local function filter_complex_blocks(body)
return table.concat(result, "\n")
end
local previous_defines = ''
-- use this helper to import C files, you can pass multiple paths at once,
-- this helper will return the C namespace of the nvim library.
local function cimport(...)
@ -68,7 +70,7 @@ local function cimport(...)
local body = nil
for _ = 1, 10 do
body = Preprocess.preprocess(unpack(paths))
body, previous_defines = Preprocess.preprocess(previous_defines, unpack(paths))
if body ~= nil then break end
end

View File

@ -115,7 +115,6 @@ local Gcc = {
'-D "_Nonnull="',
'-U__BLOCKS__',
},
added_header_defines = '',
}
function Gcc:new(obj)
@ -149,12 +148,12 @@ end
-- returns a stream representing a preprocessed form of the passed-in headers.
-- Don't forget to close the stream by calling the close() method on it.
function Gcc:preprocess(...)
function Gcc:preprocess(previous_defines, ...)
-- create pseudo-header
local pseudoheader = headerize({...}, false)
local pseudoheader_fname = 'tmp_pseudoheader.h'
local pseudoheader_file = io.open(pseudoheader_fname, 'w')
pseudoheader_file:write(self.added_header_defines)
pseudoheader_file:write(previous_defines)
pseudoheader_file:write("\n")
pseudoheader_file:write(pseudoheader)
pseudoheader_file:flush()
@ -171,7 +170,7 @@ function Gcc:preprocess(...)
tostring(defines) ..
" -std=c99 -dM -E " .. shell_quote(pseudoheader_fname))
local def_stream = io.popen(def_cmd)
self.added_header_defines = def_stream:read('*a')
local defines = def_stream:read('*a')
def_stream:close()
-- lfs = require("lfs")
-- print("CWD: #{lfs.currentdir!}")
@ -179,10 +178,10 @@ function Gcc:preprocess(...)
-- io.stderr\write("CWD: #{lfs.currentdir!}\n")
-- io.stderr\write("CMD: #{cmd}\n")
local stream = io.popen(cmd)
local ret = stream:read('*a')
local declarations = stream:read('*a')
stream:close()
os.remove(pseudoheader_fname)
return ret
return declarations, defines
end
local Clang = Gcc:new()