Skip to content

Fix harddat tests main #677

Fix harddat tests main

Fix harddat tests main #677

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:
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 test/AccessControlTest.js
env:
NODE_OPTIONS: --max-old-space-size=12288
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 --no-match-contract Invariant --report lcov --report-file lcov_foundry.info
- name: Install lcov
run: sudo apt-get -y install lcov
#- name: Filter out tests from coverage
# run: |
# lcov --remove lcov_foundry.info -o lcov_foundry.info 'src/test/*'
# 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: ls
run: |
ls && ls coverage
- 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
# Filter
- name: Filter out tests from coverage
run: |
lcov --remove lcov_merged.info -o lcov_merged.info \
'src/test/*' \
'src/TestContracts/*' \
'src/OldTestContracts/*' \
'src/Dependencies/*' \
'src/Interfaces/*' \
'src/Types/*' \
'src/scripts/*' \
'src/MultiTroveGetter.sol' \
'src/deployment.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