Bump @types/node from 22.10.2 to 22.10.3 #999
Workflow file for this run
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: 🕵️♂️ Test CreateX | |
on: [push, pull_request, workflow_dispatch] | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref }} | |
cancel-in-progress: true | |
jobs: | |
tests: | |
runs-on: ${{ matrix.os }} | |
permissions: | |
contents: read | |
security-events: write | |
strategy: | |
matrix: | |
os: | |
- ubuntu-latest | |
node_version: | |
- 22 | |
go_version: | |
- 1.23 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
- name: Install pnpm | |
uses: pnpm/action-setup@v3 | |
with: | |
version: latest | |
run_install: false | |
- name: Get pnpm cache directory path | |
id: pnpm-cache-dir-path | |
run: echo "dir=$(pnpm store path --silent)" >> $GITHUB_OUTPUT | |
- name: Restore pnpm cache | |
uses: actions/cache@v4 | |
id: pnpm-cache | |
with: | |
path: ${{ steps.pnpm-cache-dir-path.outputs.dir }} | |
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }} | |
restore-keys: | | |
${{ runner.os }}-pnpm-store- | |
- name: Use Node.js ${{ matrix.node_version }} | |
uses: actions/setup-node@v4 | |
with: | |
node-version: ${{ matrix.node_version }} | |
- name: Install pnpm project with a clean slate | |
run: pnpm install --prefer-offline --frozen-lockfile | |
- name: Install Foundry | |
uses: foundry-rs/foundry-toolchain@v1 | |
with: | |
version: nightly | |
- name: Show the Foundry CI config | |
run: forge config | |
env: | |
FOUNDRY_PROFILE: ci | |
- name: Ensure Solidity version consistency | |
run: | | |
version_foundry=$(forge config --json | jq -r ".solc") | |
version_hh=$(npx hardhat solc) | |
if [[ $version_foundry != "0.8.23" ]] || [[ $version_foundry != $version_hh ]]; then exit 1; fi | |
- name: Ensure `paris` as EVM version | |
run: | | |
version_foundry=$(forge config --json | jq -r ".evm_version") | |
version_hh=$(npx hardhat evm) | |
if [[ $version_foundry != "paris" ]] || [[ $version_foundry != $version_hh ]]; then exit 1; fi | |
- name: Set up Go | |
uses: actions/setup-go@v5 | |
with: | |
go-version: ${{ matrix.go_version }} | |
cache: False | |
- name: Install `jd` CLI | |
run: go install github.com/josephburnett/jd@latest | |
- name: Ensure correctness of the `ICreateX` interface | |
run: | | |
pnpm abi | |
diff=$(jd -set abis/src/CreateX.sol/CreateX.json abis/src/ICreateX.sol/ICreateX.json) | |
if [[ -n $diff ]]; then exit 1; fi | |
- name: Foundry tests | |
run: pnpm test | |
env: | |
FOUNDRY_PROFILE: ci | |
- name: Show the Foundry default config | |
run: forge config | |
env: | |
FOUNDRY_PROFILE: default | |
- name: Run snapshot | |
run: NO_COLOR=1 forge snapshot >> $GITHUB_STEP_SUMMARY | |
env: | |
FOUNDRY_PROFILE: default | |
- name: Slither static analyser | |
uses: crytic/[email protected] | |
id: slither | |
with: | |
fail-on: config | |
sarif: results.sarif | |
- name: Upload SARIF file | |
uses: github/codeql-action/upload-sarif@v3 | |
with: | |
sarif_file: ${{ steps.slither.outputs.sarif }} | |
coverage: | |
runs-on: ${{ matrix.os }} | |
permissions: | |
pull-requests: write | |
strategy: | |
matrix: | |
os: | |
- ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
- name: Install Foundry | |
uses: foundry-rs/foundry-toolchain@v1 | |
with: | |
version: nightly | |
- name: Show the Foundry default config | |
run: forge config | |
env: | |
FOUNDRY_PROFILE: default | |
- name: Set up LCOV | |
uses: hrishikesh-kadam/setup-lcov@v1 | |
with: | |
ref: v2.2 | |
- name: Run coverage | |
run: NO_COLOR=1 forge coverage --report summary --report lcov --lcov-version 2.2 >> $GITHUB_STEP_SUMMARY | |
env: | |
FOUNDRY_PROFILE: default | |
# See https://github.com/ScopeLift/foundry-template/blob/fd3875d2e99a65dec19431723d6516b4ed76746e/.github/workflows/ci.yml#L49-L78. | |
- name: Remove unnecessary `test` directory | |
run: lcov --branch-coverage --remove lcov.info 'test/*' --output-file lcov.info --ignore-errors inconsistent,inconsistent | |
- name: Post coverage report | |
# See https://github.com/orgs/community/discussions/26829#discussioncomment-3253575. | |
if: ${{ (github.event.pull_request.head.repo.full_name == github.repository && github.event_name == 'pull_request') }} | |
uses: romeovs/[email protected] | |
with: | |
title: "`CreateX` Test Coverage Report" | |
delete-old-comments: true | |
lcov-file: ./lcov.info | |
github-token: ${{ secrets.GITHUB_TOKEN }} | |
# The following steps act as a temporary workaround, as LCOV `2.2` is not yet supported | |
# in `zgosalvez/github-actions-report-lcov@v4`: https://github.com/zgosalvez/github-actions-report-lcov/issues/168. | |
- name: Set up LCOV `1.16` | |
run: | | |
wget https://github.com/linux-test-project/lcov/releases/download/v1.16/lcov-1.16.tar.gz | |
tar -xzf lcov-1.16.tar.gz | |
cd lcov-1.16 | |
sudo make install | |
lcov --version | |
sudo rm -rf lcov-1.16.tar.gz lcov-1.16 | |
- name: Run coverage using LCOV `1.16` | |
run: forge coverage --report lcov --lcov-version 1.16 | |
env: | |
FOUNDRY_PROFILE: default | |
# See https://github.com/ScopeLift/foundry-template/blob/fd3875d2e99a65dec19431723d6516b4ed76746e/.github/workflows/ci.yml#L49-L78. | |
- name: Remove unnecessary `test` directory | |
run: lcov --remove lcov.info 'test/*' --output-file lcov.info --rc lcov_branch_coverage=1 | |
- name: Verify minimum coverage | |
uses: zgosalvez/github-actions-report-lcov@v4 | |
with: | |
coverage-files: ./lcov.info | |
minimum-coverage: 100 |