name: Contracts on: push: paths: - 'contracts/**' - '.github/workflows/contracts.yaml' pull_request: paths: - 'contracts/**' - '.github/workflows/contracts.yaml' defaults: run: working-directory: 'contracts' jobs: foundry: runs-on: ubuntu-latest steps: - name: Checkout sources uses: actions/checkout@v3 with: submodules: recursive - name: Install Foundry uses: foundry-rs/foundry-toolchain@v1 with: version: nightly - name: Setup LCOV uses: hrishikesh-kadam/setup-lcov@v1 - name: Install Node.js 14 uses: actions/setup-node@v2 with: node-version: '14' - name: Get yarn cache directory path id: yarn-cache-dir-path run: echo "::set-output name=dir::$(yarn cache dir)" - name: Cache yarn dependencies uses: actions/cache@v2 id: yarn-cache # use this to check for `cache-hit` (`steps.yarn-cache.outputs.cache-hit != 'true'`) with: path: ${{ steps.yarn-cache-dir-path.outputs.dir }} key: ${{ runner.os }}-yarn-${{ hashFiles('contracts/yarn.lock') }} restore-keys: | ${{ runner.os }}-yarn- - name: Cache node_modules id: npm_cache uses: actions/cache@v2 with: path: node_modules key: node_modules-${{ hashFiles('contracts/yarn.lock') }} - name: yarn install # if: steps.npm_cache.outputs.cache-hit != 'true' run: yarn install - name: Compile with foundry run: forge build - name: Run foundry tests run: forge test -vvv - name: Run foundry coverage run : forge coverage --report lcov - name : Prune coverage run : lcov --remove ./lcov.info -o ./lcov.info.pruned 'src/mocks/*' 'src/test/*' 'scripts/*' 'node_modules/*' 'lib/*' - name: Report code coverage uses: zgosalvez/github-actions-report-lcov@v3 with: coverage-files: contracts/lcov.info.pruned minimum-coverage: 0 artifact-name: code-coverage-report github-token: ${{ secrets.GITHUB_TOKEN }} working-directory: contracts update-comment: true hardhat: runs-on: ubuntu-latest steps: - name: Checkout sources uses: actions/checkout@v3 with: submodules: recursive - name: Install Node.js 14 uses: actions/setup-node@v2 with: node-version: '14' - name: Get yarn cache directory path id: yarn-cache-dir-path run: echo "::set-output name=dir::$(yarn cache dir)" - name: Cache yarn dependencies uses: actions/cache@v2 id: yarn-cache # use this to check for `cache-hit` (`steps.yarn-cache.outputs.cache-hit != 'true'`) with: path: ${{ steps.yarn-cache-dir-path.outputs.dir }} key: ${{ runner.os }}-yarn-${{ hashFiles('contracts/yarn.lock') }} restore-keys: | ${{ runner.os }}-yarn- - name: Cache node_modules id: npm_cache uses: actions/cache@v2 with: path: node_modules key: node_modules-${{ hashFiles('contracts/yarn.lock') }} - name: yarn install # if: steps.npm_cache.outputs.cache-hit != 'true' run: yarn install - name: Compile with hardhat run: npx hardhat compile - name: Run hardhat tests run: npx hardhat test