Skip to content
17 changes: 8 additions & 9 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -35,9 +35,9 @@ jobs:
uses: actions/cache@v4
with:
path: build/_deps
key: deps-${{ runner.os }}-${{ runner.arch }}-${{ hashFiles('CMakeLists.txt') }}
key: deps-${{ runner.os }}-${{ runner.arch }}-x64-${{ hashFiles('CMakeLists.txt') }}
restore-keys: |
deps-${{ runner.os }}-${{ runner.arch }}-
deps-${{ runner.os }}-${{ runner.arch }}-x64-

- name: Configure (Unix)
if: runner.os != 'Windows'
Expand All @@ -49,20 +49,19 @@ jobs:

- name: Configure (Windows)
if: runner.os == 'Windows'
run: >
cmake -B build -S .
-G "Visual Studio 17 2022"
-DFASTMCPP_BUILD_TESTS=ON
-DFASTMCPP_BUILD_EXAMPLES=ON
run: |
if (Test-Path build) { Remove-Item -Recurse -Force build/CMakeCache.txt, build/CMakeFiles -ErrorAction SilentlyContinue }
cmake -B build -S . -G "Visual Studio 17 2022" -A x64 -DFASTMCPP_BUILD_TESTS=ON -DFASTMCPP_BUILD_EXAMPLES=ON

- name: Build (Unix)
if: runner.os != 'Windows'
run: cmake --build build --config ${{ matrix.build_type }} --parallel

- name: Build (Windows)
if: runner.os == 'Windows'
# Single-threaded build on Windows to avoid compiler heap space issues with large test files
run: cmake --build build --config ${{ matrix.build_type }} --parallel 1
# Single-threaded build to avoid C1060 "compiler out of heap space" on GitHub's 16GB Windows runners
# Even /m:4 exhausts heap with deeply nested JSON initializers in test files
run: cmake --build build --config ${{ matrix.build_type }} -- /m:1 /p:CL_MPCount=1

- name: Test
run: ctest --test-dir build -C ${{ matrix.build_type }} --output-on-failure
19 changes: 16 additions & 3 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -229,9 +229,22 @@ if(FASTMCPP_BUILD_TESTS)
target_link_libraries(fastmcpp_server_patterns PRIVATE fastmcpp_core)
add_test(NAME fastmcpp_server_patterns COMMAND fastmcpp_server_patterns)

add_executable(fastmcpp_server_interactions tests/server/interactions.cpp)
target_link_libraries(fastmcpp_server_interactions PRIVATE fastmcpp_core)
add_test(NAME fastmcpp_server_interactions COMMAND fastmcpp_server_interactions)
# Split into 4 parts to avoid MSVC heap exhaustion on CI (C1060 + OutOfMemoryException)
add_executable(fastmcpp_server_interactions_part1 tests/server/interactions_part1.cpp)
target_link_libraries(fastmcpp_server_interactions_part1 PRIVATE fastmcpp_core)
add_test(NAME fastmcpp_server_interactions_part1 COMMAND fastmcpp_server_interactions_part1)

add_executable(fastmcpp_server_interactions_part2a tests/server/interactions_part2a.cpp)
target_link_libraries(fastmcpp_server_interactions_part2a PRIVATE fastmcpp_core)
add_test(NAME fastmcpp_server_interactions_part2a COMMAND fastmcpp_server_interactions_part2a)

add_executable(fastmcpp_server_interactions_part2b tests/server/interactions_part2b.cpp)
target_link_libraries(fastmcpp_server_interactions_part2b PRIVATE fastmcpp_core)
add_test(NAME fastmcpp_server_interactions_part2b COMMAND fastmcpp_server_interactions_part2b)

add_executable(fastmcpp_server_interactions_part3 tests/server/interactions_part3.cpp)
target_link_libraries(fastmcpp_server_interactions_part3 PRIVATE fastmcpp_core)
add_test(NAME fastmcpp_server_interactions_part3 COMMAND fastmcpp_server_interactions_part3)

add_executable(fastmcpp_server_context_meta tests/server/context_meta.cpp)
target_link_libraries(fastmcpp_server_context_meta PRIVATE fastmcpp_core)
Expand Down
Loading