🚨 fix formatter warning #171
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Tests | |
env: | |
FOUNDRY_PROFILE: "ci" | |
# This CI workflow is responsible of running the tests. | |
on: | |
workflow_dispatch: | |
pull_request: | |
push: | |
branches: | |
- main | |
jobs: | |
test: | |
runs-on: ubuntu-latest | |
permissions: write-all | |
steps: | |
- name: Check out the repo | |
uses: actions/checkout@v3 | |
with: | |
submodules: recursive | |
- name: Install Foundry | |
uses: foundry-rs/foundry-toolchain@v1 | |
- name: Show the Foundry config | |
run: forge config | |
- name: Generate a fuzz seed that changes weekly to avoid burning through RPC allowance | |
run: > | |
echo "FOUNDRY_FUZZ_SEED=$( | |
echo $(($EPOCHSECONDS - $EPOCHSECONDS % 604800)) | |
)" >> $GITHUB_ENV | |
# required to install our private package from Github Packages | |
- name: Authenticate with GitHub Packages | |
run: echo "//npm.pkg.github.com/:_authToken=${{ secrets.GITHUB_TOKEN }}" > ~/.npmrc | |
# needed because the precomputation scripts used by the ffi tests is a JS dependency | |
- name: Install the Node.js dependencies | |
run: npm ci | |
# TODO: Rework the job to correctly print the output of the test command | |
- name: Run tests with gas reporting | |
run: forge test --gas-report > gasreport.ansi | |
env: | |
# make fuzzing semi-deterministic to avoid noisy gas cost estimation | |
# due to non-deterministic fuzzing (but still use pseudo-random fuzzing seeds) | |
FOUNDRY_FUZZ_SEED: 0x${{ github.event.pull_request.base.sha || github.sha }} | |
- name: Compare gas reports | |
uses: Rubilmax/foundry-gas-diff@v3.14 | |
with: | |
summaryQuantile: 0.8 # only display the 20% most significant gas diffs in the summary | |
sortCriteria: avg,max # sort diff rows by criteria | |
sortOrders: desc,asc # and directions | |
id: gas_diff | |
- name: Add gas diff to sticky comment | |
if: github.event_name == 'pull_request' || github.event_name == 'pull_request_target' | |
uses: marocchino/sticky-pull-request-comment@v2 | |
with: | |
# delete the comment in case changes no longer impact gas costs | |
delete: ${{ !steps.gas_diff.outputs.markdown }} | |
message: ${{ steps.gas_diff.outputs.markdown }} | |
coverage: | |
needs: ["test"] | |
permissions: write-all | |
runs-on: "ubuntu-latest" | |
steps: | |
- name: "Check out the repo" | |
uses: "actions/checkout@v3" | |
with: | |
submodules: "recursive" | |
- name: "Install Foundry" | |
uses: "foundry-rs/foundry-toolchain@v1" | |
# required to install our private package from Github Packages | |
- name: Authenticate with GitHub Packages | |
run: echo "//npm.pkg.github.com/:_authToken=${{ secrets.GITHUB_TOKEN }}" > ~/.npmrc | |
# needed because the precomputation scripts used by the ffi tests is a JS dependency | |
- name: Install the Node.js dependencies | |
run: npm ci | |
- name: Setup lcov | |
uses: hrishikesh-kadam/setup-lcov@v1 | |
- name: "Generate the coverage report" | |
# contracts in the test/ and script/ directory are excluded fron the report | |
# the precompute internal version of the library is also excluded from the report as | |
# it is highly experimental and to meant to be used at all | |
run: "forge coverage --report lcov && lcov --remove lcov.info \ | |
-o lcov.info 'test/*' 'script/*' 'src/ECDSA256PrecomputeInternal.sol'" | |
- name: "Add coverage summary" | |
run: | | |
echo "## Coverage result" >> $GITHUB_STEP_SUMMARY | |
echo "✅ Passed" >> $GITHUB_STEP_SUMMARY | |
- name: Report code coverage | |
uses: zgosalvez/github-actions-report-lcov@v3 | |
with: | |
coverage-files: lcov.info | |
minimum-coverage: 80 | |
artifact-name: code-coverage-report | |
github-token: ${{ secrets.GITHUB_TOKEN }} | |
update-comment: true |