From 6be9144dbe83c27732c55bd6ca14018ee1677e20 Mon Sep 17 00:00:00 2001 From: Vladislav Volosnikov Date: Mon, 20 Jan 2025 18:07:43 +0100 Subject: [PATCH 1/5] Fix coverage filtering --- .github/workflows/l1-contracts-ci.yaml | 63 +++++++++++++------------- 1 file changed, 31 insertions(+), 32 deletions(-) diff --git a/.github/workflows/l1-contracts-ci.yaml b/.github/workflows/l1-contracts-ci.yaml index 61809c77f..53a5f78bb 100644 --- a/.github/workflows/l1-contracts-ci.yaml +++ b/.github/workflows/l1-contracts-ci.yaml @@ -291,38 +291,37 @@ jobs: - name: Run coverage run: FOUNDRY_PROFILE=default yarn test:foundry && FOUNDRY_PROFILE=default yarn coverage:foundry --report summary --report lcov - # TODO: for some reason filtering directories stopped working. - # # To ignore coverage for certain directories modify the paths in this step as needed. The - # # below default ignores coverage results for the test and script directories. Alternatively, - # # to include coverage in all directories, comment out this step. Note that because this - # # filtering applies to the lcov file, the summary table generated in the previous step will - # # still include all files and directories. - # # The `--rc lcov_branch_coverage=1` part keeps branch info in the filtered report, since lcov - # # defaults to removing branch info. - # - name: Filter directories - # run: | - # sudo apt update && sudo apt install -y lcov - # lcov --remove lcov.info 'test/*' 'contracts/dev-contracts/*' '../lib/forge-std/*' '../lib/murky/*' 'lib/*' '../lib/*' 'lib/' 'deploy-scripts/*' --output-file lcov.info --rc lcov_branch_coverage=1 - - # # This step posts a detailed coverage report as a comment and deletes previous comments on - # # each push. The below step is used to fail coverage if the specified coverage threshold is - # # not met. The below step can post a comment (when it's `github-token` is specified) but it's - # # not as useful, and this action cannot fail CI based on a minimum coverage threshold, which - # # is why we use both in this way. - # - name: Post coverage report - # if: github.event_name == 'pull_request' # This action fails when ran outside of a pull request. - # uses: romeovs/lcov-reporter-action@v0.3.1 - # with: - # delete-old-comments: true - # lcov-file: ./l1-contracts/lcov.info - # github-token: ${{ secrets.GITHUB_TOKEN }} # Adds a coverage summary comment to the PR. - - # - name: Verify minimum coverage - # uses: zgosalvez/github-actions-report-lcov@v2 - # with: - # coverage-files: ./l1-contracts/lcov.info - # working-directory: l1-contracts - # minimum-coverage: 85 # Set coverage threshold. + # To ignore coverage for certain directories modify the paths in this step as needed. The + # below default ignores coverage results for the test and script directories. Alternatively, + # to include coverage in all directories, comment out this step. Note that because this + # filtering applies to the lcov file, the summary table generated in the previous step will + # still include all files and directories. + # The `--rc lcov_branch_coverage=1` part keeps branch info in the filtered report, since lcov + # defaults to removing branch info. + - name: Filter directories + run: | + sudo apt update && sudo apt install -y lcov + lcov --remove lcov.info 'test/*' 'contracts/dev-contracts/*' '../lib/murky/*' 'lib/*' '../lib/*' 'lib/' 'deploy-scripts/*' --output-file lcov.info --rc lcov_branch_coverage=1 + + # This step posts a detailed coverage report as a comment and deletes previous comments on + # each push. The below step is used to fail coverage if the specified coverage threshold is + # not met. The below step can post a comment (when it's `github-token` is specified) but it's + # not as useful, and this action cannot fail CI based on a minimum coverage threshold, which + # is why we use both in this way. + - name: Post coverage report + if: github.event_name == 'pull_request' # This action fails when ran outside of a pull request. + uses: romeovs/lcov-reporter-action@v0.3.1 + with: + delete-old-comments: true + lcov-file: ./l1-contracts/lcov.info + github-token: ${{ secrets.GITHUB_TOKEN }} # Adds a coverage summary comment to the PR. + + - name: Verify minimum coverage + uses: zgosalvez/github-actions-report-lcov@v2 + with: + coverage-files: ./l1-contracts/lcov.info + working-directory: l1-contracts + minimum-coverage: 85 # Set coverage threshold. # FIXME: restore gas report CI # gas-report: From e17c9b1aec8d16080066727757dd0d68d25ad5bb Mon Sep 17 00:00:00 2001 From: Vladislav Volosnikov Date: Mon, 20 Jan 2025 18:23:05 +0100 Subject: [PATCH 2/5] Fix lcov filtering Bump coverage deps Pin lcov version Add setup lcov action --- .github/workflows/l1-contracts-ci.yaml | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/.github/workflows/l1-contracts-ci.yaml b/.github/workflows/l1-contracts-ci.yaml index 53a5f78bb..d281e42c4 100644 --- a/.github/workflows/l1-contracts-ci.yaml +++ b/.github/workflows/l1-contracts-ci.yaml @@ -291,6 +291,11 @@ jobs: - name: Run coverage run: FOUNDRY_PROFILE=default yarn test:foundry && FOUNDRY_PROFILE=default yarn coverage:foundry --report summary --report lcov + - name: Setup LCOV + uses: hrishikesh-kadam/setup-lcov@v1 + with: + ref: v1.16 + # To ignore coverage for certain directories modify the paths in this step as needed. The # below default ignores coverage results for the test and script directories. Alternatively, # to include coverage in all directories, comment out this step. Note that because this @@ -300,8 +305,7 @@ jobs: # defaults to removing branch info. - name: Filter directories run: | - sudo apt update && sudo apt install -y lcov - lcov --remove lcov.info 'test/*' 'contracts/dev-contracts/*' '../lib/murky/*' 'lib/*' '../lib/*' 'lib/' 'deploy-scripts/*' --output-file lcov.info --rc lcov_branch_coverage=1 + lcov --ignore-errors unused --remove lcov.info 'test/*' 'contracts/dev-contracts/*' 'lib/*' '../lib/*' 'lib/' 'deploy-scripts/*' --output-file lcov.info --rc lcov_branch_coverage=1 # This step posts a detailed coverage report as a comment and deletes previous comments on # each push. The below step is used to fail coverage if the specified coverage threshold is @@ -310,14 +314,14 @@ jobs: # is why we use both in this way. - name: Post coverage report if: github.event_name == 'pull_request' # This action fails when ran outside of a pull request. - uses: romeovs/lcov-reporter-action@v0.3.1 + uses: romeovs/lcov-reporter-action@v0.4.0 with: delete-old-comments: true lcov-file: ./l1-contracts/lcov.info github-token: ${{ secrets.GITHUB_TOKEN }} # Adds a coverage summary comment to the PR. - name: Verify minimum coverage - uses: zgosalvez/github-actions-report-lcov@v2 + uses: zgosalvez/github-actions-report-lcov@v4 with: coverage-files: ./l1-contracts/lcov.info working-directory: l1-contracts From 7a64f663ff21918d75fc493271295ce5a5530ead Mon Sep 17 00:00:00 2001 From: Vladislav Volosnikov Date: Tue, 21 Jan 2025 11:21:56 +0100 Subject: [PATCH 3/5] Run prettier in workflows --- .github/workflows/l1-contracts-ci.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/l1-contracts-ci.yaml b/.github/workflows/l1-contracts-ci.yaml index d281e42c4..1763f96e0 100644 --- a/.github/workflows/l1-contracts-ci.yaml +++ b/.github/workflows/l1-contracts-ci.yaml @@ -327,6 +327,7 @@ jobs: working-directory: l1-contracts minimum-coverage: 85 # Set coverage threshold. + # FIXME: restore gas report CI # gas-report: # needs: [build, lint] From f9c339afb88604d4e17fe92b0cf10d505a877ec4 Mon Sep 17 00:00:00 2001 From: Vladislav Volosnikov Date: Tue, 21 Jan 2025 11:44:50 +0100 Subject: [PATCH 4/5] Lower coverage threshold --- .github/workflows/l1-contracts-ci.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/l1-contracts-ci.yaml b/.github/workflows/l1-contracts-ci.yaml index 1763f96e0..d2bc4de8c 100644 --- a/.github/workflows/l1-contracts-ci.yaml +++ b/.github/workflows/l1-contracts-ci.yaml @@ -325,7 +325,7 @@ jobs: with: coverage-files: ./l1-contracts/lcov.info working-directory: l1-contracts - minimum-coverage: 85 # Set coverage threshold. + minimum-coverage: 83 # Set coverage threshold. # FIXME: restore gas report CI From 2c1276716a8fa2916ba412656e1326af3b6cfa6e Mon Sep 17 00:00:00 2001 From: Vladislav Volosnikov Date: Tue, 21 Jan 2025 12:09:39 +0100 Subject: [PATCH 5/5] Add TODO --- .github/workflows/l1-contracts-ci.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/l1-contracts-ci.yaml b/.github/workflows/l1-contracts-ci.yaml index d2bc4de8c..b149b4f9d 100644 --- a/.github/workflows/l1-contracts-ci.yaml +++ b/.github/workflows/l1-contracts-ci.yaml @@ -325,7 +325,7 @@ jobs: with: coverage-files: ./l1-contracts/lcov.info working-directory: l1-contracts - minimum-coverage: 83 # Set coverage threshold. + minimum-coverage: 83 # TODO(EVM-944): increase threshold to 85 # FIXME: restore gas report CI