Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

635 remove unnecessary files from coverage #637

Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
64 changes: 58 additions & 6 deletions .github/workflows/coverage-check.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,25 +22,77 @@ jobs:
uses: onbjerg/foundry-toolchain@v1
with:
version: nightly

- name: Install dependencies
run: sudo apt-get install lcov

- name: Get development branch coverage
id: coverage-development
run: |
cd packages/contracts
cd ./packages/contracts

COVERAGE_DEVELOPMENT_OUTPUT=$(forge coverage)
echo COVERAGE=$(echo "${COVERAGE_DEVELOPMENT_OUTPUT}" | tail -n 1 | awk '{print $4}' | tr -d '%') >> $GITHUB_OUTPUT
# generates lcov.info
forge coverage --report lcov

# Foundry uses relative paths but Hardhat uses absolute paths.
# Convert absolute paths to relative paths for consistency.
sed -i -e 's/\/.*solidity.//g' lcov.info

# Merge lcov files
lcov \
--rc lcov_branch_coverage=1 \
--add-tracefile lcov.info \
--output-file merged-lcov.info

# Filter out node_modules, test, and mock files
lcov \
--rc lcov_branch_coverage=1 \
--remove merged-lcov.info \
--output-file filtered-lcov.info \
"*node_modules*" "*test*" "*mock*" "*scripts*"


# Generate summary
COVERAGE_DEVELOPMENT_OUTPUT=$(lcov \
--rc lcov_branch_coverage=1 \
--list filtered-lcov.info)

echo COVERAGE=$(echo "${COVERAGE_DEVELOPMENT_OUTPUT}" | tail -n 1 | cut -d % -f 1 | cut -d \| -f 2) >> $GITHUB_OUTPUT

- name: Checkout code in PR branch
uses: actions/checkout@v3

- name: Get PR branch coverage
id: coverage-pr
run: |
cd packages/contracts
cd ./packages/contracts

# generates lcov.info
forge coverage --report lcov

# Foundry uses relative paths but Hardhat uses absolute paths.
# Convert absolute paths to relative paths for consistency.
sed -i -e 's/\/.*solidity.//g' lcov.info

# Merge lcov files
lcov \
--rc lcov_branch_coverage=1 \
--add-tracefile lcov.info \
--output-file merged-lcov.info

# Filter out node_modules, test, and mock files
lcov \
--rc lcov_branch_coverage=1 \
--remove merged-lcov.info \
--output-file filtered-lcov.info \
"*node_modules*" "*test*" "*mock*" "*scripts*"


COVERAGE_PR_OUTPUT=$(forge coverage)
echo COVERAGE=$(echo "${COVERAGE_PR_OUTPUT}" | tail -n 1 | awk '{print $4}' | tr -d '%') >> $GITHUB_OUTPUT
# Generate summary
COVERAGE_DEVELOPMENT_OUTPUT=$(lcov \
--rc lcov_branch_coverage=1 \
--list filtered-lcov.info)
echo COVERAGE=$(echo "${COVERAGE_DEVELOPMENT_OUTPUT}" | tail -n 1 | cut -d % -f 1 | cut -d \| -f 2) >> $GITHUB_OUTPUT

- name: Print coverages
run: |
Expand Down
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -64,3 +64,4 @@ out
packages/contracts/broadcast/*
packages/dapp/types/
.vscode/
/packages/contracts/*.info
1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@
"build:dapp": "yarn workspace @ubiquity/dapp run build",
"dev:dapp": "yarn workspace @ubiquity/dapp run start",
"test:all": "yarn workspace @ubiquity/contracts run test:unit",
"coverage": "yarn workspace @ubiquity/contracts run test:coverage",
eugenioclrc marked this conversation as resolved.
Show resolved Hide resolved
"purge:all": "yarn workspaces foreach run purge && rimraf node_modules",
"prettier:all": "prettier packages/ --write",
"lint:all": "yarn workspaces foreach run lint",
Expand Down
39 changes: 39 additions & 0 deletions packages/contracts/coverage.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
#!/bin/bash

set -e # exit on error

# generates lcov.info
forge coverage --report lcov

# Foundry uses relative paths but Hardhat uses absolute paths.
# Convert absolute paths to relative paths for consistency.
sed -i -e 's/\/.*solidity.//g' lcov.info

# Merge lcov files
lcov \
--rc lcov_branch_coverage=1 \
--add-tracefile lcov.info \
--output-file merged-lcov.info

# Filter out node_modules, test, and mock files
lcov \
--rc lcov_branch_coverage=1 \
--remove merged-lcov.info \
--output-file filtered-lcov.info \
"*node_modules*" "*test*" "*mock*" "*scripts*"


# Generate summary
lcov \
--rc lcov_branch_coverage=1 \
--list filtered-lcov.info

# Open more granular breakdown in browser
if [ $HTML_REPORT ]
then
genhtml \
--rc genhtml_branch_coverage=1 \
--output-directory coverage \
filtered-lcov.info
open coverage/index.html
fi
1 change: 1 addition & 0 deletions packages/contracts/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@
"test:unit": "forge test",
"test:slither": "slither . --compile-force-framework foundry",
"test:echidna": "echidna-test . --config echidna.config.yml",
"test:coverage": "sh ./coverage.sh",
"start:anvil": "tsx ./scripts/anvil/anvil.ts",
"prebuild": "run-p clean",
"deploy": "tsx ./scripts/deploy/deploy.ts",
Expand Down