Refactor test configuration in CMake to enable conditional test builds
- Updated `CMakeLists.txt` to conditionally build the test executable based on the `YAZE_BUILD_TESTS` flag, enhancing flexibility in test management. - Removed hardcoded test executable configurations and replaced them with conditional logic for minimal and development builds. - Improved organization of test files and dependencies, ensuring that tests are only built and discovered when enabled, streamlining the build process.
This commit is contained in:
2
.github/workflows/release.yml
vendored
2
.github/workflows/release.yml
vendored
@@ -235,7 +235,6 @@ jobs:
|
|||||||
-DYAZE_ENABLE_EXPERIMENTAL_TESTS=OFF `
|
-DYAZE_ENABLE_EXPERIMENTAL_TESTS=OFF `
|
||||||
-DYAZE_INSTALL_LIB=OFF `
|
-DYAZE_INSTALL_LIB=OFF `
|
||||||
-DYAZE_MINIMAL_BUILD=OFF `
|
-DYAZE_MINIMAL_BUILD=OFF `
|
||||||
-DGTEST_DISCOVER_TESTS_DISCOVERY_MODE=POST_BUILD `
|
|
||||||
-G "${{ matrix.cmake_generator }}" `
|
-G "${{ matrix.cmake_generator }}" `
|
||||||
-A ${{ matrix.cmake_generator_platform }}
|
-A ${{ matrix.cmake_generator_platform }}
|
||||||
} else {
|
} else {
|
||||||
@@ -249,7 +248,6 @@ jobs:
|
|||||||
-DYAZE_ENABLE_EXPERIMENTAL_TESTS=OFF `
|
-DYAZE_ENABLE_EXPERIMENTAL_TESTS=OFF `
|
||||||
-DYAZE_INSTALL_LIB=OFF `
|
-DYAZE_INSTALL_LIB=OFF `
|
||||||
-DYAZE_MINIMAL_BUILD=ON `
|
-DYAZE_MINIMAL_BUILD=ON `
|
||||||
-DGTEST_DISCOVER_TESTS_DISCOVERY_MODE=POST_BUILD `
|
|
||||||
-G "${{ matrix.cmake_generator }}" `
|
-G "${{ matrix.cmake_generator }}" `
|
||||||
-A ${{ matrix.cmake_generator_platform }}
|
-A ${{ matrix.cmake_generator_platform }}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -11,9 +11,11 @@ foreach (file
|
|||||||
list(APPEND YAZE_SRC_FILES ${CMAKE_SOURCE_DIR}/src/${file})
|
list(APPEND YAZE_SRC_FILES ${CMAKE_SOURCE_DIR}/src/${file})
|
||||||
endforeach()
|
endforeach()
|
||||||
|
|
||||||
# Main test executable with enhanced argument handling for AI agents
|
# Only build test executable if tests are enabled
|
||||||
# Use CI version for minimal builds, full version for development
|
if(YAZE_BUILD_TESTS)
|
||||||
if(YAZE_MINIMAL_BUILD)
|
# Main test executable with enhanced argument handling for AI agents
|
||||||
|
# Use CI version for minimal builds, full version for development
|
||||||
|
if(YAZE_MINIMAL_BUILD)
|
||||||
# CI/Minimal build: use simplified test executable
|
# CI/Minimal build: use simplified test executable
|
||||||
add_executable(
|
add_executable(
|
||||||
yaze_test
|
yaze_test
|
||||||
@@ -62,7 +64,7 @@ if(YAZE_MINIMAL_BUILD)
|
|||||||
unit/zelda3/dungeon_object_rendering_tests.cc
|
unit/zelda3/dungeon_object_rendering_tests.cc
|
||||||
unit/zelda3/dungeon_room_test.cc
|
unit/zelda3/dungeon_room_test.cc
|
||||||
)
|
)
|
||||||
else()
|
else()
|
||||||
# Development build: use full-featured test executable
|
# Development build: use full-featured test executable
|
||||||
add_executable(
|
add_executable(
|
||||||
yaze_test
|
yaze_test
|
||||||
@@ -111,7 +113,7 @@ else()
|
|||||||
unit/zelda3/dungeon_object_rendering_tests.cc
|
unit/zelda3/dungeon_object_rendering_tests.cc
|
||||||
unit/zelda3/dungeon_room_test.cc
|
unit/zelda3/dungeon_room_test.cc
|
||||||
)
|
)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# Add vanilla value extraction utility (only for local development with ROM access)
|
# Add vanilla value extraction utility (only for local development with ROM access)
|
||||||
if(NOT YAZE_MINIMAL_BUILD AND YAZE_ENABLE_ROM_TESTS)
|
if(NOT YAZE_MINIMAL_BUILD AND YAZE_ENABLE_ROM_TESTS)
|
||||||
@@ -153,7 +155,8 @@ if(NOT YAZE_MINIMAL_BUILD AND YAZE_ENABLE_ROM_TESTS)
|
|||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
target_include_directories(
|
# Configure test executable only when tests are enabled
|
||||||
|
target_include_directories(
|
||||||
yaze_test PUBLIC
|
yaze_test PUBLIC
|
||||||
${CMAKE_SOURCE_DIR}/src/app/
|
${CMAKE_SOURCE_DIR}/src/app/
|
||||||
${CMAKE_SOURCE_DIR}/src/lib/
|
${CMAKE_SOURCE_DIR}/src/lib/
|
||||||
@@ -167,9 +170,9 @@ target_include_directories(
|
|||||||
${SDL2_INCLUDE_DIR}
|
${SDL2_INCLUDE_DIR}
|
||||||
${PNG_INCLUDE_DIRS}
|
${PNG_INCLUDE_DIRS}
|
||||||
${PROJECT_BINARY_DIR}
|
${PROJECT_BINARY_DIR}
|
||||||
)
|
)
|
||||||
|
|
||||||
target_link_libraries(
|
target_link_libraries(
|
||||||
yaze_test
|
yaze_test
|
||||||
${SDL_TARGETS}
|
${SDL_TARGETS}
|
||||||
asar-static
|
asar-static
|
||||||
@@ -182,34 +185,35 @@ target_link_libraries(
|
|||||||
gmock
|
gmock
|
||||||
gtest_main
|
gtest_main
|
||||||
gtest
|
gtest
|
||||||
)
|
)
|
||||||
|
|
||||||
# Link core library for essential functionality (BPS, ASAR, etc.)
|
# Link core library for essential functionality (BPS, ASAR, etc.)
|
||||||
if(YAZE_BUILD_LIB)
|
if(YAZE_BUILD_LIB)
|
||||||
target_link_libraries(yaze_test yaze_core)
|
target_link_libraries(yaze_test yaze_core)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# Conditionally link ImGuiTestEngine only when UI tests are enabled
|
# Conditionally link ImGuiTestEngine only when UI tests are enabled
|
||||||
if(YAZE_ENABLE_UI_TESTS)
|
if(YAZE_ENABLE_UI_TESTS)
|
||||||
target_link_libraries(yaze_test ${IMGUI_TEST_ENGINE_TARGET})
|
target_link_libraries(yaze_test ${IMGUI_TEST_ENGINE_TARGET})
|
||||||
target_compile_definitions(yaze_test PRIVATE ${IMGUI_TEST_ENGINE_DEFINITIONS})
|
target_compile_definitions(yaze_test PRIVATE ${IMGUI_TEST_ENGINE_DEFINITIONS})
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# ROM Testing Configuration
|
# ROM Testing Configuration
|
||||||
if(YAZE_ENABLE_ROM_TESTS)
|
if(YAZE_ENABLE_ROM_TESTS)
|
||||||
target_compile_definitions(yaze_test PRIVATE
|
target_compile_definitions(yaze_test PRIVATE
|
||||||
YAZE_ENABLE_ROM_TESTS=1
|
YAZE_ENABLE_ROM_TESTS=1
|
||||||
YAZE_TEST_ROM_PATH="${YAZE_TEST_ROM_PATH}"
|
YAZE_TEST_ROM_PATH="${YAZE_TEST_ROM_PATH}"
|
||||||
)
|
)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# Platform-specific definitions
|
# Platform-specific definitions
|
||||||
if(UNIX AND NOT APPLE)
|
if(UNIX AND NOT APPLE)
|
||||||
target_compile_definitions(yaze_test PRIVATE "linux" "stricmp=strcasecmp")
|
target_compile_definitions(yaze_test PRIVATE "linux" "stricmp=strcasecmp")
|
||||||
elseif(APPLE)
|
elseif(APPLE)
|
||||||
target_compile_definitions(yaze_test PRIVATE "MACOS" "stricmp=strcasecmp")
|
target_compile_definitions(yaze_test PRIVATE "MACOS" "stricmp=strcasecmp")
|
||||||
elseif(WIN32)
|
elseif(WIN32)
|
||||||
target_compile_definitions(yaze_test PRIVATE "WINDOWS")
|
target_compile_definitions(yaze_test PRIVATE "WINDOWS")
|
||||||
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# Configure test discovery with efficient labeling for CI/CD
|
# Configure test discovery with efficient labeling for CI/CD
|
||||||
@@ -219,6 +223,9 @@ if(YAZE_BUILD_TESTS)
|
|||||||
|
|
||||||
# Discover all tests with default properties
|
# Discover all tests with default properties
|
||||||
gtest_discover_tests(yaze_test)
|
gtest_discover_tests(yaze_test)
|
||||||
|
else()
|
||||||
|
# Tests are disabled - don't build test executable or discover tests
|
||||||
|
message(STATUS "Tests disabled - skipping test executable and discovery")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# Test organization and labeling for CI/CD
|
# Test organization and labeling for CI/CD
|
||||||
|
|||||||
Reference in New Issue
Block a user