@@ -195,6 +195,32 @@ commands:
195195 when : on_fail
196196 command : |
197197 curl -X POST -H 'Content-type: application/json' --data '{"text": ":x: '"$SLACK_MENTION_SLUG"' <'"$CIRCLE_BUILD_URL"' | '"$CIRCLE_JOB"'> job from snapshot pipeline failed.", "link_names" : 1}' $SLACK_WEBHOOK
198+
199+ generate-coverage-report :
200+ parameters :
201+ module_name :
202+ type : string
203+ steps :
204+ - run :
205+ name : Install lcov
206+ command : brew install lcov
207+ - run :
208+ name : Generate code coverage report
209+ command : |
210+ xcrun llvm-cov export -arch $(uname -m) -format="lcov" \
211+ -instr-profile=$(find "${HOME}/Library/Developer/Xcode/DerivedData" -name '*.profdata' | head -n 1) \
212+ $(find "${HOME}/Library/Developer/Xcode/DerivedData" \( -iname "<<parameters.module_name>>.o" -o -ipath "*<<parameters.module_name>>.framework/<<parameters.module_name>>" \)) > coverage.lcov
213+ - run :
214+ name : Generate html report
215+ command : |
216+ lcov --extract coverage.lcov '*/<<parameters.module_name>>/*' -o filtered_coverage.lcov
217+ genhtml filtered_coverage.lcov --output-directory coverage
218+ - store_artifacts :
219+ path : coverage
220+ destination : coverage-report
221+ - store_test_results :
222+ path : test-results
223+ when : always
198224
199225
200226step-library :
@@ -406,7 +432,7 @@ jobs:
406432 xcode : << parameters.xcode >>
407433 - run :
408434 name : MapboxCoreNavigation
409- command : xcodebuild -sdk iphonesimulator -destination 'platform=iOS Simulator,OS=<< parameters.iOS >>,name=<< parameters.device >>' -project MapboxNavigation.xcodeproj -scheme << parameters.scheme >> -configuration << parameters.configuration >> <<# parameters.clean_build >>clean build <</ parameters.clean_build >><<# parameters.test >>test <</ parameters.test >> <<# parameters.codecoverage >>-enableCodeCoverage YES<</ parameters.codecoverage >> ENABLE_TESTABILITY=YES CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED="NO"
435+ command : xcodebuild -sdk iphonesimulator -destination 'platform=iOS Simulator,OS=<< parameters.iOS >>,name=<< parameters.device >>' -project MapboxNavigation.xcodeproj -scheme << parameters.scheme >> -configuration << parameters.configuration >> <<# parameters.clean_build >>clean build <</ parameters.clean_build >><<# parameters.test >>test <</ parameters.test >> ENABLE_TESTABILITY=YES CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED="NO" <<# parameters.codecoverage >>-enableCodeCoverage YES | xcpretty --report junit --output test-results/junit.xml <</ parameters.codecoverage >>
410436 - when :
411437 condition : << parameters.spm >>
412438 steps :
@@ -418,25 +444,13 @@ jobs:
418444 command : xcodebuild -resolvePackageDependencies
419445 - run :
420446 name : MapboxNavigation-Package
421- command : xcodebuild -sdk iphonesimulator -destination 'platform=iOS Simulator,OS=<< parameters.iOS >>,name=<< parameters.device >>' -scheme MapboxNavigation-Package -configuration << parameters.configuration >> build <<# parameters.test >>test <</ parameters.test >> <<# parameters.codecoverage >>-enableCodeCoverage YES<</ parameters.codecoverage >> ENABLE_TESTABILITY=YES CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED="NO"
447+ command : xcodebuild -sdk iphonesimulator -destination 'platform=iOS Simulator,OS=<< parameters.iOS >>,name=<< parameters.device >>' -scheme MapboxNavigation-Package -configuration << parameters.configuration >> build <<# parameters.test >>test <</ parameters.test >> ENABLE_TESTABILITY=YES CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED="NO" <<# parameters.codecoverage >>-enableCodeCoverage YES | xcpretty --report junit --output test-results/junit.xml <</ parameters.codecoverage >>
422448 # FIXME: SPM test host is currently disabled, but we should run tests on the SPM test host job. When it is reenabled, delete this section that generates the code coverage report.
423449 - when :
424450 condition : << parameters.codecoverage >>
425451 steps :
426- - run :
427- name : Generate code coverage report
428- command : |
429- xcrun llvm-cov export -arch $(uname -m) -format="lcov" \
430- -instr-profile=$(find "${HOME}/Library/Developer/Xcode/DerivedData" -name '*.profdata' | head -n 1) \
431- $(find "${HOME}/Library/Developer/Xcode/DerivedData" -name "MapboxNavigation.o") > coverage.lcov
432- - run :
433- name : Send code coverage
434- command : |
435- curl -Os https://uploader.codecov.io/latest/macos/codecov
436- chmod +x codecov
437- ./codecov
438- - store_artifacts :
439- path : coverage.lcov
452+ - generate-coverage-report :
453+ module_name : << parameters.scheme >>
440454 - notify-build-finished
441455
442456 build-example :
@@ -537,24 +551,12 @@ jobs:
537551 - *add-github-to-known-hosts
538552 - run :
539553 name : Build test host application and execute tests
540- command : xcodebuild -project MapboxNavigation-SPM.xcodeproj -scheme MapboxNavigationTestHost -sdk iphonesimulator -configuration Release -destination "platform=iOS Simulator,OS=<< parameters.iOS >>,name=<< parameters.device >>" clean build test <<# parameters.codecoverage >>-enableCodeCoverage YES<</ parameters.codecoverage >> ENABLE_TESTABILITY=YES
554+ command : xcodebuild -project MapboxNavigation-SPM.xcodeproj -scheme MapboxNavigationTestHost -sdk iphonesimulator -configuration Release -destination "platform=iOS Simulator,OS=<< parameters.iOS >>,name=<< parameters.device >>" clean build test ENABLE_TESTABILITY=YES <<# parameters.codecoverage >>-enableCodeCoverage YES | xcpretty --report junit --output test-results/junit.xml <</ parameters.codecoverage >>
541555 - when :
542556 condition : << parameters.codecoverage >>
543557 steps :
544- - run :
545- name : Generate code coverage report
546- command : |
547- xcrun llvm-cov export -arch $(uname -m) -format="lcov" \
548- -instr-profile=$(find "${HOME}/Library/Developer/Xcode/DerivedData" -name '*.profdata' | head -n 1) \
549- $(find build -name "MapboxNavigation.o") > coverage.lcov
550- - run :
551- name : Send code coverage
552- command : |
553- curl -Os https://uploader.codecov.io/latest/macos/codecov
554- chmod +x codecov
555- ./codecov
556- - store_artifacts :
557- path : coverage.lcov
558+ - generate-coverage-report :
559+ module_name : MapboxNavigation
558560 - notify-build-finished
559561
560562 get-api-log-job :
@@ -864,7 +866,7 @@ workflows:
864866 xcode : " 14.3.1"
865867 iOS : " 16.4"
866868 device : " iPhone 14 Pro Max"
867- codecoverage : false
869+ codecoverage : true
868870 context : Slack Orb
869871 - build-job :
870872 name : " Xcode_15.2_iOS_17.2_SPM_Debug"
@@ -874,6 +876,7 @@ workflows:
874876 spm : true
875877 codecoverage : true
876878 context : Slack Orb
879+ scheme : " MapboxNavigation"
877880 - build-job :
878881 name : " Xcode_14.1_iOS_16.1_SPM_Debug"
879882 xcode : " 14.1"
@@ -882,6 +885,7 @@ workflows:
882885 spm : true
883886 codecoverage : true
884887 context : Slack Orb
888+ scheme : " MapboxNavigation"
885889 - build-job :
886890 name : " Xcode_14.1.0_iOS_16.1_Release"
887891 xcode : " 14.1.0"
0 commit comments