Skip to content

Commit

Permalink
Collect and upload code coverage when executing unit tests
Browse files Browse the repository at this point in the history
  • Loading branch information
atodorov committed Apr 5, 2024
1 parent 74973b8 commit 704a5e9
Show file tree
Hide file tree
Showing 2 changed files with 63 additions and 3 deletions.
65 changes: 62 additions & 3 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,8 @@ jobs:
RUSTFLAGS="-D warnings" cargo check --release
unit-test:
permissions:
pull-requests: write
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4
Expand All @@ -93,13 +95,70 @@ jobs:
uses: actions-rs/toolchain@v1
with:
toolchain: ${{ env.RUSTC_VERSION }}
components: llvm-tools-preview
profile: minimal
override: true
- uses: Swatinem/rust-cache@v2

- name: Run cargo test
uses: actions-rs/cargo@v1
- name: Install cargo-llvm-cov
uses: taiki-e/install-action@v2.27.14
with:
tool: cargo-llvm-cov

- name: Execute tests
id: coverage
env:
CRUNCH_CONFIG_FILENAME: environments/cc3/testnet/.env
run: |
PR_NUMBER=$(echo "$GITHUB_REF" | sed "s|refs/pull/||" | sed "s|/merge||")
DESTINATION_PATH="crunch/PR-$PR_NUMBER"
export DESTINATION_PATH
echo "**For full LLVM coverage report [click here](https://staticsitellvmhtml.z13.web.core.windows.net/$DESTINATION_PATH/html/)!**" > uncovered-lines.log
cargo llvm-cov --workspace --html --show-missing-lines \
--hide-instantiations --ignore-filename-regex "(tests.rs|mock.rs)"
UNCOVERED_LINES=$(sed "s|$(pwd)|.|" uncovered-lines.log)
# workaround the fact that GitHub Actions doesn't support multi-line output
# https://trstringer.com/github-actions-multiline-strings/
UNCOVERED_LINES="${UNCOVERED_LINES//'%'/'%25'}"
UNCOVERED_LINES="${UNCOVERED_LINES//$'\n'/'%0A'}"
UNCOVERED_LINES="${UNCOVERED_LINES//$'\r'/'%0D'}"
echo "uncovered_lines=$UNCOVERED_LINES" >> "$GITHUB_OUTPUT"
- name: Azure login
if: env.GITHUB_TOKEN
env:
GITHUB_TOKEN: ${{ secrets.CREDITCOIN_GITHUB_API_TOKEN }}
uses: azure/login@v1
with:
creds: ${{ secrets.AZURE_CREDENTIALS }}
allow-no-subscriptions: true

- name: Upload coverage report to Azure Storage
if: env.GITHUB_TOKEN
env:
GITHUB_TOKEN: ${{ secrets.CREDITCOIN_GITHUB_API_TOKEN }}
run: |
AZURE_STORAGE_KEY=${{ secrets.LLVM_AZURE_STORAGE_KEY }}
export AZURE_STORAGE_KEY
PR_NUMBER=$(echo "$GITHUB_REF" | sed "s|refs/pull/||" | sed "s|/merge||")
DESTINATION_PATH="crunch/PR-$PR_NUMBER"
export DESTINATION_PATH
az storage blob upload-batch --account-name staticsitellvmhtml --auth-mode key -d "\$web" --destination-path "$DESTINATION_PATH" --overwrite -s ./target/llvm-cov
- name: Post comment to PR
if: env.GITHUB_TOKEN
uses: mshick/add-pr-comment@v2
env:
GITHUB_TOKEN: ${{ secrets.CREDITCOIN_GITHUB_API_TOKEN }}
with:
message: ${{ steps.coverage.outputs.uncovered_lines }}
allow-repeats: false

- name: Upload coverage report as artifact
uses: actions/upload-artifact@v4
with:
command: test
name: coverage-report
path: target/llvm-cov/html/
1 change: 1 addition & 0 deletions .lycheeignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
staticsitellvmhtml.z13.web.core.windows.net

0 comments on commit 704a5e9

Please sign in to comment.