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

@ -394,11 +394,10 @@ else()
endif() endif()
endif() endif()
if(BUILD_TESTING) find_package(ZLIB REQUIRED)
message("BUILD TESTS: Core, Scripts") include_directories(depends/protobuf)
set(BUILD_SCRIPT_TESTS ON FORCE) include_directories(depends/lua/include)
set(BUILD_CORE_TESTS ON FORCE) include_directories(depends/md5)
endif()
# Support linking against external tinyxml # Support linking against external tinyxml
# If we find an external tinyxml, set the DFHACK_TINYXML variable to "tinyxml" # If we find an external tinyxml, set the DFHACK_TINYXML variable to "tinyxml"
@ -415,11 +414,6 @@ else()
set(DFHACK_TINYXML "dfhack-tinyxml") set(DFHACK_TINYXML "dfhack-tinyxml")
endif() 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/lodepng)
include_directories(depends/tthread) include_directories(depends/tthread)
include_directories(${ZLIB_INCLUDE_DIRS}) include_directories(${ZLIB_INCLUDE_DIRS})
@ -427,42 +421,16 @@ include_directories(depends/clsocket/src)
include_directories(depends/xlsxio/include) include_directories(depends/xlsxio/include)
add_subdirectory(depends) add_subdirectory(depends)
# Testing with CTest # 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})")
message("dfhack_test(${name}, ${files})") add_executable(${name} ${files})
add_executable(${name} ${files}) target_include_directories(${name} PUBLIC depends/googletest/googletest/include)
target_include_directories(${name} PUBLIC depends/googletest/googletest/include) target_link_libraries(${name} dfhack gtest)
target_link_libraries(${name} dfhack gtest) set_target_properties(${name} PROPERTIES COMPILE_FLAGS "-Wno-sign-compare")
set_target_properties(${name} PROPERTIES COMPILE_FLAGS "-Wno-sign-compare") add_test(NAME ${name} COMMAND ${name})
add_test(NAME ${name} COMMAND ${name}) endmacro()
endmacro() include(CTest)
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()
find_package(Git REQUIRED) find_package(Git REQUIRED)
if(NOT GIT_FOUND) if(NOT GIT_FOUND)
@ -570,6 +538,16 @@ if(BUILD_DOCS)
install(FILES "README.html" DESTINATION "${DFHACK_DATA_DESTINATION}") install(FILES "README.html" DESTINATION "${DFHACK_DATA_DESTINATION}")
endif() 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! # Packaging with CPack!
set(DFHACK_PACKAGE_SUFFIX "") set(DFHACK_PACKAGE_SUFFIX "")
if(UNIX) if(UNIX)

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

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

@ -82,9 +82,7 @@ set(MAIN_SOURCES
RemoteTools.cpp RemoteTools.cpp
) )
if(BUILD_CORE_TESTS) add_subdirectory(tests)
add_subdirectory(tests)
endif()
if(WIN32) if(WIN32)
set(CONSOLE_SOURCES Console-windows.cpp) 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}") 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)