5
0
Fork 0
mirror of https://github.com/wagoid/commitlint-github-action.git synced 2025-11-07 00:06:54 +00:00

Merge pull request #800 from wagoid/revert-798-feat/using-rest-for-push

Revert "feat: updating push event trigger to use rest API (OctoKit) vs push event"
This commit is contained in:
Wagner Santos 2024-08-21 04:34:25 -03:00 committed by GitHub
commit bc25072483
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 124 additions and 260 deletions

View file

@ -22,21 +22,13 @@ const getCommitDepth = () => {
return Number.isNaN(commitDepth) ? null : Math.max(commitDepth, 0)
}
const getPushEventCommits = async () => {
const octokit = getOctokit(getInput('token'))
const { owner, repo } = eventContext.issue
const { before } = eventContext.payload
const { data: commits } = await octokit.rest.repos.listCommits({
owner,
repo,
sha: before,
per_page: 100,
})
return commits.map((commit) => ({
message: commit.commit.message,
hash: commit.sha,
const getPushEventCommits = () => {
const mappedCommits = eventContext.payload.commits.map((commit) => ({
message: commit.message,
hash: commit.id,
}))
return mappedCommits
}
const getPullRequestEventCommits = async () => {

View file

@ -19,8 +19,7 @@ const {
const initialEnv = { ...process.env }
const mockListPullCommits = td.func('listCommits')
const mockListPushCommits = td.func('listCommits')
const mockListCommits = td.func('listCommits')
const mockCore = td.object(['getInput', 'setFailed', 'setOutput'])
@ -31,10 +30,7 @@ jest.unstable_mockModule('@actions/github', () => {
constructor() {
this.rest = {
pulls: {
listCommits: mockListPullCommits,
},
repos: {
listCommits: mockListPushCommits,
listCommits: mockListCommits,
},
}
}
@ -76,18 +72,15 @@ describe('Commit Linter action', () => {
'./not-existing-config.mjs',
)
cwd = await git.bootstrap('fixtures/conventional', process.cwd())
await createPushEventPayload(cwd)
updatePushEnvVars(cwd)
td.when(
mockListPushCommits({
owner: 'wagoid',
repo: 'commitlint-github-action',
per_page: 100,
sha: '00000',
}),
).thenResolve({
data: [buildResponseCommit('wrong-message', 'wrong message')],
await createPushEventPayload(cwd, {
commits: [
{
id: 'wrong-message',
message: 'wrong message',
},
],
})
updatePushEnvVars(cwd)
td.replace(process, 'cwd', () => cwd)
await runAction()
@ -109,18 +102,15 @@ describe('Commit Linter action', () => {
'./commitlint.config.js',
)
cwd = await git.bootstrap('fixtures/conventional', process.cwd())
await createPushEventPayload(cwd)
updatePushEnvVars(cwd)
td.when(
mockListPushCommits({
owner: 'wagoid',
repo: 'commitlint-github-action',
per_page: 100,
sha: '00000',
}),
).thenResolve({
data: [buildResponseCommit('wrong-message', 'wrong message')],
await createPushEventPayload(cwd, {
commits: [
{
id: 'wrong-message',
message: 'wrong message',
},
],
})
updatePushEnvVars(cwd)
td.replace(process, 'cwd', () => cwd)
await runAction()
@ -130,19 +120,15 @@ describe('Commit Linter action', () => {
it('should fail for single push with incorrect message', async () => {
cwd = await git.bootstrap('fixtures/conventional', process.cwd())
await createPushEventPayload(cwd)
updatePushEnvVars(cwd)
td.when(
mockListPushCommits({
owner: 'wagoid',
repo: 'commitlint-github-action',
per_page: 100,
sha: '00000',
}),
).thenResolve({
data: [buildResponseCommit('wrong-message', 'wrong message')],
await createPushEventPayload(cwd, {
commits: [
{
id: 'wrong-message',
message: 'wrong message',
},
],
})
updatePushEnvVars(cwd)
td.replace(process, 'cwd', () => cwd)
await runAction()
@ -154,21 +140,19 @@ describe('Commit Linter action', () => {
it('should fail for push range with wrong messages', async () => {
cwd = await git.bootstrap('fixtures/conventional', process.cwd())
await createPushEventPayload(cwd)
updatePushEnvVars(cwd)
td.when(
mockListPushCommits({
owner: 'wagoid',
repo: 'commitlint-github-action',
per_page: 100,
sha: '00000',
}),
).thenResolve({
data: [
buildResponseCommit('wrong-message-1', 'wrong message 1'),
buildResponseCommit('wrong-message-2', 'wrong message 2'),
await createPushEventPayload(cwd, {
commits: [
{
id: 'wrong-message-1',
message: 'wrong message 1',
},
{
id: 'wrong-message-2',
message: 'wrong message 2',
},
],
})
updatePushEnvVars(cwd)
td.replace(process, 'cwd', () => cwd)
await runAction()
@ -179,21 +163,19 @@ describe('Commit Linter action', () => {
it('should pass for push range with wrong messages with failOnErrors set to false', async () => {
td.when(mockCore.getInput('failOnErrors')).thenReturn('false')
cwd = await git.bootstrap('fixtures/conventional', process.cwd())
await createPushEventPayload(cwd)
updatePushEnvVars(cwd)
td.when(
mockListPushCommits({
owner: 'wagoid',
repo: 'commitlint-github-action',
per_page: 100,
sha: '00000',
}),
).thenResolve({
data: [
buildResponseCommit('wrong-message-1', 'wrong message 1'),
buildResponseCommit('wrong-message-2', 'wrong message 2'),
await createPushEventPayload(cwd, {
commits: [
{
id: 'wrong-message-1',
message: 'wrong message 1',
},
{
id: 'wrong-message-2',
message: 'wrong message 2',
},
],
})
updatePushEnvVars(cwd)
td.replace(process, 'cwd', () => cwd)
td.replace(console, 'log')
@ -208,21 +190,19 @@ describe('Commit Linter action', () => {
it('should pass for push range with correct messages with failOnErrors set to false', async () => {
td.when(mockCore.getInput('failOnErrors')).thenReturn('false')
cwd = await git.bootstrap('fixtures/conventional', process.cwd())
await createPushEventPayload(cwd)
updatePushEnvVars(cwd)
td.when(
mockListPushCommits({
owner: 'wagoid',
repo: 'commitlint-github-action',
per_page: 100,
sha: '00000',
}),
).thenResolve({
data: [
buildResponseCommit('correct-message-1', 'chore: correct message 1'),
buildResponseCommit('correct-message-2', 'chore: correct message 2'),
await createPushEventPayload(cwd, {
commits: [
{
id: 'correct-message-1',
message: 'chore: correct message 1',
},
{
id: 'correct-message-2',
message: 'chore: correct message 2',
},
],
})
updatePushEnvVars(cwd)
td.replace(process, 'cwd', () => cwd)
td.replace(console, 'log')
@ -234,21 +214,19 @@ describe('Commit Linter action', () => {
it('should pass for push range with correct messages', async () => {
cwd = await git.bootstrap('fixtures/conventional', process.cwd())
await createPushEventPayload(cwd)
updatePushEnvVars(cwd)
td.when(
mockListPushCommits({
owner: 'wagoid',
repo: 'commitlint-github-action',
per_page: 100,
sha: '00000',
}),
).thenResolve({
data: [
buildResponseCommit('correct-message-1', 'chore: correct message 1'),
buildResponseCommit('correct-message-2', 'chore: correct message 2'),
await createPushEventPayload(cwd, {
commits: [
{
id: 'correct-message-1',
message: 'chore: correct message 1',
},
{
id: 'correct-message-2',
message: 'chore: correct message 2',
},
],
})
updatePushEnvVars(cwd)
td.replace(process, 'cwd', () => cwd)
td.replace(console, 'log')
@ -263,23 +241,14 @@ describe('Commit Linter action', () => {
td.when(mockCore.getInput('configFile')).thenReturn(
'./commitlint.config.yml',
)
await createPushEventPayload(cwd)
updatePushEnvVars(cwd)
td.when(
mockListPushCommits({
owner: 'wagoid',
repo: 'commitlint-github-action',
per_page: 100,
sha: '00000',
}),
).thenResolve({
data: [
buildResponseCommit(
'correct-message',
'chore(wrong): not including package scope',
),
await createPushEventPayload(cwd, {
commits: [
{
message: 'chore(wrong): not including package scope',
},
],
})
updatePushEnvVars(cwd)
td.replace(process, 'cwd', () => cwd)
await runAction()
@ -294,23 +263,15 @@ describe('Commit Linter action', () => {
td.when(mockCore.getInput('configFile')).thenReturn(
'./commitlint.config.yml',
)
await createPushEventPayload(cwd)
updatePushEnvVars(cwd)
td.when(
mockListPushCommits({
owner: 'wagoid',
repo: 'commitlint-github-action',
per_page: 100,
sha: '00000',
}),
).thenResolve({
data: [
buildResponseCommit(
'correct-message',
'chore(second-package): this works',
),
await createPushEventPayload(cwd, {
commits: [
{
id: 'correct-message',
message: 'chore(second-package): this works',
},
],
})
updatePushEnvVars(cwd)
td.replace(process, 'cwd', () => cwd)
td.replace(console, 'log')
@ -324,20 +285,12 @@ describe('Commit Linter action', () => {
td.when(mockCore.getInput('configFile')).thenReturn(
'./commitlint.config.mjs',
)
await createPushEventPayload(cwd)
td.when(
mockListPushCommits({
owner: 'wagoid',
repo: 'commitlint-github-action',
per_page: 100,
sha: '00000',
}),
).thenResolve({
data: [
buildResponseCommit(
'wrong-message',
'ib-21212121212121: without jira ticket',
),
await createPushEventPayload(cwd, {
commits: [
{
id: 'wrong-message',
message: 'ib-21212121212121: without jira ticket',
},
],
})
updatePushEnvVars(cwd)
@ -372,18 +325,8 @@ describe('Commit Linter action', () => {
'./commitlint.config.mjs',
)
cwd = await git.bootstrap('fixtures/conventional', process.cwd())
await createPushEventPayload(cwd, { commits: [] }, '12345')
await createPushEventPayload(cwd, {})
updatePushEnvVars(cwd)
td.when(
mockListPushCommits({
owner: 'wagoid',
repo: 'commitlint-github-action',
per_page: 100,
sha: '12345',
}),
).thenResolve({
data: [],
})
td.replace(process, 'cwd', () => cwd)
td.replace(console, 'log')
@ -411,7 +354,7 @@ describe('Commit Linter action', () => {
await createPullRequestEventPayload(cwd)
updatePullRequestEnvVars(cwd, { eventName })
td.when(
mockListPullCommits({
mockListCommits({
owner: 'wagoid',
repo: 'commitlint-github-action',
pull_number: '1',
@ -477,7 +420,7 @@ describe('Commit Linter action', () => {
await createPullRequestEventPayload(cwd)
updatePullRequestEnvVars(cwd)
td.when(
mockListPullCommits({
mockListCommits({
owner: 'wagoid',
repo: 'commitlint-github-action',
pull_number: '1',
@ -505,25 +448,15 @@ describe('Commit Linter action', () => {
})
describe("when there's a single commit with correct message", () => {
const commit = buildResponseCommit(
'correct-commit',
'chore: correct message',
)
const commit = {
id: 'correct-message',
message: 'chore: correct message',
}
beforeEach(async () => {
cwd = await git.bootstrap('fixtures/conventional', process.cwd())
await createPushEventPayload(cwd)
await createPushEventPayload(cwd, { commits: [commit] })
updatePushEnvVars(cwd)
td.when(
mockListPushCommits({
owner: 'wagoid',
repo: 'commitlint-github-action',
per_page: 100,
sha: '00000',
}),
).thenResolve({
data: [commit],
})
td.replace(process, 'cwd', () => cwd)
td.replace(console, 'log')
})
@ -543,8 +476,8 @@ describe('Commit Linter action', () => {
it('should generate a JSON output of the messages', async () => {
const expectedResultsOutput = [
{
hash: commit.sha,
message: commit.commit.message,
hash: commit.id,
message: commit.message,
valid: true,
errors: [],
warnings: [],
@ -574,19 +507,6 @@ describe('Commit Linter action', () => {
await createPushEventPayload(cwd, {
commits: [commitWithWarning, correctCommit],
})
td.when(
mockListPushCommits({
owner: 'wagoid',
repo: 'commitlint-github-action',
per_page: 100,
sha: '00000',
}),
).thenResolve({
data: [
buildResponseCommit(commitWithWarning.id, commitWithWarning.message),
buildResponseCommit(correctCommit.id, correctCommit.message),
],
})
updatePushEnvVars(cwd)
td.replace(process, 'cwd', () => cwd)
td.replace(console, 'log')
@ -660,20 +580,6 @@ describe('Commit Linter action', () => {
await createPushEventPayload(cwd, {
commits: [wrongCommit, commitWithWarning],
})
td.when(
mockListPushCommits({
owner: 'wagoid',
repo: 'commitlint-github-action',
per_page: 100,
sha: '00000',
}),
).thenResolve({
data: [
buildResponseCommit(wrongCommit.id, wrongCommit.message),
buildResponseCommit(commitWithWarning.id, commitWithWarning.message),
],
})
updatePushEnvVars(cwd)
td.replace(process, 'cwd', () => cwd)
td.replace(console, 'log')
@ -729,23 +635,15 @@ describe('Commit Linter action', () => {
describe('when commit contains required signed-off-by message', () => {
beforeEach(async () => {
cwd = await git.bootstrap('fixtures/signed-off-by', process.cwd())
await createPushEventPayload(cwd)
td.when(
mockListPushCommits({
owner: 'wagoid',
repo: 'commitlint-github-action',
per_page: 100,
sha: '00000',
}),
).thenResolve({
data: [
buildResponseCommit(
'correct-commit',
'chore: correct message\n\nsome context without leading blank line.\n\nSigned-off-by: John Doe <john.doe@example.com>',
),
await createPushEventPayload(cwd, {
commits: [
{
id: 'correct-commit',
message:
'chore: correct message\n\nsome context without leading blank line.\n\nSigned-off-by: John Doe <john.doe@example.com>',
},
],
})
updatePushEnvVars(cwd)
td.replace(process, 'cwd', () => cwd)
td.replace(console, 'log')
@ -762,16 +660,13 @@ describe('Commit Linter action', () => {
describe('when a different helpUrl is provided in the config', () => {
beforeEach(async () => {
cwd = await git.bootstrap('fixtures/custom-help-url', process.cwd())
await createPushEventPayload(cwd)
td.when(
mockListPushCommits({
owner: 'wagoid',
repo: 'commitlint-github-action',
per_page: 100,
sha: '00000',
}),
).thenResolve({
data: [buildResponseCommit('wrong-commit', 'wrong message')],
await createPushEventPayload(cwd, {
commits: [
{
id: 'wrong-commit',
message: 'wrong message',
},
],
})
updatePushEnvVars(cwd)
td.replace(process, 'cwd', () => cwd)
@ -803,19 +698,6 @@ describe('Commit Linter action', () => {
],
})
updatePushEnvVars(cwd)
td.when(
mockListPushCommits({
owner: 'wagoid',
repo: 'commitlint-github-action',
per_page: 100,
sha: '00000',
}),
).thenResolve({
data: [
buildResponseCommit('correct-commit', 'chore: correct message 2'),
buildResponseCommit(incorrectCommit.id, incorrectCommit.message),
],
})
td.replace(process, 'cwd', () => cwd)
td.replace(console, 'log')
})

View file

@ -19,26 +19,16 @@ export const updatePushEnvVars = (cwd) => {
export const createPushEventPayload = async (
cwd,
commits = null,
before = null,
{ forced = false, headCommit = null, commits = [] },
) => {
const payload = {
forced: false,
head_commit: null,
before: before || '00000',
commits: commits || [
{
id: 'ignored',
message: 'but needed for triggering',
},
],
forced,
head_commit: headCommit,
commits,
}
const eventPath = path.join(cwd, 'pushEventPayload.json')
updateEnvVars({
GITHUB_EVENT_PATH: eventPath,
GITHUB_REPOSITORY: 'wagoid/commitlint-github-action',
})
updateEnvVars({ GITHUB_EVENT_PATH: eventPath })
await writeFile(eventPath, JSON.stringify(payload), 'utf8')
}