mirror of
https://github.com/wagoid/commitlint-github-action.git
synced 2026-03-31 14:56:58 +00:00
feat: adds commitDepth as new input param
This commit is contained in:
parent
861b4d9f10
commit
b0982e3b0a
3 changed files with 59 additions and 2 deletions
|
|
@ -16,6 +16,13 @@ const { GITHUB_EVENT_NAME, GITHUB_SHA } = process.env
|
|||
|
||||
const configPath = resolve(process.env.GITHUB_WORKSPACE, getInput('configFile'))
|
||||
|
||||
const getCommitDepth = () => {
|
||||
const commitDepthString = getInput('commitDepth')
|
||||
if (!commitDepthString?.trim()) return null
|
||||
const commitDepth = parseInt(commitDepthString, 10)
|
||||
return Number.isNaN(commitDepth) ? null : Math.max(commitDepth, 0)
|
||||
}
|
||||
|
||||
const pushEventHasOnlyOneCommit = (from) => {
|
||||
const gitEmptySha = '0000000000000000000000000000000000000000'
|
||||
|
||||
|
|
@ -118,7 +125,11 @@ const handleOnlyWarnings = (formattedResults) => {
|
|||
}
|
||||
|
||||
const showLintResults = async ([from, to]) => {
|
||||
const commits = await getHistoryCommits(from, to)
|
||||
let commits = await getHistoryCommits(from, to)
|
||||
const commitDepth = getCommitDepth()
|
||||
if (commitDepth) {
|
||||
commits = commits?.slice(0, commitDepth)
|
||||
}
|
||||
const config = existsSync(configPath)
|
||||
? await load({}, { file: configPath })
|
||||
: await load({ extends: ['@commitlint/config-conventional'] })
|
||||
|
|
@ -130,7 +141,6 @@ const showLintResults = async ([from, to]) => {
|
|||
})),
|
||||
)
|
||||
const formattedResults = formatErrors(lintedCommits, { config })
|
||||
|
||||
generateOutputs(lintedCommits)
|
||||
|
||||
if (hasOnlyWarnings(lintedCommits)) {
|
||||
|
|
|
|||
|
|
@ -605,4 +605,41 @@ describe('Commit Linter action', () => {
|
|||
td.verify(core.setFailed(contains(' https://example.org')))
|
||||
})
|
||||
})
|
||||
|
||||
describe('when commitDepth is provided in the config', () => {
|
||||
beforeEach(async () => {
|
||||
cwd = await git.bootstrap('fixtures/conventional')
|
||||
await gitEmptyCommit(cwd, 'message from before push')
|
||||
await gitEmptyCommit(cwd, 'incorrect message within commit depth')
|
||||
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')
|
||||
})
|
||||
it('should pass when only considering messages defined by commitDepth', async () => {
|
||||
td.when(core.getInput('commitDepth')).thenReturn('1')
|
||||
await runAction()
|
||||
|
||||
td.verify(core.setFailed(), { times: 0, ignoreExtraArgs: true })
|
||||
td.verify(console.log('Lint free! 🎉'))
|
||||
})
|
||||
it('should fail when older commits have lint errors', async () => {
|
||||
td.when(core.getInput('commitDepth')).thenReturn('2')
|
||||
await runAction()
|
||||
|
||||
td.verify(
|
||||
core.setFailed(contains('incorrect message within commit depth')),
|
||||
)
|
||||
})
|
||||
it('should consider all commits when an invalid commit depth is passed in config', async () => {
|
||||
td.when(core.getInput('commitDepth')).thenReturn('xzy')
|
||||
await runAction()
|
||||
|
||||
td.verify(
|
||||
core.setFailed(contains('incorrect message within commit depth')),
|
||||
)
|
||||
})
|
||||
})
|
||||
})
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue