Skip to content

Commit 01b643e

Browse files
committed
ci: cover test for swift
1 parent 9a62c18 commit 01b643e

6 files changed

Lines changed: 64 additions & 7381 deletions

File tree

.github/workflows/ci.yml

Lines changed: 44 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -207,6 +207,11 @@ jobs:
207207

208208
- name: Install Rust
209209
uses: dtolnay/rust-toolchain@29eef336d9b2848a0b548edc03f92a220660cdb8
210+
with:
211+
components: llvm-tools-preview
212+
213+
- name: Install cargo-llvm-cov
214+
run: cargo install cargo-llvm-cov
210215

211216
- name: Cache Cargo dependencies
212217
uses: actions/cache@v4
@@ -220,7 +225,45 @@ jobs:
220225
${{ runner.os }}-cargo-swift-
221226
222227
- name: Build Rust, Generate Swift Bindings, and Verify swift build
223-
run: ./scripts/build_swift_bindings.sh --test
228+
run: ./scripts/build_swift_bindings.sh --coverage --test
229+
230+
- name: Export coverage to lcov
231+
run: |
232+
PROFDATA_VAR=$(cargo +stable llvm-cov show-env | grep LLVM_PROFDATA) || true
233+
PROFDATA_TOOL=$(echo "$PROFDATA_VAR" | cut -d= -f2- | tr -d '"' | tr -d "'" | xargs)
234+
if [ -z "$PROFDATA_TOOL" ] || [ ! -x "$PROFDATA_TOOL" ]; then
235+
export PATH="$(rustc --print=target-libdir)/../bin:$PATH"
236+
PROFDATA_TOOL=$(which llvm-profdata)
237+
fi
238+
if ls target/llvm-cov-target/*.profraw 2>/dev/null; then
239+
"$PROFDATA_TOOL" merge -sparse target/llvm-cov-target/*.profraw \
240+
-o target/llvm-cov-target/swift-cov.profdata
241+
llvm-cov export -format=lcov \
242+
--instr-profile target/llvm-cov-target/swift-cov.profdata \
243+
-object target/debug/libflowsdk_ffi.dylib \
244+
> lcov-swift.info
245+
else
246+
echo "No profraw files found; skipping lcov export."
247+
fi
248+
249+
- name: Upload coverage artifacts
250+
uses: actions/upload-artifact@v4
251+
if: always()
252+
with:
253+
name: swift-coverage-data
254+
path: |
255+
lcov-swift.info
256+
target/llvm-cov-target/swift-cov.profdata
257+
target/llvm-cov-target/*.profraw
258+
retention-days: 7
259+
260+
- name: Upload coverage to Codecov
261+
uses: codecov/codecov-action@v4
262+
with:
263+
files: lcov-swift.info
264+
fail_ci_if_error: false
265+
token: ${{ secrets.CODECOV_TOKEN }}
266+
verbose: true
224267

225268
coverage:
226269
name: Code Coverage

.gitignore

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,10 @@ swift/xcframework-intermediates/
1717
swift/FlowSDK.xcframework/
1818

1919

20-
# FFI generated code
20+
# FFI generated code (regenerated by scripts/build_*_bindings.sh; feature-dependent)
21+
swift/Sources/FlowSDK/flowsdk_ffi.swift
22+
swift/Sources/flowsdk_ffi/flowsdk_ffi.h
23+
kotlin/package/src/main/kotlin/uniffi/flowsdk_ffi/flowsdk_ffi.kt
2124
python/package/flowsdk/flowsdk_ffi.py
2225
python/package/flowsdk/libflowsdk_ffi.dylib
2326
python/package/flowsdk/libflowsdk_ffi.so

0 commit comments

Comments
 (0)