@@ -200,3 +200,64 @@ jobs:
200
200
- name : Build Documentation
201
201
run : |
202
202
sphinx-build -b html docs/source/ docs/build/html
203
+
204
+ test-python-c++-unified-report :
205
+ runs-on : ubuntu-latest
206
+ timeout-minutes : 20
207
+ steps :
208
+ # Step 1: Checkout Repository
209
+ - name : Checkout Repository
210
+ uses : actions/checkout@v4
211
+
212
+ # Step 2: Set up Python
213
+ - name : Set up Python
214
+ uses : actions/setup-python@v5
215
+ with :
216
+ python-version : " 3.11"
217
+
218
+ # Step 3: Install Python Dependencies
219
+ - name : Install Python Dependencies
220
+ run : |
221
+ python -m pip install --upgrade pip
222
+ python -m pip install pytest pytest-cov cobertura-merge
223
+
224
+ # Step 4: Run Python Tests and Generate Coverage
225
+ - name : Run Python Tests
226
+ run : |
227
+ pytest tests/ --cov=src --cov-report xml:coverage-python.xml --cov-report html:coverage-html
228
+
229
+ # Step 5: Install C++ Dependencies
230
+ - name : Install C++ Dependencies
231
+ run : |
232
+ sudo apt-get update
233
+ sudo apt-get install -y g++ gcov lcov
234
+
235
+ # Step 6: Compile and Run C++ Tests
236
+ - name : Compile and Run C++ Tests
237
+ run : |
238
+ g++ -o tests/test_cpp tests/test.cpp
239
+ ./tests/test_cpp
240
+ lcov --capture --directory . --output-file coverage-cpp.info
241
+
242
+ # Step 7: Convert C++ Coverage to XML (Using `gcovr`)
243
+ - name : Convert C++ Coverage to XML
244
+ run : |
245
+ python -m pip install gcovr
246
+ gcovr -r . --xml-pretty --output coverage-cpp.xml
247
+
248
+ # Step 8: Combine Coverage Reports
249
+ - name : Combine Coverage Reports
250
+ run : |
251
+ python -m cobertura_merge coverage-python.xml coverage-cpp.xml -o unified-reports/combined-coverage.xml
252
+
253
+ # Step 9: Generate HTML Report from Combined Coverage
254
+ - name : Generate HTML Report
255
+ run : |
256
+ python -m pip install coverage html-report
257
+ coverage html -i --data unified-reports/combined-coverage.xml --directory unified-reports/html
258
+
259
+ # Step 10: Upload Combined Coverage to Codecov
260
+ - name : Upload Combined Coverage to Codecov
261
+ run : bash <(curl -s https://codecov.io/bash) -f unified-reports/combined-coverage.xml
262
+ env :
263
+ CODECOV_TOKEN : ${{ secrets.CODECOV_TOKEN }}
0 commit comments