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:
@@ -11,107 +11,109 @@ foreach (file
|
||||
list(APPEND YAZE_SRC_FILES ${CMAKE_SOURCE_DIR}/src/${file})
|
||||
endforeach()
|
||||
|
||||
# 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
|
||||
add_executable(
|
||||
yaze_test
|
||||
yaze_test_ci.cc
|
||||
test_editor.cc
|
||||
test_editor.h
|
||||
testing.h
|
||||
test_utils.h
|
||||
|
||||
# Unit Tests
|
||||
unit/core/asar_wrapper_test.cc
|
||||
unit/core/hex_test.cc
|
||||
unit/rom/rom_test.cc
|
||||
unit/gfx/snes_tile_test.cc
|
||||
unit/gfx/compression_test.cc
|
||||
unit/gfx/snes_palette_test.cc
|
||||
unit/zelda3/message_test.cc
|
||||
unit/zelda3/overworld_test.cc
|
||||
unit/zelda3/object_parser_test.cc
|
||||
unit/zelda3/object_parser_structs_test.cc
|
||||
unit/zelda3/sprite_builder_test.cc
|
||||
unit/zelda3/sprite_position_test.cc
|
||||
unit/zelda3/test_dungeon_objects.cc
|
||||
unit/zelda3/dungeon_component_unit_test.cc
|
||||
# Only build test executable if tests are enabled
|
||||
if(YAZE_BUILD_TESTS)
|
||||
# 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
|
||||
add_executable(
|
||||
yaze_test
|
||||
yaze_test_ci.cc
|
||||
test_editor.cc
|
||||
test_editor.h
|
||||
testing.h
|
||||
test_utils.h
|
||||
|
||||
# Integration Tests
|
||||
integration/asar_integration_test.cc
|
||||
integration/asar_rom_test.cc
|
||||
integration/dungeon_editor_test.cc
|
||||
integration/dungeon_editor_test.h
|
||||
integration/editor/tile16_editor_test.cc
|
||||
integration/editor/editor_integration_test.cc
|
||||
integration/editor/editor_integration_test.h
|
||||
|
||||
# E2E Tests (excluded in CI builds)
|
||||
e2e/rom_dependent/e2e_rom_test.cc
|
||||
e2e/zscustomoverworld/zscustomoverworld_upgrade_test.cc
|
||||
|
||||
# Legacy Integration Tests (to be migrated)
|
||||
unit/zelda3/comprehensive_integration_test.cc
|
||||
unit/zelda3/overworld_integration_test.cc
|
||||
unit/zelda3/dungeon_integration_test.cc
|
||||
unit/zelda3/dungeon_editor_system_integration_test.cc
|
||||
unit/zelda3/dungeon_object_renderer_integration_test.cc
|
||||
unit/zelda3/dungeon_object_renderer_mock_test.cc
|
||||
unit/zelda3/dungeon_object_rendering_tests.cc
|
||||
unit/zelda3/dungeon_room_test.cc
|
||||
)
|
||||
else()
|
||||
# Development build: use full-featured test executable
|
||||
add_executable(
|
||||
yaze_test
|
||||
yaze_test.cc
|
||||
test_editor.cc
|
||||
test_editor.h
|
||||
testing.h
|
||||
test_utils.h
|
||||
|
||||
# Unit Tests
|
||||
unit/core/asar_wrapper_test.cc
|
||||
unit/core/hex_test.cc
|
||||
unit/rom/rom_test.cc
|
||||
unit/gfx/snes_tile_test.cc
|
||||
unit/gfx/compression_test.cc
|
||||
unit/gfx/snes_palette_test.cc
|
||||
unit/zelda3/message_test.cc
|
||||
unit/zelda3/overworld_test.cc
|
||||
unit/zelda3/object_parser_test.cc
|
||||
unit/zelda3/object_parser_structs_test.cc
|
||||
unit/zelda3/sprite_builder_test.cc
|
||||
unit/zelda3/sprite_position_test.cc
|
||||
unit/zelda3/test_dungeon_objects.cc
|
||||
unit/zelda3/dungeon_component_unit_test.cc
|
||||
|
||||
# Integration Tests
|
||||
integration/asar_integration_test.cc
|
||||
integration/asar_rom_test.cc
|
||||
integration/dungeon_editor_test.cc
|
||||
integration/dungeon_editor_test.h
|
||||
integration/editor/tile16_editor_test.cc
|
||||
integration/editor/editor_integration_test.cc
|
||||
integration/editor/editor_integration_test.h
|
||||
|
||||
# E2E Tests (included in development builds)
|
||||
e2e/rom_dependent/e2e_rom_test.cc
|
||||
e2e/zscustomoverworld/zscustomoverworld_upgrade_test.cc
|
||||
|
||||
# Legacy Integration Tests (to be migrated)
|
||||
unit/zelda3/comprehensive_integration_test.cc
|
||||
unit/zelda3/overworld_integration_test.cc
|
||||
unit/zelda3/dungeon_integration_test.cc
|
||||
unit/zelda3/dungeon_editor_system_integration_test.cc
|
||||
unit/zelda3/dungeon_object_renderer_integration_test.cc
|
||||
unit/zelda3/dungeon_object_renderer_mock_test.cc
|
||||
unit/zelda3/dungeon_object_rendering_tests.cc
|
||||
unit/zelda3/dungeon_room_test.cc
|
||||
)
|
||||
endif()
|
||||
# Unit Tests
|
||||
unit/core/asar_wrapper_test.cc
|
||||
unit/core/hex_test.cc
|
||||
unit/rom/rom_test.cc
|
||||
unit/gfx/snes_tile_test.cc
|
||||
unit/gfx/compression_test.cc
|
||||
unit/gfx/snes_palette_test.cc
|
||||
unit/zelda3/message_test.cc
|
||||
unit/zelda3/overworld_test.cc
|
||||
unit/zelda3/object_parser_test.cc
|
||||
unit/zelda3/object_parser_structs_test.cc
|
||||
unit/zelda3/sprite_builder_test.cc
|
||||
unit/zelda3/sprite_position_test.cc
|
||||
unit/zelda3/test_dungeon_objects.cc
|
||||
unit/zelda3/dungeon_component_unit_test.cc
|
||||
|
||||
# Integration Tests
|
||||
integration/asar_integration_test.cc
|
||||
integration/asar_rom_test.cc
|
||||
integration/dungeon_editor_test.cc
|
||||
integration/dungeon_editor_test.h
|
||||
integration/editor/tile16_editor_test.cc
|
||||
integration/editor/editor_integration_test.cc
|
||||
integration/editor/editor_integration_test.h
|
||||
|
||||
# E2E Tests (excluded in CI builds)
|
||||
e2e/rom_dependent/e2e_rom_test.cc
|
||||
e2e/zscustomoverworld/zscustomoverworld_upgrade_test.cc
|
||||
|
||||
# Legacy Integration Tests (to be migrated)
|
||||
unit/zelda3/comprehensive_integration_test.cc
|
||||
unit/zelda3/overworld_integration_test.cc
|
||||
unit/zelda3/dungeon_integration_test.cc
|
||||
unit/zelda3/dungeon_editor_system_integration_test.cc
|
||||
unit/zelda3/dungeon_object_renderer_integration_test.cc
|
||||
unit/zelda3/dungeon_object_renderer_mock_test.cc
|
||||
unit/zelda3/dungeon_object_rendering_tests.cc
|
||||
unit/zelda3/dungeon_room_test.cc
|
||||
)
|
||||
else()
|
||||
# Development build: use full-featured test executable
|
||||
add_executable(
|
||||
yaze_test
|
||||
yaze_test.cc
|
||||
test_editor.cc
|
||||
test_editor.h
|
||||
testing.h
|
||||
test_utils.h
|
||||
|
||||
# Unit Tests
|
||||
unit/core/asar_wrapper_test.cc
|
||||
unit/core/hex_test.cc
|
||||
unit/rom/rom_test.cc
|
||||
unit/gfx/snes_tile_test.cc
|
||||
unit/gfx/compression_test.cc
|
||||
unit/gfx/snes_palette_test.cc
|
||||
unit/zelda3/message_test.cc
|
||||
unit/zelda3/overworld_test.cc
|
||||
unit/zelda3/object_parser_test.cc
|
||||
unit/zelda3/object_parser_structs_test.cc
|
||||
unit/zelda3/sprite_builder_test.cc
|
||||
unit/zelda3/sprite_position_test.cc
|
||||
unit/zelda3/test_dungeon_objects.cc
|
||||
unit/zelda3/dungeon_component_unit_test.cc
|
||||
|
||||
# Integration Tests
|
||||
integration/asar_integration_test.cc
|
||||
integration/asar_rom_test.cc
|
||||
integration/dungeon_editor_test.cc
|
||||
integration/dungeon_editor_test.h
|
||||
integration/editor/tile16_editor_test.cc
|
||||
integration/editor/editor_integration_test.cc
|
||||
integration/editor/editor_integration_test.h
|
||||
|
||||
# E2E Tests (included in development builds)
|
||||
e2e/rom_dependent/e2e_rom_test.cc
|
||||
e2e/zscustomoverworld/zscustomoverworld_upgrade_test.cc
|
||||
|
||||
# Legacy Integration Tests (to be migrated)
|
||||
unit/zelda3/comprehensive_integration_test.cc
|
||||
unit/zelda3/overworld_integration_test.cc
|
||||
unit/zelda3/dungeon_integration_test.cc
|
||||
unit/zelda3/dungeon_editor_system_integration_test.cc
|
||||
unit/zelda3/dungeon_object_renderer_integration_test.cc
|
||||
unit/zelda3/dungeon_object_renderer_mock_test.cc
|
||||
unit/zelda3/dungeon_object_rendering_tests.cc
|
||||
unit/zelda3/dungeon_room_test.cc
|
||||
)
|
||||
endif()
|
||||
|
||||
# Add vanilla value extraction utility (only for local development with ROM access)
|
||||
if(NOT YAZE_MINIMAL_BUILD AND YAZE_ENABLE_ROM_TESTS)
|
||||
@@ -153,63 +155,65 @@ if(NOT YAZE_MINIMAL_BUILD AND YAZE_ENABLE_ROM_TESTS)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
target_include_directories(
|
||||
yaze_test PUBLIC
|
||||
${CMAKE_SOURCE_DIR}/src/app/
|
||||
${CMAKE_SOURCE_DIR}/src/lib/
|
||||
${CMAKE_SOURCE_DIR}/incl/
|
||||
${CMAKE_SOURCE_DIR}/src/
|
||||
${CMAKE_SOURCE_DIR}/test/
|
||||
${CMAKE_SOURCE_DIR}/src/lib/imgui_test_engine
|
||||
${CMAKE_SOURCE_DIR}/src/lib/asar/src
|
||||
${CMAKE_SOURCE_DIR}/src/lib/asar/src/asar
|
||||
${CMAKE_SOURCE_DIR}/src/lib/asar/src/asar-dll-bindings/c
|
||||
${SDL2_INCLUDE_DIR}
|
||||
${PNG_INCLUDE_DIRS}
|
||||
${PROJECT_BINARY_DIR}
|
||||
)
|
||||
# Configure test executable only when tests are enabled
|
||||
target_include_directories(
|
||||
yaze_test PUBLIC
|
||||
${CMAKE_SOURCE_DIR}/src/app/
|
||||
${CMAKE_SOURCE_DIR}/src/lib/
|
||||
${CMAKE_SOURCE_DIR}/incl/
|
||||
${CMAKE_SOURCE_DIR}/src/
|
||||
${CMAKE_SOURCE_DIR}/test/
|
||||
${CMAKE_SOURCE_DIR}/src/lib/imgui_test_engine
|
||||
${CMAKE_SOURCE_DIR}/src/lib/asar/src
|
||||
${CMAKE_SOURCE_DIR}/src/lib/asar/src/asar
|
||||
${CMAKE_SOURCE_DIR}/src/lib/asar/src/asar-dll-bindings/c
|
||||
${SDL2_INCLUDE_DIR}
|
||||
${PNG_INCLUDE_DIRS}
|
||||
${PROJECT_BINARY_DIR}
|
||||
)
|
||||
|
||||
target_link_libraries(
|
||||
yaze_test
|
||||
${SDL_TARGETS}
|
||||
asar-static
|
||||
${ABSL_TARGETS}
|
||||
${PNG_LIBRARIES}
|
||||
${OPENGL_LIBRARIES}
|
||||
${CMAKE_DL_LIBS}
|
||||
ImGui
|
||||
gmock_main
|
||||
gmock
|
||||
gtest_main
|
||||
gtest
|
||||
)
|
||||
target_link_libraries(
|
||||
yaze_test
|
||||
${SDL_TARGETS}
|
||||
asar-static
|
||||
${ABSL_TARGETS}
|
||||
${PNG_LIBRARIES}
|
||||
${OPENGL_LIBRARIES}
|
||||
${CMAKE_DL_LIBS}
|
||||
ImGui
|
||||
gmock_main
|
||||
gmock
|
||||
gtest_main
|
||||
gtest
|
||||
)
|
||||
|
||||
# Link core library for essential functionality (BPS, ASAR, etc.)
|
||||
if(YAZE_BUILD_LIB)
|
||||
target_link_libraries(yaze_test yaze_core)
|
||||
endif()
|
||||
# Link core library for essential functionality (BPS, ASAR, etc.)
|
||||
if(YAZE_BUILD_LIB)
|
||||
target_link_libraries(yaze_test yaze_core)
|
||||
endif()
|
||||
|
||||
# Conditionally link ImGuiTestEngine only when UI tests are enabled
|
||||
if(YAZE_ENABLE_UI_TESTS)
|
||||
target_link_libraries(yaze_test ${IMGUI_TEST_ENGINE_TARGET})
|
||||
target_compile_definitions(yaze_test PRIVATE ${IMGUI_TEST_ENGINE_DEFINITIONS})
|
||||
endif()
|
||||
# Conditionally link ImGuiTestEngine only when UI tests are enabled
|
||||
if(YAZE_ENABLE_UI_TESTS)
|
||||
target_link_libraries(yaze_test ${IMGUI_TEST_ENGINE_TARGET})
|
||||
target_compile_definitions(yaze_test PRIVATE ${IMGUI_TEST_ENGINE_DEFINITIONS})
|
||||
endif()
|
||||
|
||||
# ROM Testing Configuration
|
||||
if(YAZE_ENABLE_ROM_TESTS)
|
||||
target_compile_definitions(yaze_test PRIVATE
|
||||
YAZE_ENABLE_ROM_TESTS=1
|
||||
YAZE_TEST_ROM_PATH="${YAZE_TEST_ROM_PATH}"
|
||||
)
|
||||
endif()
|
||||
# ROM Testing Configuration
|
||||
if(YAZE_ENABLE_ROM_TESTS)
|
||||
target_compile_definitions(yaze_test PRIVATE
|
||||
YAZE_ENABLE_ROM_TESTS=1
|
||||
YAZE_TEST_ROM_PATH="${YAZE_TEST_ROM_PATH}"
|
||||
)
|
||||
endif()
|
||||
|
||||
# Platform-specific definitions
|
||||
if(UNIX AND NOT APPLE)
|
||||
target_compile_definitions(yaze_test PRIVATE "linux" "stricmp=strcasecmp")
|
||||
elseif(APPLE)
|
||||
target_compile_definitions(yaze_test PRIVATE "MACOS" "stricmp=strcasecmp")
|
||||
elseif(WIN32)
|
||||
target_compile_definitions(yaze_test PRIVATE "WINDOWS")
|
||||
# Platform-specific definitions
|
||||
if(UNIX AND NOT APPLE)
|
||||
target_compile_definitions(yaze_test PRIVATE "linux" "stricmp=strcasecmp")
|
||||
elseif(APPLE)
|
||||
target_compile_definitions(yaze_test PRIVATE "MACOS" "stricmp=strcasecmp")
|
||||
elseif(WIN32)
|
||||
target_compile_definitions(yaze_test PRIVATE "WINDOWS")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
# Configure test discovery with efficient labeling for CI/CD
|
||||
@@ -219,6 +223,9 @@ if(YAZE_BUILD_TESTS)
|
||||
|
||||
# Discover all tests with default properties
|
||||
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()
|
||||
|
||||
# Test organization and labeling for CI/CD
|
||||
|
||||
Reference in New Issue
Block a user