aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn Szakmeister <john@szakmeister.net>2014-04-30 05:10:37 -0400
committerJohn Szakmeister <john@szakmeister.net>2014-05-03 10:36:54 -0400
commit7cb20fd1b09a5c263ca3aef57d87f09084fb7830 (patch)
treefd3a9c86ba823cd969b3a65c6d94b55f2d87d6ee
parent4fe0a51844cc7502e46d29b8ac4077d76eba41c0 (diff)
downloadrneovim-7cb20fd1b09a5c263ca3aef57d87f09084fb7830.tar.gz
rneovim-7cb20fd1b09a5c263ca3aef57d87f09084fb7830.tar.bz2
rneovim-7cb20fd1b09a5c263ca3aef57d87f09084fb7830.zip
Generate a lua module to help pass build-related settings.
This allows us to avoid hard-coding paths and using environment variables to communicate key information to unit tests, which fits with the overall goal of making sure that folks driving CMake directly can continue to do out-of-tree builds.
-rw-r--r--CMakeLists.txt12
-rw-r--r--cmake/RunUnittests.cmake4
-rw-r--r--test/config/paths.lua.in11
-rw-r--r--test/unit/helpers.moon24
4 files changed, 26 insertions, 25 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index cd7e6936e4..a3d4c26280 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -136,16 +136,22 @@ if(NOT BUSTED_OUTPUT_TYPE)
endif()
if(BUSTED_PRG)
- get_target_property(NVIM_TEST_LIB nvim-test LOCATION)
+ get_property(TEST_INCLUDE_DIRS DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
+ PROPERTY INCLUDE_DIRECTORIES)
+ get_target_property(TEST_LIBNVIM_PATH nvim-test LOCATION)
+
+ configure_file(
+ test/config/paths.lua.in
+ ${CMAKE_BINARY_DIR}/test/config/paths.lua)
+
add_custom_target(unittest
COMMAND ${CMAKE_COMMAND}
-DBUSTED_PRG=${BUSTED_PRG}
-DLUA_PRG=${LUA_PRG}
-DWORKING_DIR=${CMAKE_CURRENT_SOURCE_DIR}
- -DNVIM_TEST_LIB=${NVIM_TEST_LIB}
-DBUSTED_OUTPUT_TYPE=${BUSTED_OUTPUT_TYPE}
-DTEST_DIR=${CMAKE_CURRENT_SOURCE_DIR}/test
- -DTEST_INCLUDES=${CMAKE_BINARY_DIR}/test/includes/post
+ -DBUILD_DIR=${CMAKE_BINARY_DIR}
-P ${CMAKE_MODULE_PATH}/RunUnittests.cmake
DEPENDS nvim-test unittest-headers)
endif()
diff --git a/cmake/RunUnittests.cmake b/cmake/RunUnittests.cmake
index 5a1ae35d80..0fa9d79820 100644
--- a/cmake/RunUnittests.cmake
+++ b/cmake/RunUnittests.cmake
@@ -1,13 +1,11 @@
get_filename_component(BUSTED_DIR ${BUSTED_PRG} PATH)
set(ENV{PATH} "${BUSTED_DIR}:$ENV{PATH}")
-set(ENV{NVIM_TEST_LIB} ${NVIM_TEST_LIB})
-set(ENV{TEST_INCLUDES} ${TEST_INCLUDES})
if(DEFINED ENV{TEST_FILE})
set(TEST_DIR $ENV{TEST_FILE})
endif()
execute_process(
- COMMAND ${BUSTED_PRG} -o ${BUSTED_OUTPUT_TYPE} --pattern=.moon ${TEST_DIR}
+ COMMAND ${BUSTED_PRG} -o ${BUSTED_OUTPUT_TYPE} --lpath=${BUILD_DIR}/?.lua --pattern=.moon ${TEST_DIR}
WORKING_DIRECTORY ${WORKING_DIR}
RESULT_VARIABLE res)
diff --git a/test/config/paths.lua.in b/test/config/paths.lua.in
new file mode 100644
index 0000000000..9ec8b23055
--- /dev/null
+++ b/test/config/paths.lua.in
@@ -0,0 +1,11 @@
+local module = {}
+
+module.include_paths = {}
+for p in ("${TEST_INCLUDE_DIRS}" .. ";"):gmatch("[^;]+") do
+ table.insert(module.include_paths, p)
+end
+
+module.test_include_path = "${CMAKE_BINARY_DIR}/test/includes/post"
+module.test_libnvim_path = "${TEST_LIBNVIM_PATH}"
+
+return module
diff --git a/test/unit/helpers.moon b/test/unit/helpers.moon
index e84c569143..8acbe8f992 100644
--- a/test/unit/helpers.moon
+++ b/test/unit/helpers.moon
@@ -3,24 +3,14 @@ lpeg = require 'lpeg'
formatc = require 'test.unit.formatc'
Set = require 'test.unit.set'
Preprocess = require 'test.unit.preprocess'
+Paths = require 'test.config.paths'
-- add some standard header locations
--- TODO(aktau, jszakmeister): optionally pass more header locations via env
-Preprocess.add_to_include_path('./src')
-Preprocess.add_to_include_path('./.deps/usr/include')
-Preprocess.add_to_include_path('./build/config')
-
-if ffi.abi('32bit')
- Preprocess.add_to_include_path('/opt/neovim-deps/32/include')
-else
- Preprocess.add_to_include_path('/opt/neovim-deps/include')
+for i,p in ipairs(Paths.include_paths)
+ Preprocess.add_to_include_path(p)
-- load neovim shared library
-testlib = os.getenv 'NVIM_TEST_LIB'
-unless testlib
- testlib = './build/src/libnvim-test.so'
-
-libnvim = ffi.load testlib
+libnvim = ffi.load Paths.test_libnvim_path
trim = (s) ->
s\match'^%s*(.*%S)' or ''
@@ -91,12 +81,8 @@ cimport = (...) ->
return libnvim
-testinc = os.getenv 'TEST_INCLUDES'
-unless testinc
- testinc = './build/test/includes/post'
-
cppimport = (path) ->
- return cimport testinc .. '/' .. path
+ return cimport Paths.test_include_path .. '/' .. path
cimport './src/types.h'