simplify unit testing setup

develop
myk002 2022-11-28 17:16:48 -08:00
parent e4c13114a9
commit ae035d5836
No known key found for this signature in database
GPG Key ID: 8A39CA0FA0C16E78
6 changed files with 36 additions and 67 deletions

@ -83,7 +83,7 @@ jobs:
-B build-ci \
-G Ninja \
-DDFHACK_BUILD_ARCH=64 \
-DBUILD_TESTING:BOOL=ON \
-DBUILD_TESTS:BOOL=ON \
-DBUILD_DEV_PLUGINS:BOOL=${{ matrix.plugins == 'all' }} \
-DBUILD_SIZECHECK:BOOL=${{ matrix.plugins == 'all' }} \
-DBUILD_SKELETON:BOOL=${{ matrix.plugins == 'all' }} \
@ -96,15 +96,13 @@ jobs:
run: |
ninja -C build-ci install
ccache --show-stats
- name: Run unit tests
id: run_tests1
- name: Run cpp unit tests
id: run_tests_cpp
run: |
if build-ci/library/tests/test-library; then
exit 0
fi
exit 1
ninja -C build-ci && ninja -C build-ci test
exit $?
- name: Run lua tests
id: run_tests2
id: run_tests_lua
run: |
export TERM=dumb
status=0

@ -394,11 +394,10 @@ else()
endif()
endif()
if(BUILD_TESTING)
message("BUILD TESTS: Core, Scripts")
set(BUILD_SCRIPT_TESTS ON FORCE)
set(BUILD_CORE_TESTS ON FORCE)
endif()
find_package(ZLIB REQUIRED)
include_directories(depends/protobuf)
include_directories(depends/lua/include)
include_directories(depends/md5)
# Support linking against external tinyxml
# If we find an external tinyxml, set the DFHACK_TINYXML variable to "tinyxml"
@ -415,11 +414,6 @@ else()
set(DFHACK_TINYXML "dfhack-tinyxml")
endif()
find_package(ZLIB REQUIRED)
include_directories(depends/protobuf)
include_directories(depends/lua/include)
include_directories(depends/md5)
include_directories(depends/lodepng)
include_directories(depends/tthread)
include_directories(${ZLIB_INCLUDE_DIRS})
@ -427,42 +421,16 @@ include_directories(depends/clsocket/src)
include_directories(depends/xlsxio/include)
add_subdirectory(depends)
# Testing with CTest
if(BUILD_TESTING OR BUILD_CORE_TESTS)
macro(dfhack_test name files)
macro(dfhack_test name files)
message("dfhack_test(${name}, ${files})")
add_executable(${name} ${files})
target_include_directories(${name} PUBLIC depends/googletest/googletest/include)
target_link_libraries(${name} dfhack gtest)
set_target_properties(${name} PROPERTIES COMPILE_FLAGS "-Wno-sign-compare")
add_test(NAME ${name} COMMAND ${name})
endmacro()
include(CTest)
endif()
include(CMakeDependentOption)
cmake_dependent_option(
BUILD_SCRIPT_TESTS "Install integration tests in hack/scripts/test" OFF
"BUILD_TESTING" OFF)
mark_as_advanced(FORCE BUILD_TESTS)
# Handle deprecated BUILD_TESTS option
option(BUILD_TESTS "Deprecated option; please use BUILD_SCRIPT_TESTS=ON" OFF)
if(BUILD_TESTING OR BUILD_SCRIPT_TESTS)
if(EXISTS "${dfhack_SOURCE_DIR}/test/scripts")
message(SEND_ERROR "test/scripts must not exist in the dfhack repo since it would conflict with the tests installed from the scripts repo.")
endif()
install(DIRECTORY ${dfhack_SOURCE_DIR}/test
DESTINATION ${DFHACK_DATA_DESTINATION}/scripts)
install(FILES ci/test.lua DESTINATION ${DFHACK_DATA_DESTINATION}/scripts)
else()
add_custom_target(test
COMMENT "Nothing to do: CMake option BUILD_TESTING is OFF"
# Portable NOOP; need to put something here or the comment isn't displayed
COMMAND cd
)
endif()
endmacro()
include(CTest)
find_package(Git REQUIRED)
if(NOT GIT_FOUND)
@ -570,6 +538,16 @@ if(BUILD_DOCS)
install(FILES "README.html" DESTINATION "${DFHACK_DATA_DESTINATION}")
endif()
option(BUILD_TESTS "Include tests (currently just installs Lua tests into the scripts folder)" OFF)
if(BUILD_TESTS)
if(EXISTS "${dfhack_SOURCE_DIR}/test/scripts")
message(SEND_ERROR "test/scripts must not exist in the dfhack repo since it would conflict with the tests installed from the scripts repo.")
endif()
install(DIRECTORY ${dfhack_SOURCE_DIR}/test
DESTINATION ${DFHACK_DATA_DESTINATION}/scripts)
install(FILES ci/test.lua DESTINATION ${DFHACK_DATA_DESTINATION}/scripts)
endif()
# Packaging with CPack!
set(DFHACK_PACKAGE_SUFFIX "")
if(UNIX)

@ -21,7 +21,7 @@ install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/blueprints/
FILES_MATCHING PATTERN "*"
PATTERN blueprints/library/test EXCLUDE)
if(BUILD_SCRIPT_TESTS)
if(BUILD_TESTS)
install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/blueprints/library/test/
DESTINATION blueprints/library/test
)

@ -3,10 +3,8 @@ add_subdirectory(lodepng)
add_subdirectory(lua)
add_subdirectory(md5)
add_subdirectory(protobuf)
if(BUILD_CORE_TESTS)
add_subdirectory(googletest EXCLUDE_FROM_ALL)
set_target_properties(gtest PROPERTIES COMPILE_FLAGS "-Wno-maybe-uninitialized -Wno-sign-compare")
endif()
add_subdirectory(googletest)
set_target_properties(gtest PROPERTIES COMPILE_FLAGS "-Wno-maybe-uninitialized -Wno-sign-compare")
# Don't build tinyxml if it's being externally linked against.
if(NOT TinyXML_FOUND)

@ -82,9 +82,7 @@ set(MAIN_SOURCES
RemoteTools.cpp
)
if(BUILD_CORE_TESTS)
add_subdirectory(tests)
endif()
add_subdirectory(tests)
if(WIN32)
set(CONSOLE_SOURCES Console-windows.cpp)

@ -1,7 +1,4 @@
file(GLOB_RECURSE TEST_SOURCES LIST_DIRECTORIES false *test.cpp)
file(GLOB_RECURSE TEST_SOURCES
LIST_DIRECTORIES false
*test.cpp)
dfhack_test(test-library "${TEST_SOURCES}")
# How to get `test` to ensure everything is up to date before running
# tests? This add_dependencies() fails with:
# Cannot add target-level dependencies to non-existent target "test".
#add_dependencies(test MiscUtils.test)