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

Add coverage to our test workflow #1152

Merged
merged 12 commits into from
Sep 20, 2024
71 changes: 45 additions & 26 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
@@ -1,38 +1,57 @@
name: Lint and test
# This workflow runs linting and tests on all pull requests and pushes to the main branch.
# It includes Markdown linting, Cairo formatting checks, running tests with coverage,
# and uploading the coverage report to Codecov.

on:
pull_request:
push:
branches:
- main
- main

jobs:
lint_and_test:
name: Lint and test
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Extract scarb version
run: |
SCARB_VERSION=$(grep 'scarb-version = ' Scarb.toml | sed 's/scarb-version = "\(.*\)"/\1/')
echo "SCARB_VERSION=$SCARB_VERSION" >> "$GITHUB_ENV"
- uses: software-mansion/setup-scarb@v1
with:
scarb-version: ${{ env.SCARB_VERSION }}
- name: Extract foundry version
run: |
FOUNDRY_VERSION=$(grep 'snforge_std = ' Scarb.toml | sed 's/snforge_std = "\(.*\)"/\1/')
echo "FOUNDRY_VERSION=$FOUNDRY_VERSION" >> "$GITHUB_ENV"
- uses: foundry-rs/setup-snfoundry@v3
with:
starknet-foundry-version: ${{ env.FOUNDRY_VERSION }}
- name: Markdown lint
uses: DavidAnson/markdownlint-cli2-action@db43aef879112c3119a410d69f66701e0d530809 # v16
with:
globs: |
*.md
!PULL_REQUEST_TEMPLATE.md
- name: Cairo lint
run: scarb fmt --check --workspace
- name: Cairo test
run: snforge test --workspace
- uses: actions/checkout@v4

- name: Extract scarb version
run: |
SCARB_VERSION=$(grep 'scarb-version = ' Scarb.toml | sed 's/scarb-version = "\(.*\)"/\1/')
echo "SCARB_VERSION=$SCARB_VERSION" >> "$GITHUB_ENV"

- uses: software-mansion/setup-scarb@v1
with:
scarb-version: ${{ env.SCARB_VERSION }}

- name: Extract foundry version
run: |
FOUNDRY_VERSION=$(grep 'snforge_std = ' Scarb.toml | sed 's/snforge_std = "\(.*\)"/\1/')
echo "FOUNDRY_VERSION=$FOUNDRY_VERSION" >> "$GITHUB_ENV"

- uses: foundry-rs/setup-snfoundry@v3
with:
starknet-foundry-version: ${{ env.FOUNDRY_VERSION }}

- name: Install cairo-coverage
run: curl -L https://raw.githubusercontent.com/software-mansion/cairo-coverage/main/scripts/install.sh | sh

- name: Markdown lint
uses: DavidAnson/markdownlint-cli2-action@db43aef879112c3119a410d69f66701e0d530809 # v16
with:
globs: |
*.md
!PULL_REQUEST_TEMPLATE.md

- name: Cairo lint
run: scarb fmt --check --workspace

- name: Run tests and generate coverage report
run: snforge test --workspace --coverage

- name: Upload coverage to Codecov
uses: codecov/codecov-action@v4
with:
file: ./coverage.lcov
token: ${{ secrets.CODECOV_TOKEN }}
5 changes: 5 additions & 0 deletions Scarb.toml
Original file line number Diff line number Diff line change
Expand Up @@ -74,3 +74,8 @@ sort-module-level-items = true

[tool]
fmt.workspace = true

[profile.dev.cairo]
unstable-add-statements-functions-debug-info = true
unstable-add-statements-code-locations-debug-info = true
inlining-strategy= "avoid"
29 changes: 29 additions & 0 deletions codecov.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
comment:
layout: "diff, files, header, footer"
behavior: default

coverage:
# The value range where you want the value to be green
# Hold ourselves to a high bar.
range: 90..100
status:
project:
coverage:
# Use the coverage from the base commit (pull request base) coverage to compare against.
# Once we have a baseline we can be more strict.
target: auto
threshold: 2%
patch:
default:
# Require new code to have 90%+ coverage.
target: 90%
threshold: 2%

ignore:
- "**/tests/**"
- "docs/"
- "scripts/"
ggonzalez94 marked this conversation as resolved.
Show resolved Hide resolved

github_checks:
annotations: false