Skip to content

Commit a26621d

Browse files
committed
fix: ci
1 parent bf80365 commit a26621d

File tree

4 files changed

+245
-124
lines changed

4 files changed

+245
-124
lines changed

.github/workflows/ci.yml

Lines changed: 34 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -18,28 +18,32 @@ jobs:
1818
- name: Install dependencies
1919
run: |
2020
sudo apt-get update
21-
sudo apt-get install -y xvfb libsdl2-dev
21+
sudo apt-get install -y xvfb libsdl2-dev x11-xserver-utils xdotool
2222
2323
- name: Configure
2424
run: |
2525
mkdir build
2626
cd build
27-
cmake ..
27+
cmake .. -DCMAKE_BUILD_TYPE=Release -DBUILD_HEADLESS_TESTS=ON
2828
2929
- name: Build
3030
run: |
3131
cd build
32-
cmake --build .
32+
cmake --build . --config Release
3333
3434
- name: Run unit tests
3535
run: |
36-
cd build
37-
./tests/RobotCPPTest
36+
cd build/bin
37+
./RobotCPPTest
3838
39-
- name: Run functional tests with Xvfb
39+
- name: Run SDL tests with Xvfb
4040
run: |
41-
cd build
42-
xvfb-run --auto-servernum --server-args='-screen 0 1280x720x24' ./tests/RobotCPPSDLTest --headless --run-tests
41+
cd build/bin
42+
Xvfb :99 -screen 0 1280x720x24 &
43+
export DISPLAY=:99
44+
sleep 2 # Wait for Xvfb to start
45+
xset -display :99 s off -dpms # Disable screen saver
46+
./RobotCPPSDLTest --ci-mode --run-tests
4347
4448
test-macos:
4549
runs-on: macos-latest
@@ -57,18 +61,24 @@ jobs:
5761
run: |
5862
mkdir build
5963
cd build
60-
cmake ..
64+
cmake .. -DCMAKE_BUILD_TYPE=Release -DBUILD_HEADLESS_TESTS=ON
6165
6266
- name: Build
6367
run: |
6468
cd build
65-
cmake --build .
69+
cmake --build . --config Release
6670
67-
- name: Run tests
71+
- name: Run unit tests
6872
run: |
69-
cd build
70-
./tests/RobotCPPTest
71-
./tests/RobotCPPSDLTest --headless --run-tests
73+
cd build/bin
74+
./RobotCPPTest
75+
76+
- name: Run SDL tests in CI mode
77+
run: |
78+
cd build/bin
79+
# macOS needs special handling for mouse automation in headless mode
80+
# We'll use the CI mode flag we're adding to the test application
81+
./RobotCPPSDLTest --ci-mode --run-tests
7282
7383
test-windows:
7484
runs-on: windows-latest
@@ -92,17 +102,22 @@ jobs:
92102
run: |
93103
mkdir build
94104
cd build
95-
cmake .. -DCMAKE_TOOLCHAIN_FILE=$env:VCPKG_INSTALLATION_ROOT/scripts/buildsystems/vcpkg.cmake
105+
cmake .. -DCMAKE_TOOLCHAIN_FILE=$env:VCPKG_INSTALLATION_ROOT/scripts/buildsystems/vcpkg.cmake -DCMAKE_BUILD_TYPE=Release -DBUILD_HEADLESS_TESTS=ON
96106
97107
- name: Build
98108
shell: powershell
99109
run: |
100110
cd build
101111
cmake --build . --config Release
102112
103-
- name: Run tests
113+
- name: Run unit tests
114+
shell: powershell
115+
run: |
116+
cd build\bin\Release
117+
.\RobotCPPTest.exe
118+
119+
- name: Run SDL tests in CI mode
104120
shell: powershell
105121
run: |
106-
cd build/tests/Release
107-
./RobotCPPTest.exe
108-
./RobotCPPSDLTest.exe --headless --run-tests
122+
cd build\bin\Release
123+
.\RobotCPPSDLTest.exe --ci-mode --run-tests

CMakeLists.txt

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,9 @@ project(RobotCPP)
55
set(CMAKE_CXX_STANDARD 23)
66
set(LIB_NAME RobotCPP)
77

8+
# Add option for headless tests
9+
option(BUILD_HEADLESS_TESTS "Configure tests to run in headless/CI environments" OFF)
10+
811
# Add GoogleTest
912
add_subdirectory(externals/googletest)
1013
enable_testing()
@@ -38,9 +41,19 @@ elseif (WIN32)
3841
list(APPEND PLATFORM_SOURCES src/EventHookWindows.h)
3942
endif ()
4043

44+
# If building headless tests, define a preprocessor flag
45+
if (BUILD_HEADLESS_TESTS)
46+
add_compile_definitions(ROBOT_HEADLESS_TESTS)
47+
endif()
48+
4149
add_library(${LIB_NAME} STATIC ${COMMON_SOURCES} ${PLATFORM_SOURCES} ${SOURCES_LODEPNG})
4250
target_include_directories(${LIB_NAME} PUBLIC src PRIVATE externals/lodepng)
4351
target_link_libraries(${LIB_NAME} ${PLATFORM_LIBRARIES})
4452

53+
# Set output directory for all targets
54+
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
55+
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG ${CMAKE_BINARY_DIR}/bin)
56+
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE ${CMAKE_BINARY_DIR}/bin)
57+
4558
# Add the tests directory
4659
add_subdirectory(tests)

0 commit comments

Comments
 (0)