From 7cb20fd1b09a5c263ca3aef57d87f09084fb7830 Mon Sep 17 00:00:00 2001 From: John Szakmeister Date: Wed, 30 Apr 2014 05:10:37 -0400 Subject: 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. --- CMakeLists.txt | 12 +++++++++--- cmake/RunUnittests.cmake | 4 +--- test/config/paths.lua.in | 11 +++++++++++ test/unit/helpers.moon | 24 +++++------------------- 4 files changed, 26 insertions(+), 25 deletions(-) create mode 100644 test/config/paths.lua.in 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' -- cgit