2525 os : ubuntu-latest
2626 - name : macOS
2727 os : macos-latest
28+ - name : Windows
29+ os : windows-latest
2830 steps :
2931 - uses : actions/checkout@v5
3032
@@ -34,16 +36,20 @@ jobs:
3436 rustflags : " "
3537
3638 - name : Cargo tests
39+ working-directory : rust
3740 run : cargo test
3841
3942 - name : Cargo tests (RP and JEM)
43+ if : runner.os != 'Windows'
44+ working-directory : rust
4045 run : |
4146 cargo test --features rp
4247 cargo test --features jem
4348
4449 python_tests :
4550 name : Python tests (${{ matrix.name }})
46- needs : rust_tests
51+ needs :
52+ - rust_tests
4753 runs-on : ${{ matrix.os }}
4854 timeout-minutes : 45
4955 strategy :
5662 - name : macOS
5763 os : macos-latest
5864 skip_rpi_test : 1
65+ - name : Windows
66+ os : windows-latest
67+ skip_rpi_test : 1
5968 env :
6069 DO_DOCKER : 0
6170 SKIP_RPI_TEST : ${{ matrix.skip_rpi_test }}
7281 with :
7382 python-version : " 3.12"
7483 cache : " pip"
75- cache-dependency-path : open-codegen/setup.py
84+ cache-dependency-path : python/pyproject.toml
7685
7786 - uses : egor-tensin/setup-clang@v1
7887 if : runner.os == 'Linux'
@@ -102,6 +111,69 @@ jobs:
102111 if : runner.os == 'macOS'
103112 run : bash ./ci/script.sh python-tests
104113
114+ - name : Install Python package
115+ if : runner.os == 'Windows'
116+ run : |
117+ Set-Location python
118+ python -m pip install --upgrade pip
119+ python -m pip install .
120+
121+ - name : Run Python test.py
122+ if : runner.os == 'Windows'
123+ run : |
124+ Set-Location python
125+ $env:PYTHONPATH = "."
126+ python -W ignore test/test.py -v
127+
128+ ros2_tests :
129+ name : ROS2 tests
130+ needs : python_tests
131+ runs-on : ubuntu-latest
132+ timeout-minutes : 45
133+ container :
134+ image : ubuntu:noble
135+ options : --user 0
136+ env :
137+ DO_DOCKER : 0
138+ steps :
139+ - uses : actions/checkout@v5
140+
141+ - name : Install container bootstrap dependencies
142+ run : |
143+ apt-get update
144+ DEBIAN_FRONTEND=noninteractive apt-get install -y \
145+ build-essential \
146+ cmake \
147+ curl \
148+ ca-certificates \
149+ git \
150+ gnupg2 \
151+ locales \
152+ lsb-release
153+
154+ - uses : actions-rust-lang/setup-rust-toolchain@v1
155+ with :
156+ toolchain : stable
157+ rustflags : " "
158+
159+ - uses : actions/setup-python@v6
160+ with :
161+ python-version : " 3.12"
162+
163+ - name : Setup ROS 2
164+ # `ros-tooling/setup-ros@v0.7` still runs as a Node.js 20 action.
165+ # Force it onto Node 24 now so CI keeps working as GitHub deprecates
166+ # Node 20, and upgrade `setup-ros` to a Node 24-compatible release
167+ # when one becomes available.
168+ env :
169+ FORCE_JAVASCRIPT_ACTIONS_TO_NODE24 : true
170+ uses : ros-tooling/setup-ros@v0.7
171+ with :
172+ required-ros-distributions : jazzy
173+
174+ - name : Run ROS2 Python tests
175+ run : bash ./ci/script.sh ros2-tests
176+
105177 ocp_tests :
106178 name : OCP tests (${{ matrix.name }})
107179 needs : python_tests
@@ -115,6 +187,8 @@ jobs:
115187 os : ubuntu-latest
116188 - name : macOS
117189 os : macos-latest
190+ - name : Windows
191+ os : windows-latest
118192 env :
119193 DO_DOCKER : 0
120194 steps :
@@ -129,7 +203,22 @@ jobs:
129203 with :
130204 python-version : " 3.12"
131205 cache : " pip"
132- cache-dependency-path : open-codegen/setup.py
206+ cache-dependency-path : python/pyproject.toml
133207
134208 - name : Run OCP Python tests
209+ if : runner.os != 'Windows'
135210 run : bash ./ci/script.sh ocp-tests
211+
212+ - name : Install Python package
213+ if : runner.os == 'Windows'
214+ run : |
215+ Set-Location python
216+ python -m pip install --upgrade pip
217+ python -m pip install .
218+
219+ - name : Run OCP Python tests
220+ if : runner.os == 'Windows'
221+ run : |
222+ Set-Location python
223+ $env:PYTHONPATH = "."
224+ python -W ignore test/test_ocp.py -v
0 commit comments