fix: Windows build and formatting issues
Fixes two CI failures: 1. Windows Abseil header lookup - removed manual include_directories in util.cmake that were only added when gRPC was enabled. CMake target properties now handle Abseil includes automatically. 2. Code formatting violations in test/yaze_test.cc - applied clang-format 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -35,18 +35,16 @@ target_include_directories(yaze_util PUBLIC
|
|||||||
${PROJECT_BINARY_DIR}
|
${PROJECT_BINARY_DIR}
|
||||||
)
|
)
|
||||||
|
|
||||||
if(YAZE_ENABLE_GRPC)
|
# Note: Abseil include paths are provided automatically through target_link_libraries
|
||||||
target_include_directories(yaze_util PRIVATE
|
# No manual include_directories needed - linking to absl::* targets provides the paths
|
||||||
${CMAKE_BINARY_DIR}/_deps/grpc-src/third_party/abseil-cpp
|
|
||||||
)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
target_link_libraries(yaze_util PUBLIC
|
target_link_libraries(yaze_util PUBLIC
|
||||||
yaze_common
|
yaze_common
|
||||||
)
|
)
|
||||||
|
|
||||||
# Add Abseil dependencies if gRPC is enabled
|
# Add Abseil dependencies
|
||||||
# We link to grpc++ which transitively provides Abseil and ensures correct build order
|
# When gRPC is enabled, we link to grpc++ which transitively provides Abseil
|
||||||
|
# When gRPC is disabled, we use the standalone Abseil from absl.cmake
|
||||||
if(YAZE_ENABLE_GRPC)
|
if(YAZE_ENABLE_GRPC)
|
||||||
target_link_libraries(yaze_util PUBLIC
|
target_link_libraries(yaze_util PUBLIC
|
||||||
grpc++
|
grpc++
|
||||||
@@ -55,6 +53,14 @@ if(YAZE_ENABLE_GRPC)
|
|||||||
absl::strings
|
absl::strings
|
||||||
absl::str_format
|
absl::str_format
|
||||||
)
|
)
|
||||||
|
else()
|
||||||
|
# Link standalone Abseil targets (configured in cmake/absl.cmake)
|
||||||
|
target_link_libraries(yaze_util PUBLIC
|
||||||
|
absl::status
|
||||||
|
absl::statusor
|
||||||
|
absl::strings
|
||||||
|
absl::str_format
|
||||||
|
)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
set_target_properties(yaze_util PROPERTIES
|
set_target_properties(yaze_util PROPERTIES
|
||||||
|
|||||||
@@ -5,27 +5,27 @@
|
|||||||
#define IMGUI_DEFINE_MATH_OPERATORS
|
#define IMGUI_DEFINE_MATH_OPERATORS
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include <gtest/gtest.h>
|
|
||||||
#include <SDL.h>
|
#include <SDL.h>
|
||||||
|
#include <gtest/gtest.h>
|
||||||
|
#include <cstdlib>
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
#include <cstdlib>
|
|
||||||
|
|
||||||
#include "absl/debugging/failure_signal_handler.h"
|
#include "absl/debugging/failure_signal_handler.h"
|
||||||
#include "absl/debugging/symbolize.h"
|
#include "absl/debugging/symbolize.h"
|
||||||
#include "imgui/imgui.h"
|
#include "app/controller.h"
|
||||||
|
#include "app/gfx/backend/sdl2_renderer.h"
|
||||||
|
#include "app/platform/window.h"
|
||||||
|
#include "e2e/canvas_selection_test.h"
|
||||||
|
#include "e2e/dungeon_editor_smoke_test.h"
|
||||||
|
#include "e2e/framework_smoke_test.h"
|
||||||
#include "imgui/backends/imgui_impl_sdl2.h"
|
#include "imgui/backends/imgui_impl_sdl2.h"
|
||||||
#include "imgui/backends/imgui_impl_sdlrenderer2.h"
|
#include "imgui/backends/imgui_impl_sdlrenderer2.h"
|
||||||
|
#include "imgui/imgui.h"
|
||||||
#include "imgui_test_engine/imgui_te_context.h"
|
#include "imgui_test_engine/imgui_te_context.h"
|
||||||
#include "imgui_test_engine/imgui_te_engine.h"
|
#include "imgui_test_engine/imgui_te_engine.h"
|
||||||
#include "imgui_test_engine/imgui_te_ui.h"
|
#include "imgui_test_engine/imgui_te_ui.h"
|
||||||
#include "app/platform/window.h"
|
|
||||||
#include "app/controller.h"
|
|
||||||
#include "app/gfx/backend/sdl2_renderer.h"
|
|
||||||
#include "e2e/canvas_selection_test.h"
|
|
||||||
#include "e2e/framework_smoke_test.h"
|
|
||||||
#include "e2e/dungeon_editor_smoke_test.h"
|
|
||||||
|
|
||||||
// #include "test_editor.h" // Not used in main
|
// #include "test_editor.h" // Not used in main
|
||||||
|
|
||||||
@@ -34,17 +34,17 @@ namespace test {
|
|||||||
|
|
||||||
// Test execution modes for AI agents and developers
|
// Test execution modes for AI agents and developers
|
||||||
enum class TestMode {
|
enum class TestMode {
|
||||||
kAll, // Run all tests (default)
|
kAll, // Run all tests (default)
|
||||||
kUnit, // Run only unit tests
|
kUnit, // Run only unit tests
|
||||||
kIntegration, // Run only integration tests
|
kIntegration, // Run only integration tests
|
||||||
kE2E, // Run only end-to-end tests
|
kE2E, // Run only end-to-end tests
|
||||||
kRomDependent, // Run ROM-dependent tests only
|
kRomDependent, // Run ROM-dependent tests only
|
||||||
kZSCustomOverworld, // Run ZSCustomOverworld specific tests
|
kZSCustomOverworld, // Run ZSCustomOverworld specific tests
|
||||||
kCore, // Run core functionality tests
|
kCore, // Run core functionality tests
|
||||||
kGraphics, // Run graphics-related tests
|
kGraphics, // Run graphics-related tests
|
||||||
kEditor, // Run editor tests
|
kEditor, // Run editor tests
|
||||||
kDeprecated, // Run deprecated tests (for cleanup)
|
kDeprecated, // Run deprecated tests (for cleanup)
|
||||||
kSpecific // Run specific test pattern
|
kSpecific // Run specific test pattern
|
||||||
};
|
};
|
||||||
|
|
||||||
struct TestConfig {
|
struct TestConfig {
|
||||||
@@ -219,7 +219,8 @@ void ConfigureTestFilters(const TestConfig& config) {
|
|||||||
if (!filters.empty()) {
|
if (!filters.empty()) {
|
||||||
std::string filter_string;
|
std::string filter_string;
|
||||||
for (size_t i = 0; i < filters.size(); i++) {
|
for (size_t i = 0; i < filters.size(); i++) {
|
||||||
if (i > 0) filter_string += ":";
|
if (i > 0)
|
||||||
|
filter_string += ":";
|
||||||
filter_string += filters[i];
|
filter_string += filters[i];
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -269,17 +270,21 @@ int main(int argc, char* argv[]) {
|
|||||||
yaze::core::Window window;
|
yaze::core::Window window;
|
||||||
// Create renderer for test
|
// Create renderer for test
|
||||||
auto test_renderer = std::make_unique<yaze::gfx::SDL2Renderer>();
|
auto test_renderer = std::make_unique<yaze::gfx::SDL2Renderer>();
|
||||||
yaze::core::CreateWindow(window, test_renderer.get(), SDL_WINDOW_RESIZABLE | SDL_WINDOW_ALLOW_HIGHDPI);
|
yaze::core::CreateWindow(window, test_renderer.get(),
|
||||||
|
SDL_WINDOW_RESIZABLE | SDL_WINDOW_ALLOW_HIGHDPI);
|
||||||
|
|
||||||
// Renderer is now owned by test
|
// Renderer is now owned by test
|
||||||
|
|
||||||
// Setup Dear ImGui context
|
// Setup Dear ImGui context
|
||||||
IMGUI_CHECKVERSION();
|
IMGUI_CHECKVERSION();
|
||||||
ImGui::CreateContext();
|
ImGui::CreateContext();
|
||||||
ImGuiIO& io = ImGui::GetIO(); (void)io;
|
ImGuiIO& io = ImGui::GetIO();
|
||||||
io.ConfigFlags |= ImGuiConfigFlags_NavEnableKeyboard; // Enable Keyboard Controls
|
(void)io;
|
||||||
io.ConfigFlags |= ImGuiConfigFlags_DockingEnable; // Enable Docking
|
io.ConfigFlags |=
|
||||||
io.ConfigFlags |= ImGuiConfigFlags_ViewportsEnable; // Enable Multi-Viewport / Platform Windows
|
ImGuiConfigFlags_NavEnableKeyboard; // Enable Keyboard Controls
|
||||||
|
io.ConfigFlags |= ImGuiConfigFlags_DockingEnable; // Enable Docking
|
||||||
|
io.ConfigFlags |=
|
||||||
|
ImGuiConfigFlags_ViewportsEnable; // Enable Multi-Viewport / Platform Windows
|
||||||
|
|
||||||
// Setup Dear ImGui style
|
// Setup Dear ImGui style
|
||||||
ImGui::StyleColorsDark();
|
ImGui::StyleColorsDark();
|
||||||
@@ -287,12 +292,13 @@ int main(int argc, char* argv[]) {
|
|||||||
// When viewports are enabled we tweak WindowRounding/WindowBg so platform windows can look identical to regular ones.
|
// When viewports are enabled we tweak WindowRounding/WindowBg so platform windows can look identical to regular ones.
|
||||||
ImGuiStyle& style = ImGui::GetStyle();
|
ImGuiStyle& style = ImGui::GetStyle();
|
||||||
if (io.ConfigFlags & ImGuiConfigFlags_ViewportsEnable) {
|
if (io.ConfigFlags & ImGuiConfigFlags_ViewportsEnable) {
|
||||||
style.WindowRounding = 0.0f;
|
style.WindowRounding = 0.0f;
|
||||||
style.Colors[ImGuiCol_WindowBg].w = 1.0f;
|
style.Colors[ImGuiCol_WindowBg].w = 1.0f;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Setup Platform/Renderer backends
|
// Setup Platform/Renderer backends
|
||||||
SDL_Renderer* sdl_renderer = static_cast<SDL_Renderer*>(test_renderer->GetBackendRenderer());
|
SDL_Renderer* sdl_renderer =
|
||||||
|
static_cast<SDL_Renderer*>(test_renderer->GetBackendRenderer());
|
||||||
ImGui_ImplSDL2_InitForSDLRenderer(window.window_.get(), sdl_renderer);
|
ImGui_ImplSDL2_InitForSDLRenderer(window.window_.get(), sdl_renderer);
|
||||||
ImGui_ImplSDLRenderer2_Init(sdl_renderer);
|
ImGui_ImplSDLRenderer2_Init(sdl_renderer);
|
||||||
|
|
||||||
@@ -307,20 +313,25 @@ int main(int argc, char* argv[]) {
|
|||||||
|
|
||||||
// Log test speed mode
|
// Log test speed mode
|
||||||
const char* speed_name = "Fast";
|
const char* speed_name = "Fast";
|
||||||
if (config.test_speed == ImGuiTestRunSpeed_Normal) speed_name = "Normal";
|
if (config.test_speed == ImGuiTestRunSpeed_Normal)
|
||||||
else if (config.test_speed == ImGuiTestRunSpeed_Cinematic) speed_name = "Cinematic";
|
speed_name = "Normal";
|
||||||
|
else if (config.test_speed == ImGuiTestRunSpeed_Cinematic)
|
||||||
|
speed_name = "Cinematic";
|
||||||
std::cout << "Running tests in " << speed_name << " mode" << std::endl;
|
std::cout << "Running tests in " << speed_name << " mode" << std::endl;
|
||||||
|
|
||||||
// Register E2E tests only for GUI test targets (they have the source files)
|
// Register E2E tests only for GUI test targets (they have the source files)
|
||||||
#ifdef YAZE_GUI_TEST_TARGET
|
#ifdef YAZE_GUI_TEST_TARGET
|
||||||
ImGuiTest* smoke_test = IM_REGISTER_TEST(engine, "E2ETest", "FrameworkSmokeTest");
|
ImGuiTest* smoke_test =
|
||||||
|
IM_REGISTER_TEST(engine, "E2ETest", "FrameworkSmokeTest");
|
||||||
smoke_test->TestFunc = E2ETest_FrameworkSmokeTest;
|
smoke_test->TestFunc = E2ETest_FrameworkSmokeTest;
|
||||||
|
|
||||||
ImGuiTest* canvas_test = IM_REGISTER_TEST(engine, "E2ETest", "CanvasSelectionTest");
|
ImGuiTest* canvas_test =
|
||||||
|
IM_REGISTER_TEST(engine, "E2ETest", "CanvasSelectionTest");
|
||||||
canvas_test->TestFunc = E2ETest_CanvasSelectionTest;
|
canvas_test->TestFunc = E2ETest_CanvasSelectionTest;
|
||||||
canvas_test->UserData = &controller;
|
canvas_test->UserData = &controller;
|
||||||
|
|
||||||
ImGuiTest* dungeon_test = IM_REGISTER_TEST(engine, "E2ETest", "DungeonEditorSmokeTest");
|
ImGuiTest* dungeon_test =
|
||||||
|
IM_REGISTER_TEST(engine, "E2ETest", "DungeonEditorSmokeTest");
|
||||||
dungeon_test->TestFunc = E2ETest_DungeonEditorV2SmokeTest;
|
dungeon_test->TestFunc = E2ETest_DungeonEditorV2SmokeTest;
|
||||||
dungeon_test->UserData = &controller;
|
dungeon_test->UserData = &controller;
|
||||||
#endif
|
#endif
|
||||||
@@ -328,45 +339,47 @@ int main(int argc, char* argv[]) {
|
|||||||
// Main loop
|
// Main loop
|
||||||
bool done = false;
|
bool done = false;
|
||||||
while (!done) {
|
while (!done) {
|
||||||
SDL_Event event;
|
SDL_Event event;
|
||||||
while (SDL_PollEvent(&event)) {
|
while (SDL_PollEvent(&event)) {
|
||||||
ImGui_ImplSDL2_ProcessEvent(&event);
|
ImGui_ImplSDL2_ProcessEvent(&event);
|
||||||
if (event.type == SDL_QUIT) {
|
if (event.type == SDL_QUIT) {
|
||||||
done = true;
|
done = true;
|
||||||
}
|
|
||||||
if (event.type == SDL_WINDOWEVENT && event.window.event == SDL_WINDOWEVENT_CLOSE && event.window.windowID == SDL_GetWindowID(window.window_.get())) {
|
|
||||||
done = true;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
if (event.type == SDL_WINDOWEVENT &&
|
||||||
// Start the Dear ImGui frame
|
event.window.event == SDL_WINDOWEVENT_CLOSE &&
|
||||||
ImGui_ImplSDLRenderer2_NewFrame();
|
event.window.windowID == SDL_GetWindowID(window.window_.get())) {
|
||||||
ImGui_ImplSDL2_NewFrame();
|
done = true;
|
||||||
ImGui::NewFrame();
|
|
||||||
|
|
||||||
// Render the UI
|
|
||||||
if (config.show_gui) {
|
|
||||||
ImGuiTestEngine_ShowTestEngineWindows(engine, &config.show_gui);
|
|
||||||
}
|
}
|
||||||
controller.DoRender();
|
}
|
||||||
|
|
||||||
// End the Dear ImGui frame
|
// Start the Dear ImGui frame
|
||||||
ImGui::Render();
|
ImGui_ImplSDLRenderer2_NewFrame();
|
||||||
test_renderer->Clear();
|
ImGui_ImplSDL2_NewFrame();
|
||||||
ImGui_ImplSDLRenderer2_RenderDrawData(ImGui::GetDrawData(), sdl_renderer);
|
ImGui::NewFrame();
|
||||||
test_renderer->Present();
|
|
||||||
|
|
||||||
// Update and Render additional Platform Windows
|
// Render the UI
|
||||||
if (io.ConfigFlags & ImGuiConfigFlags_ViewportsEnable) {
|
if (config.show_gui) {
|
||||||
SDL_Window* backup_current_window = SDL_GL_GetCurrentWindow();
|
ImGuiTestEngine_ShowTestEngineWindows(engine, &config.show_gui);
|
||||||
SDL_GLContext backup_current_context = SDL_GL_GetCurrentContext();
|
}
|
||||||
ImGui::UpdatePlatformWindows();
|
controller.DoRender();
|
||||||
ImGui::RenderPlatformWindowsDefault();
|
|
||||||
SDL_GL_MakeCurrent(backup_current_window, backup_current_context);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Run test engine
|
// End the Dear ImGui frame
|
||||||
ImGuiTestEngine_PostSwap(engine);
|
ImGui::Render();
|
||||||
|
test_renderer->Clear();
|
||||||
|
ImGui_ImplSDLRenderer2_RenderDrawData(ImGui::GetDrawData(), sdl_renderer);
|
||||||
|
test_renderer->Present();
|
||||||
|
|
||||||
|
// Update and Render additional Platform Windows
|
||||||
|
if (io.ConfigFlags & ImGuiConfigFlags_ViewportsEnable) {
|
||||||
|
SDL_Window* backup_current_window = SDL_GL_GetCurrentWindow();
|
||||||
|
SDL_GLContext backup_current_context = SDL_GL_GetCurrentContext();
|
||||||
|
ImGui::UpdatePlatformWindows();
|
||||||
|
ImGui::RenderPlatformWindowsDefault();
|
||||||
|
SDL_GL_MakeCurrent(backup_current_window, backup_current_context);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Run test engine
|
||||||
|
ImGuiTestEngine_PostSwap(engine);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Get test result
|
// Get test result
|
||||||
|
|||||||
Reference in New Issue
Block a user