mirror of
https://github.com/DarkflameUniverse/DarkflameServer.git
synced 2026-10-21 04:02:48 +00:00
Every character gets a save generation in charxml. A world bumps it when it loads the character for play, and every save from that world only goes through while the stored generation is still the one it loaded or last saved (and moves it on). Dashboard edits, restores and maintenance writes bump it too. A world that lost the character to another world (a disconnect noticed late, a zone transfer, an instance migration) or to a dashboard edit can no longer overwrite the newer data: the save is refused, logged and audited as stale_save_refused, the world stops saving that character and a player still connected to it is disconnected with the save failure reason so they reload. Fixes #639 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
39 lines
1.2 KiB
CMake
39 lines
1.2 KiB
CMake
set(DGAMETEST_SOURCES
|
|
"GameDependencies.cpp"
|
|
"LUBitStreamTests.cpp"
|
|
"MailIdPinTests.cpp"
|
|
"EconomyLedgerTests.cpp"
|
|
"PlayerReportsLimitTests.cpp"
|
|
"SlashCommandPermissionTests.cpp"
|
|
"StaleSaveGuardTests.cpp"
|
|
)
|
|
|
|
add_subdirectory(dComponentsTests)
|
|
list(APPEND DGAMETEST_SOURCES ${DCOMPONENTS_TESTS})
|
|
|
|
add_subdirectory(dGameMessagesTests)
|
|
list(APPEND DGAMETEST_SOURCES ${DGAMEMESSAGES_TESTS})
|
|
|
|
add_subdirectory(dNetTests)
|
|
list(APPEND DGAMETEST_SOURCES ${DNET_TESTS})
|
|
|
|
file(COPY ${GAMEMESSAGE_TESTBITSTREAMS} DESTINATION ${CMAKE_CURRENT_BINARY_DIR})
|
|
file(COPY ${COMPONENT_TEST_DATA} DESTINATION ${CMAKE_CURRENT_BINARY_DIR})
|
|
|
|
# Add the executable. Remember to add all tests above this!
|
|
add_executable(dGameTests ${DGAMETEST_SOURCES})
|
|
target_include_directories(dGameTests PRIVATE "." "${PROJECT_SOURCE_DIR}/dChatServer")
|
|
|
|
if(APPLE)
|
|
add_custom_target(dGameTestsLink
|
|
${CMAKE_COMMAND} -E copy $<TARGET_FILE:MariaDB::ConnCpp> ${CMAKE_CURRENT_BINARY_DIR})
|
|
|
|
add_dependencies(dGameTests dGameTestsLink)
|
|
endif()
|
|
|
|
target_link_libraries(dGameTests ${COMMON_LIBRARIES} GTest::gtest_main
|
|
dGame dScripts dPhysics Detour Recast tinyxml2 dWorldServer dZoneManager dChatFilter dNavigation bcrypt MD5)
|
|
|
|
# Discover the tests
|
|
gtest_discover_tests(dGameTests)
|