From 5b50f17184b3c60c94fbf7da9114c029ddd99010 Mon Sep 17 00:00:00 2001 From: Le Cong Date: Tue, 29 Apr 2025 18:47:46 -0400 Subject: [PATCH 1/7] fix coverage folder handling conflict --- .github/workflows/coverage.yml | 8 ++++---- package-lock.json | 4 ++-- package.json | 2 +- src/coverage-reporter/coverage-reporter.ts | 21 ++++++++++++++------- 4 files changed, 21 insertions(+), 14 deletions(-) diff --git a/.github/workflows/coverage.yml b/.github/workflows/coverage.yml index 5085f3f..80e7479 100644 --- a/.github/workflows/coverage.yml +++ b/.github/workflows/coverage.yml @@ -27,13 +27,13 @@ jobs: NPM_TOKEN: ${{ secrets.NPM_TOKEN_PUBLISH }} - name: Create Coverage Report for base branch run: | - mv coverage/lcov.info coverage/lcov_head.info + mv coverage coverage-pr git fetch git checkout origin/${{ github.event.pull_request.base.ref }} npm ci --ignore-scripts && npm run ci:coverage - name: Post Coverage Report - uses: checkdigit/github-actions/coverage-reporter@main + uses: checkdigit/github-actions/coverage-reporter@coverage-folder-handling-conflict with: - lcov-file: 'coverage/lcov_head.info' - lcov-base: 'coverage/lcov.info' + coverage-results-folder-pr: 'coverage_pr' + coverage-results-folder-base: 'coverage' delete-old-comments: true diff --git a/package-lock.json b/package-lock.json index c207b19..61d508f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@checkdigit/github-actions", - "version": "2.2.0", + "version": "2.3.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@checkdigit/github-actions", - "version": "2.2.0", + "version": "2.3.0", "license": "MIT", "dependencies": { "@actions/core": "^1.10.1", diff --git a/package.json b/package.json index 6fde5b6..341b3ba 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@checkdigit/github-actions", - "version": "2.2.0", + "version": "2.3.0", "description": " Provides supporting operations for github action builds.", "author": "Check Digit, LLC", "license": "MIT", diff --git a/src/coverage-reporter/coverage-reporter.ts b/src/coverage-reporter/coverage-reporter.ts index a7054e4..b925bd1 100644 --- a/src/coverage-reporter/coverage-reporter.ts +++ b/src/coverage-reporter/coverage-reporter.ts @@ -22,6 +22,9 @@ import { normalizePath } from './util'; const MAX_COMMENT_CHARS = 65_536; const log = debug('github-actions:coverage-reporter'); +const DEFAULT_COVERAGE_RESULTS_FOLDER = 'coverage'; +const LCOV_FILE_NAME = 'lcov.info'; + export default async function (): Promise { try { log('Action start'); @@ -29,24 +32,28 @@ export default async function (): Promise { const token = getInput('github-token'); const githubClient = getOctokit(token); const workingDirectory = getInput('working-directory') || './'; - const lcovFile = path.join(workingDirectory, getInput('lcov-file') || './coverage/lcov.info'); - const baseFile = getInput('lcov-base'); + const prLcovFile = path.join( + workingDirectory, + getInput('coverage-results-folder-pr') ?? DEFAULT_COVERAGE_RESULTS_FOLDER, + LCOV_FILE_NAME, + ); + const baseLcovFile = path.join(workingDirectory, getInput('coverage-results-folder-base'), LCOV_FILE_NAME); const shouldFilterChangedFiles = getInput('filter-changed-files').toLowerCase() === 'true'; const shouldDeleteOldComments = getInput('delete-old-comments').toLowerCase() === 'true'; const title = getInput('title'); - const raw = await fs.readFile(lcovFile, 'utf8').catch(() => null); + const raw = await fs.readFile(prLcovFile, 'utf8').catch(() => null); if (raw === null || raw === '') { // eslint-disable-next-line no-console - console.log(`No coverage report found at '${lcovFile}', exiting...`); + console.log(`No coverage report found at '${prLcovFile}', exiting...`); return; } // eslint-disable-next-line @typescript-eslint/no-non-null-assertion - const baseRaw = baseFile && (await fs.readFile(baseFile, 'utf8').catch(() => null))!; - if (baseFile && !baseRaw) { + const baseRaw = baseLcovFile && (await fs.readFile(baseLcovFile, 'utf8').catch(() => null))!; + if (baseLcovFile && !baseRaw) { // eslint-disable-next-line no-console - console.log(`No coverage report found at '${baseFile}', ignoring...`); + console.log(`No coverage report found at '${baseLcovFile}', ignoring...`); } const options = { From 9d625d20ddc7a8152fab50bd829e42f6dfe069ac Mon Sep 17 00:00:00 2001 From: Le Cong Date: Tue, 29 Apr 2025 19:00:49 -0400 Subject: [PATCH 2/7] lint --- src/coverage-reporter/coverage-reporter.ts | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/src/coverage-reporter/coverage-reporter.ts b/src/coverage-reporter/coverage-reporter.ts index b925bd1..ffe88c3 100644 --- a/src/coverage-reporter/coverage-reporter.ts +++ b/src/coverage-reporter/coverage-reporter.ts @@ -22,7 +22,6 @@ import { normalizePath } from './util'; const MAX_COMMENT_CHARS = 65_536; const log = debug('github-actions:coverage-reporter'); -const DEFAULT_COVERAGE_RESULTS_FOLDER = 'coverage'; const LCOV_FILE_NAME = 'lcov.info'; export default async function (): Promise { @@ -32,11 +31,7 @@ export default async function (): Promise { const token = getInput('github-token'); const githubClient = getOctokit(token); const workingDirectory = getInput('working-directory') || './'; - const prLcovFile = path.join( - workingDirectory, - getInput('coverage-results-folder-pr') ?? DEFAULT_COVERAGE_RESULTS_FOLDER, - LCOV_FILE_NAME, - ); + const prLcovFile = path.join(workingDirectory, getInput('coverage-results-folder-pr'), LCOV_FILE_NAME); const baseLcovFile = path.join(workingDirectory, getInput('coverage-results-folder-base'), LCOV_FILE_NAME); const shouldFilterChangedFiles = getInput('filter-changed-files').toLowerCase() === 'true'; const shouldDeleteOldComments = getInput('delete-old-comments').toLowerCase() === 'true'; From e8b0c0f3f43ba467f3916bc1450f5bd4c6d70bce Mon Sep 17 00:00:00 2001 From: Le Cong Date: Tue, 29 Apr 2025 19:06:44 -0400 Subject: [PATCH 3/7] fix npm 404 --- .github/workflows/coverage.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/coverage.yml b/.github/workflows/coverage.yml index 80e7479..7cb4f1f 100644 --- a/.github/workflows/coverage.yml +++ b/.github/workflows/coverage.yml @@ -31,6 +31,8 @@ jobs: git fetch git checkout origin/${{ github.event.pull_request.base.ref }} npm ci --ignore-scripts && npm run ci:coverage + env: + NPM_TOKEN: ${{ secrets.NPM_TOKEN_PUBLISH }} - name: Post Coverage Report uses: checkdigit/github-actions/coverage-reporter@coverage-folder-handling-conflict with: From 0aa0cfb53cc6bc27967d860316c62eae328056eb Mon Sep 17 00:00:00 2001 From: Le Cong Date: Tue, 29 Apr 2025 19:17:28 -0400 Subject: [PATCH 4/7] fix param --- .github/workflows/coverage.yml | 2 +- src/validate-npm-package/validate-npm-package.spec.ts | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/coverage.yml b/.github/workflows/coverage.yml index 7cb4f1f..3b983b6 100644 --- a/.github/workflows/coverage.yml +++ b/.github/workflows/coverage.yml @@ -36,6 +36,6 @@ jobs: - name: Post Coverage Report uses: checkdigit/github-actions/coverage-reporter@coverage-folder-handling-conflict with: - coverage-results-folder-pr: 'coverage_pr' + coverage-results-folder-pr: 'coverage-pr' coverage-results-folder-base: 'coverage' delete-old-comments: true diff --git a/src/validate-npm-package/validate-npm-package.spec.ts b/src/validate-npm-package/validate-npm-package.spec.ts index 3171784..069cbc6 100644 --- a/src/validate-npm-package/validate-npm-package.spec.ts +++ b/src/validate-npm-package/validate-npm-package.spec.ts @@ -7,7 +7,8 @@ import core from '@actions/core'; import verifyNpmPackage from './validate-npm-package'; -describe('validate-npm-package', () => { +// eslint-disable-next-line jest/no-disabled-tests +describe.skip('validate-npm-package', () => { const actionsCoreSpy = jest.spyOn(core, 'getInput'); afterEach(() => { From 12ae87535ec5c5292187438e6c87f14104479c92 Mon Sep 17 00:00:00 2001 From: Le Cong Date: Tue, 29 Apr 2025 19:24:44 -0400 Subject: [PATCH 5/7] test removal of coverage folder --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 341b3ba..a62850b 100644 --- a/package.json +++ b/package.json @@ -46,7 +46,7 @@ "test": "npm run ci:compile && npm run ci:test && npm run ci:lint && npm run ci:style", "ci:compile": "tsc --noEmit", "ci:test": "NODE_OPTIONS=\"--disable-warning ExperimentalWarning --experimental-vm-modules\" jest --coverage=false", - "ci:coverage": "NODE_OPTIONS=\"--disable-warning ExperimentalWarning --experimental-vm-modules\" jest --coverage=true", + "ci:coverage": "rimraf coverage && mkdir coverage && NODE_OPTIONS=\"--disable-warning ExperimentalWarning --experimental-vm-modules\" jest --coverage=true", "ci:lint": "npm run lint", "ci:style": "npm run prettier" }, From da0f66075ac2224c3958900f1c5e88b877b1180b Mon Sep 17 00:00:00 2001 From: Le Cong Date: Tue, 29 Apr 2025 19:34:53 -0400 Subject: [PATCH 6/7] recover skipped slow test --- src/validate-npm-package/validate-npm-package.spec.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/validate-npm-package/validate-npm-package.spec.ts b/src/validate-npm-package/validate-npm-package.spec.ts index 069cbc6..3171784 100644 --- a/src/validate-npm-package/validate-npm-package.spec.ts +++ b/src/validate-npm-package/validate-npm-package.spec.ts @@ -7,8 +7,7 @@ import core from '@actions/core'; import verifyNpmPackage from './validate-npm-package'; -// eslint-disable-next-line jest/no-disabled-tests -describe.skip('validate-npm-package', () => { +describe('validate-npm-package', () => { const actionsCoreSpy = jest.spyOn(core, 'getInput'); afterEach(() => { From 6d0ea5bb66ebe9e7e7d6e0405dc827e02078a55b Mon Sep 17 00:00:00 2001 From: Le Cong Date: Tue, 29 Apr 2025 19:49:26 -0400 Subject: [PATCH 7/7] update input parameters for coverage results in action.yml --- coverage-reporter/action.yml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/coverage-reporter/action.yml b/coverage-reporter/action.yml index e2387f6..f1a5790 100644 --- a/coverage-reporter/action.yml +++ b/coverage-reporter/action.yml @@ -5,12 +5,12 @@ inputs: description: Github token required: true default: ${{ github.token }} - lcov-file: - description: The location of the lcov.info file - required: false - lcov-base: - description: The location of the lcov file for the base branch - required: false + coverage-results-folder-pr: + description: The test coverage results folder of PR branch + required: true + coverage-results-folder-base: + description: The test coverage results folder of main branch + required: true filter-changed-files: description: Set to true to only comment with coverage on files changed in this commit required: false