From b5afc2b8a61287c6545576d9aa859a887e9b2091 Mon Sep 17 00:00:00 2001 From: Dan Federman Date: Tue, 11 Oct 2022 15:45:58 -0400 Subject: [PATCH] Utilize codecov/codecov-action@v3 --- .github/workflows/ci.yml | 23 ++++++++++--------- Scripts/prepare-coverage-reports.sh | 35 +++++++++++++++++++++++++++++ Scripts/upload-coverage-reports.sh | 9 -------- codecov.yml | 4 ++++ 4 files changed, 51 insertions(+), 20 deletions(-) create mode 100755 Scripts/prepare-coverage-reports.sh delete mode 100755 Scripts/upload-coverage-reports.sh diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 881c9b8c..ebb382c0 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -12,7 +12,7 @@ jobs: runs-on: macOS-11 steps: - name: Checkout Repo - uses: actions/checkout@v2 + uses: actions/checkout@v3 - name: Bundle Install run: bundle install - name: Select Xcode Version @@ -24,7 +24,7 @@ jobs: runs-on: macOS-11 steps: - name: Checkout Repo - uses: actions/checkout@v2 + uses: actions/checkout@v3 - name: Bundle Install run: bundle install - name: Select Xcode Version @@ -45,7 +45,7 @@ jobs: fail-fast: false steps: - name: Checkout Repo - uses: actions/checkout@v2 + uses: actions/checkout@v3 - name: Bundle Install run: bundle install - name: Select Xcode Version @@ -54,9 +54,6 @@ jobs: run: Scripts/github/prepare-simulators.sh ${{ matrix.platforms }} - name: Build and Test Framework run: Scripts/build.swift ${{ matrix.platforms }} - - name: Upload Coverage Reports - if: success() - run: Scripts/upload-coverage-reports.sh ${{ matrix.platforms }} spm-12: name: Build Xcode 12 runs-on: macOS-11 @@ -69,7 +66,7 @@ jobs: fail-fast: false steps: - name: Checkout Repo - uses: actions/checkout@v2 + uses: actions/checkout@v3 - name: Bundle Install run: bundle install - name: Select Xcode Version @@ -78,9 +75,11 @@ jobs: run: Scripts/github/prepare-simulators.sh ${{ matrix.platforms }} - name: Build and Test Framework run: Scripts/build.swift ${{ matrix.platforms }} + - name: Prepare Coverage Reports + run: ./Scripts/prepare-coverage-reports.sh - name: Upload Coverage Reports if: success() - run: Scripts/upload-coverage-reports.sh ${{ matrix.platforms }} + uses: codecov/codecov-action@v3 spm-13: name: Build Xcode 13 runs-on: macOS-12 @@ -93,7 +92,7 @@ jobs: fail-fast: false steps: - name: Checkout Repo - uses: actions/checkout@v2 + uses: actions/checkout@v3 - name: Bundle Install run: bundle install - name: Select Xcode Version @@ -102,15 +101,17 @@ jobs: run: Scripts/github/prepare-simulators.sh ${{ matrix.platforms }} - name: Build and Test Framework run: Scripts/build.swift ${{ matrix.platforms }} + - name: Prepare Coverage Reports + run: ./Scripts/prepare-coverage-reports.sh - name: Upload Coverage Reports if: success() - run: Scripts/upload-coverage-reports.sh ${{ matrix.platforms }} + uses: codecov/codecov-action@v3 spm-13-swift: name: Swift Build Xcode 13 runs-on: macOS-12 steps: - name: Checkout Repo - uses: actions/checkout@v2 + uses: actions/checkout@v3 - name: Bundle Install run: bundle install - name: Select Xcode Version diff --git a/Scripts/prepare-coverage-reports.sh b/Scripts/prepare-coverage-reports.sh new file mode 100755 index 00000000..4cacb22a --- /dev/null +++ b/Scripts/prepare-coverage-reports.sh @@ -0,0 +1,35 @@ +#!/bin/zsh -l +set -e + +function exportlcov() { + build_type=$1 + executable_name=$2 + + executable=$(find "${directory}" -type f -name $executable_name) + profile=$(find "${directory}" -type f -name 'Coverage.profdata') + output_file_name="$executable_name.lcov" + + can_proceed=true + if [[ $build_type == watchOS* ]]; then + echo "\tAborting creation of $output_file_name – watchOS not supported." + elif [[ -z $profile ]]; then + echo "\tAborting creation of $output_file_name – no profile found." + elif [[ -z $executable ]]; then + echo "\tAborting creation of $output_file_name – no executable found." + else + output_dir=".build/artifacts/$build_type" + mkdir -p $output_dir + + output_file="$output_dir/$output_file_name" + echo "\tExporting $output_file" + xcrun llvm-cov export -format="lcov" $executable -instr-profile $profile > $output_file + fi +} + +for directory in $(git rev-parse --show-toplevel)/.build/derivedData/*/; do + build_type=$(basename $directory) + echo "Finding coverage information for $build_type" + + exportlcov $build_type 'CacheAdvanceTests' + exportlcov $build_type 'CADCacheAdvanceTests' +done diff --git a/Scripts/upload-coverage-reports.sh b/Scripts/upload-coverage-reports.sh deleted file mode 100755 index f2d55ef3..00000000 --- a/Scripts/upload-coverage-reports.sh +++ /dev/null @@ -1,9 +0,0 @@ -#!/bin/bash -l -set -ex - -IFS=','; PLATFORMS=$(echo $1); unset IFS - -for PLATFORM in $PLATFORMS; do - bash <(curl -s https://codecov.io/bash) -J '^CacheAdvance(.framework)?$' -D .build/derivedData/$PLATFORM -t 8344b011-6b2a-4b3d-a573-eaf49684318e - bash <(curl -s https://codecov.io/bash) -J '^CADCacheAdvance(.framework)?$' -D .build/derivedData/$PLATFORM -t 8344b011-6b2a-4b3d-a573-eaf49684318e -done diff --git a/codecov.yml b/codecov.yml index a8e8790a..c2156a58 100644 --- a/codecov.yml +++ b/codecov.yml @@ -5,3 +5,7 @@ comment: layout: "reach,diff,flags,tree" behavior: default require_changes: no + +ignore: + - "Sources/LorumIpsum" + - "Tests"