Skip to content

App: next release #1105

App: next release

App: next release #1105

name: Contracts Tests
# This workflow:
# - Runs the Foundry tests
# - Checks for console imports in the contracts
# - Runs the Hardhat tests
# - Generates a coverage report (currently disabled)
defaults:
run:
working-directory: contracts
env:
FOUNDRY_PROFILE: ci
FOUNDRY_VERSION: nightly
CI: true
FORCE_COLOR: true
MAINNET_RPC_URL: ${{ secrets.MAINNET_RPC_URL }}
on:
push:
branches: [main, dev]
paths:
- ".github/workflows/contracts-tests.yml"
- "contracts/**"
pull_request:
paths:
- ".github/workflows/contracts-tests.yml"
- "contracts/**"
jobs:
test-foundry:
name: Foundry tests
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
submodules: recursive
- name: Install Foundry
uses: foundry-rs/foundry-toolchain@v1
with:
version: ${{ env.FOUNDRY_VERSION }}
- name: Run Forge build
run: |
forge --version
forge build --sizes --skip test --skip scripts
- name: Run Forge tests local
run: |
forge test -vvv --no-match-contract Mainnet
- name: Run Forge tests mainnet
run: |
forge test -vvv --match-contract Mainnet
console-logs:
name: Console imports check
runs-on: ubuntu-latest
steps:
- name: Git checkout
uses: actions/checkout@v4
with:
submodules: recursive
- name: Check console imports
working-directory: contracts
run: >-
! grep -R console src | grep import | grep -v "://" | grep -v TestContracts | grep -v "/test/" | grep -v ExternalContracts | grep -v "\.t\.sol" | grep -v "\.s\.sol"
test-hardhat:
if: false
name: Hardhat tests
runs-on: ubuntu-latest
steps:
- name: Git checkout
uses: actions/checkout@v4
with:
submodules: recursive
- name: Install pnpm
uses: pnpm/[email protected]
with:
version: 8
- name: Install Node.js
uses: actions/setup-node@v4
with:
node-version-file: ".node-version"
cache: "pnpm"
cache-dependency-path: "pnpm-lock.yaml"
- name: Install dependencies
run: pnpm install --frozen-lockfile
- name: Install Foundry
uses: foundry-rs/foundry-toolchain@v1
with:
version: ${{ env.FOUNDRY_VERSION }}
- name: Test contracts
run: pnpm test
env:
NODE_OPTIONS: --max-old-space-size=4096
coverage:
name: Coverage
runs-on: ubuntu-latest
continue-on-error: true
steps:
- name: Git checkout
uses: actions/checkout@v4
with:
submodules: recursive
# Foundry
- name: Install Foundry
uses: foundry-rs/foundry-toolchain@v1
with:
version: ${{ env.FOUNDRY_VERSION }}
- name: Run Forge build
run: |
forge --version
forge build
- name: Run Forge coverage
run: |
forge coverage --report lcov --report-file lcov_foundry.info
- name: Install lcov
run: sudo apt-get -y install lcov
# Hardhat
# - name: Install pnpm
# uses: pnpm/[email protected]
# with:
# version: 8
# - name: Install Node.js
# uses: actions/setup-node@v4
# with:
# node-version-file: ".node-version"
# cache: "pnpm"
# cache-dependency-path: "pnpm-lock.yaml"
# - name: Install dependencies
# run: pnpm install --frozen-lockfile
# - name: harhdat coverage
# run: pnpm coverage
# continue-on-error: true
# timeout-minutes: 30
# env:
# NODE_OPTIONS: --max-old-space-size=8192
# Merge
# - name: Remove path from contract names in Hardhat
# run: |
# sed -i "s/SF:.*src/SF:src/g" coverage/lcov.info
# - name: Merge coverage reports
# run: |
# lcov \
# --rc lcov_branch_coverage=1 \
# --add-tracefile lcov_foundry.info \
# --add-tracefile coverage/lcov.info \
# --output-file lcov_merged.info
# Instead of merge
- name: Rename coverage file
run: mv lcov_foundry.info lcov_merged.info
# Filter
- name: Filter out from coverage
run:
lcov --remove lcov_merged.info -o lcov_merged.info
'test/*'
'script/*'
'src/Interfaces/*'
'src/NFTMetadata/*'
'src/Types/*'
'src/MultiTroveGetter.sol'
# Send to coveralls
- name: Coveralls
uses: coverallsapp/github-action@master
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
base-path: ./contracts/
path-to-lcov: ./contracts/lcov_merged.info
debug: true