diff --git a/Source/UnitTests/CMakeLists.txt b/Source/UnitTests/CMakeLists.txt index 50167617a0..c3a3f23782 100644 --- a/Source/UnitTests/CMakeLists.txt +++ b/Source/UnitTests/CMakeLists.txt @@ -4,6 +4,8 @@ add_custom_command(TARGET unittests POST_BUILD COMMAND ${CMAKE_CTEST_COMMAND}) string(APPEND CMAKE_RUNTIME_OUTPUT_DIRECTORY "/Tests") +add_library(unittests_main OBJECT UnitTestsMain.cpp) +target_link_libraries(unittests_main PUBLIC fmt gtest) # Since this is a Core dependency, it can't be linked as a normal library. # Otherwise CMake inserts the library after core, but before other core # dependencies like videocommon which also use Host_ functions, which makes the @@ -16,7 +18,7 @@ macro(add_dolphin_test target) $ ) set_target_properties(${target} PROPERTIES FOLDER Tests) - target_link_libraries(${target} PRIVATE core uicommon gtest_main) + target_link_libraries(${target} PRIVATE core uicommon unittests_main) add_dependencies(unittests ${target}) add_test(NAME ${target} COMMAND ${target}) endmacro() diff --git a/Source/UnitTests/UnitTests.vcxproj b/Source/UnitTests/UnitTests.vcxproj index 6cf886c6c6..2114af7c7c 100644 --- a/Source/UnitTests/UnitTests.vcxproj +++ b/Source/UnitTests/UnitTests.vcxproj @@ -36,8 +36,8 @@ - + diff --git a/Source/UnitTests/UnitTestsMain.cpp b/Source/UnitTests/UnitTestsMain.cpp new file mode 100644 index 0000000000..aa4df43f48 --- /dev/null +++ b/Source/UnitTests/UnitTestsMain.cpp @@ -0,0 +1,30 @@ +// Copyright 2023 Dolphin Emulator Project +// SPDX-License-Identifier: GPL-2.0-or-later +// Based on gtest_main.cc + +#include +#include + +#include "Common/MsgHandler.h" + +#include "gtest/gtest.h" + +namespace +{ +bool TestMsgHandler(const char* caption, const char* text, bool yes_no, Common::MsgType style) +{ + fmt::print(stderr, "{}\n", text); + ADD_FAILURE(); + // Return yes to any question (we don't need Dolphin to break on asserts) + return true; +} +} // namespace + +int main(int argc, char** argv) +{ + fmt::print(stderr, "Running main() from UnitTestsMain.cpp\n"); + Common::RegisterMsgAlertHandler(TestMsgHandler); + + ::testing::InitGoogleTest(&argc, argv); + return RUN_ALL_TESTS(); +}