From 2640e4c8bf1ef522aea0d9fa997c4f07ee95ba97 Mon Sep 17 00:00:00 2001 From: Cooper Date: Wed, 5 Apr 2023 11:23:02 -0400 Subject: [PATCH] fix(action): fix bug with value, add tests --- src/action.js | 13 ++++++------- src/action.test.js | 39 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 45 insertions(+), 7 deletions(-) diff --git a/src/action.js b/src/action.js index e40d6c7..1505de1 100644 --- a/src/action.js +++ b/src/action.js @@ -1,6 +1,6 @@ import { existsSync } from 'fs' import { resolve } from 'path' -import { getInput, setFailed } from '@actions/core' +import { getInput, setFailed, setOutput } from '@actions/core' import { context as eventContext, getOctokit } from '@actions/github' import lint from '@commitlint/lint' import { format } from '@commitlint/format' @@ -16,7 +16,7 @@ const { GITHUB_EVENT_NAME, GITHUB_SHA } = process.env const configPath = resolve(process.env.GITHUB_WORKSPACE, getInput('configFile')) -const failOnErrors = resolve(process.env.GITHUB_WORKSPACE, getInput('failOnErrors', { required: false })) +const failOnErrors = getInput('failOnErrors') const getCommitDepth = () => { const commitDepthString = getInput('commitDepth') @@ -147,12 +147,12 @@ const showLintResults = async ([from, to]) => { if (hasOnlyWarnings(lintedCommits)) { handleOnlyWarnings(formattedResults) - } else if (formattedResults && (failOnErrors == false)) { - // https://github.com/actions/toolkit/tree/master/packages/core#exit-codes + } else if (formattedResults && failOnErrors === 'false') { + // https://github.com/actions/toolkit/tree/master/packages/core#exit-codes // this would be a good place to implement the setNeutral() when it's eventually implimented. - // for now it can pass with a check mark. + // for now it can pass with a check mark. console.log('Passing despite errors ✅') - console.log(`You have commit messages with errors\n\n${formattedResults}`) + setOutput(`You have commit messages with errors\n\n${formattedResults}`) } else if (formattedResults) { setFailedAction(formattedResults) } else { @@ -164,7 +164,6 @@ const exitWithMessage = (message) => (error) => { setFailedAction(`${message}\n${error.message}\n${error.stack}`) } - const commitLinterAction = () => getRangeForEvent() .catch( diff --git a/src/action.test.js b/src/action.test.js index 7aef83b..9ac8a9b 100644 --- a/src/action.test.js +++ b/src/action.test.js @@ -110,10 +110,49 @@ describe('Commit Linter action', () => { await runAction() + console.log() td.verify(core.setFailed(contains('wrong message 1'))) td.verify(core.setFailed(contains('wrong message 2'))) }) + it('should pass for push range with wrong messages with failOnErrors set to false', async () => { + td.when(core.getInput('failOnErrors')).thenReturn('false') + cwd = await git.bootstrap('fixtures/conventional') + await gitEmptyCommit(cwd, 'message from before push') + await gitEmptyCommit(cwd, 'wrong message 1') + await gitEmptyCommit(cwd, 'wrong message 2') + const [before, , to] = await getCommitHashes(cwd) + await createPushEventPayload(cwd, { before, to }) + updatePushEnvVars(cwd, to) + td.replace(process, 'cwd', () => cwd) + td.replace(console, 'log') + + await runAction() + + td.verify(core.setFailed(), { times: 0, ignoreExtraArgs: true }) + td.verify(console.log(contains('Passing despite errors ✅'))) + td.verify(core.setOutput(contains('wrong message 1'))) + td.verify(core.setOutput(contains('wrong message 2'))) + }) + + it('should pass for push range with correct messages with failOnErrors set to false', async () => { + td.when(core.getInput('failOnErrors')).thenReturn('false') + cwd = await git.bootstrap('fixtures/conventional') + await gitEmptyCommit(cwd, 'message from before push') + await gitEmptyCommit(cwd, 'chore: correct message 1') + await gitEmptyCommit(cwd, 'chore: correct message 2') + const [before, , to] = await getCommitHashes(cwd) + await createPushEventPayload(cwd, { before, to }) + updatePushEnvVars(cwd, to) + td.replace(process, 'cwd', () => cwd) + td.replace(console, 'log') + + await runAction() + + td.verify(core.setFailed(), { times: 0, ignoreExtraArgs: true }) + td.verify(console.log('Lint free! 🎉')) + }) + it('should pass for push range with correct messages', async () => { cwd = await git.bootstrap('fixtures/conventional') await gitEmptyCommit(cwd, 'message from before push')