diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index d166c9d88a..535f800bc1 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -5,25 +5,33 @@ cmake_minimum_required(VERSION 3.1 FATAL_ERROR) find_program(LUACHECK luacheck) if(LUACHECK) - set(LUACHECK_RC ${PROJECT_SOURCE_DIR}/.luacheckrc) - file(GLOB_RECURSE LUACHECK_DEPS ${PROJECT_SOURCE_DIR}/*.lua) + # XXX: The tweak below relates to luacheck problem with paths. + # If the working directory or one used in luacheck options is + # not a real path, luacheck doesn't handle it the right way. + # Hence the paths used by luacheck in CMake ought to be resolved + # to the real ones. For more info, see the following issue. + # https://github.com/mpeterv/luacheck/issues/208 + get_filename_component(LUACHECK_SOURCE_DIR "${PROJECT_SOURCE_DIR}" REALPATH) + get_filename_component(LUACHECK_BINARY_DIR "${PROJECT_BINARY_DIR}" REALPATH) + set(LUACHECK_RC ${LUACHECK_SOURCE_DIR}/.luacheckrc) + file(GLOB_RECURSE LUACHECK_DEPS ${LUACHECK_SOURCE_DIR}/*.lua) add_custom_target(${PROJECT_NAME}-luacheck DEPENDS ${LUACHECK_RC} ${LUACHECK_DEPS} ) add_custom_command(TARGET ${PROJECT_NAME}-luacheck COMMENT "Running luacheck static analysis" COMMAND - ${LUACHECK} ${PROJECT_SOURCE_DIR} + ${LUACHECK} ${LUACHECK_SOURCE_DIR} --codes --config ${LUACHECK_RC} # XXX: jit/vmdef.lua is an autogenerated Lua source, so # there is no need to run luacheck against it. Hence # explicitly exclude this file from the list for check. - --exclude-files ${LUAJIT_BINARY_DIR}/jit/vmdef.lua + --exclude-files ${LUACHECK_BINARY_DIR}/src/jit/vmdef.lua # XXX: Filenames in .luacheckrc are considered relative to # the working directory, hence luacheck should be run in the # project root directory. - WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} + WORKING_DIRECTORY ${LUACHECK_SOURCE_DIR} ) else() add_custom_target(${PROJECT_NAME}-luacheck)