summaryrefslogtreecommitdiff
path: root/platform/ios/scripts/ios-code-coverage.sh
diff options
context:
space:
mode:
Diffstat (limited to 'platform/ios/scripts/ios-code-coverage.sh')
-rwxr-xr-xplatform/ios/scripts/ios-code-coverage.sh31
1 files changed, 31 insertions, 0 deletions
diff --git a/platform/ios/scripts/ios-code-coverage.sh b/platform/ios/scripts/ios-code-coverage.sh
new file mode 100755
index 0000000000..8b8adb423a
--- /dev/null
+++ b/platform/ios/scripts/ios-code-coverage.sh
@@ -0,0 +1,31 @@
+#!/usr/bin/env bash
+
+set -e
+set -o pipefail
+
+#
+# Get code coverage report, then convert it to JSON.
+# The coverage reports end up in different locations based on whether coverage
+# is generated via CI or locally.
+#
+cov_result="";
+if [ -f build/ios/Logs/Test/*.xcresult/*_Test/*.xccovreport ]; then
+ cov_result=build/ios/Logs/Test/*.xcresult/*_Test/*.xccovreport
+elif [ -f build/ios/ios/Logs/Test/*.xcresult/*_Test/*.xccovreport ]; then
+ cov_result=build/ios/ios/Logs/Test/*.xcresult/*_Test/*.xccovreport
+else
+ echo "Coverage file does not exist. Please run tests before executing"
+ exit 1
+fi
+
+xcrun xccov view $cov_result --json > output.json
+
+#
+# Convert the line coverage for the dynamic target to a percentage. Currently,
+# only CI tests are included when calculated code coverage.
+#
+percentage=`node -e "console.log(require('./output.json').lineCoverage)"`
+cov=$(printf "%.2f" $(echo "$percentage*100" | bc -l))
+
+# Generate a formatted JSON file and upload it to S3.
+./././scripts/code-coverage.sh $cov "iOS" "$1"