Skip to content

Commit

Permalink
Fixes #135 Add support for generate_release_notes
Browse files Browse the repository at this point in the history
  • Loading branch information
ncipollo committed Nov 26, 2021
1 parent 66aaa1e commit c8302d1
Show file tree
Hide file tree
Showing 7 changed files with 104 additions and 13 deletions.
65 changes: 59 additions & 6 deletions __tests__/Action.test.ts
Expand Up @@ -26,6 +26,7 @@ const createName = 'createName'
const commit = 'commit'
const discussionCategory = 'discussionCategory'
const draft = true
const generateReleaseNotes = true
const id = 100
const createPrerelease = true
const updatePrerelease = false
Expand All @@ -51,7 +52,14 @@ describe("Action", () => {

await action.perform()

expect(createMock).toBeCalledWith(tag, createBody, commit, discussionCategory, draft, createName, createPrerelease)
expect(createMock).toBeCalledWith(tag,
createBody,
commit,
discussionCategory,
draft,
generateReleaseNotes,
createName,
createPrerelease)
expect(uploadMock).not.toBeCalled()
assertOutputApplied()
})
Expand All @@ -63,7 +71,15 @@ describe("Action", () => {

await action.perform()

expect(createMock).toBeCalledWith(tag, createBody, commit, discussionCategory, draft, createName, createPrerelease)
expect(createMock).toBeCalledWith(
tag,
createBody,
commit,
discussionCategory,
draft,
generateReleaseNotes,
createName,
createPrerelease)
expect(uploadMock).toBeCalledWith(artifacts, releaseId, url)
assertOutputApplied()
})
Expand All @@ -80,7 +96,16 @@ describe("Action", () => {

await action.perform()

expect(createMock).toBeCalledWith(tag, createBody, commit, discussionCategory, draft, createName, createPrerelease)
expect(createMock).toBeCalledWith(
tag,
createBody,
commit,
discussionCategory,
draft,
generateReleaseNotes,
createName,
createPrerelease
)
expect(uploadMock).toBeCalledWith(artifacts, releaseId, url)
assertOutputApplied()

Expand All @@ -91,7 +116,16 @@ describe("Action", () => {

await action.perform()

expect(createMock).toBeCalledWith(tag, createBody, commit, discussionCategory, draft, createName, createPrerelease)
expect(createMock).toBeCalledWith(
tag,
createBody,
commit,
discussionCategory,
draft,
generateReleaseNotes,
createName,
createPrerelease
)
expect(uploadMock).toBeCalledWith(artifacts, releaseId, url)
assertOutputApplied()
})
Expand Down Expand Up @@ -125,7 +159,16 @@ describe("Action", () => {
expect(error).toEqual("error")
}

expect(createMock).toBeCalledWith(tag, createBody, commit, discussionCategory, draft, createName, createPrerelease)
expect(createMock).toBeCalledWith(
tag,
createBody,
commit,
discussionCategory,
draft,
generateReleaseNotes,
createName,
createPrerelease
)
expect(uploadMock).not.toBeCalled()
})

Expand Down Expand Up @@ -191,7 +234,16 @@ describe("Action", () => {
expect(error).toEqual(expectedError)
}

expect(createMock).toBeCalledWith(tag, createBody, commit, discussionCategory, draft, createName, createPrerelease)
expect(createMock).toBeCalledWith(
tag,
createBody,
commit,
discussionCategory,
draft,
generateReleaseNotes,
createName,
createPrerelease
)
expect(uploadMock).toBeCalledWith(artifacts, releaseId, url)
})

Expand Down Expand Up @@ -315,6 +367,7 @@ describe("Action", () => {
commit: commit,
discussionCategory: discussionCategory,
draft: draft,
generateReleaseNotes: true,
owner: "owner",
createdPrerelease: createPrerelease,
replacesArtifacts: replacesArtifacts,
Expand Down
25 changes: 22 additions & 3 deletions __tests__/Inputs.test.ts
Expand Up @@ -38,9 +38,16 @@ describe('Inputs', () => {
inputs = new CoreInputs(createGlobber(), context)
})

it('returns targetCommit', () => {
mockGetInput.mockReturnValue('42')
expect(inputs.commit).toBe('42')
describe('commit', () => {
it('returns commit', () => {
mockGetInput.mockReturnValueOnce('commit')
expect(inputs.commit).toBe('commit')
})

it('returns undefined when omitted', () => {
mockGetInput.mockReturnValueOnce('')
expect(inputs.commit).toBeUndefined()
})
})

it('returns token', () => {
Expand Down Expand Up @@ -202,6 +209,18 @@ describe('Inputs', () => {
})
})

describe('generateReleaseNotes', () => {
it('returns returns true', function () {
mockGetInput.mockReturnValue("true")
expect(inputs.generateReleaseNotes).toBe(true)
});

it('returns false when omitted', function () {
mockGetInput.mockReturnValue("")
expect(inputs.generateReleaseNotes).toBe(false)
});
})

describe('owner', () => {
it('returns owner from context', function () {
process.env.GITHUB_REPOSITORY = "owner/repo"
Expand Down
3 changes: 2 additions & 1 deletion __tests__/Integration.test.ts
Expand Up @@ -43,9 +43,10 @@ describe.skip('Integration Test', () => {
artifacts: artifacts(),
createdReleaseBody: "This release was generated by release-action's integration test",
createdReleaseName: "Releases Action Integration Test",
commit: "",
commit: undefined,
discussionCategory: 'Release',
draft: false,
generateReleaseNotes: true,
owner: "ncipollo",
createdPrerelease: false,
replacesArtifacts: true,
Expand Down
4 changes: 4 additions & 0 deletions action.yml
Expand Up @@ -43,6 +43,10 @@ inputs:
description: "Optionally marks this release as a draft release. Set to true to enable."
required: false
default: ''
generateReleaseNotes:
description: 'Indicates if release notes should be automatically generated.'
required: false
default: 'false'
name:
description: 'An optional name for the release. If this is omitted the tag will be used.'
required: false
Expand Down
1 change: 1 addition & 0 deletions src/Action.ts
Expand Up @@ -114,6 +114,7 @@ export class Action {
this.inputs.commit,
this.inputs.discussionCategory,
this.inputs.draft,
this.inputs.generateReleaseNotes,
this.inputs.createdReleaseName,
this.inputs.createdPrerelease
)
Expand Down
16 changes: 13 additions & 3 deletions src/Inputs.ts
Expand Up @@ -8,11 +8,12 @@ export interface Inputs {
readonly allowUpdates: boolean
readonly artifactErrorsFailBuild: boolean
readonly artifacts: Artifact[]
readonly commit: string
readonly commit?: string
readonly createdReleaseBody?: string
readonly createdReleaseName?: string
readonly discussionCategory?: string
readonly draft: boolean
readonly generateReleaseNotes: boolean
readonly owner: string
readonly createdPrerelease: boolean
readonly removeArtifacts: boolean
Expand Down Expand Up @@ -83,8 +84,12 @@ export class CoreInputs implements Inputs {
return ''
}

get commit(): string {
return core.getInput('commit')
get commit(): string | undefined {
const commit = core.getInput('commit')
if (commit) {
return commit
}
return undefined
}

get createdReleaseName(): string | undefined {
Expand Down Expand Up @@ -117,6 +122,11 @@ export class CoreInputs implements Inputs {
const draft = core.getInput('draft')
return draft == 'true'
}

get generateReleaseNotes(): boolean {
const generate = core.getInput('generateReleaseNotes')
return generate == 'true'
}

get owner(): string {
let owner = core.getInput('owner')
Expand Down
3 changes: 3 additions & 0 deletions src/Releases.ts
Expand Up @@ -24,6 +24,7 @@ export interface Releases {
commitHash?: string,
discussionCategory?: string,
draft?: boolean,
generateReleaseNotes?: boolean,
name?: string,
prerelease?: boolean
): Promise<CreateReleaseResponse>
Expand Down Expand Up @@ -72,6 +73,7 @@ export class GithubReleases implements Releases {
commitHash?: string,
discussionCategory?: string,
draft?: boolean,
generateReleaseNotes?: boolean,
name?: string,
prerelease?: boolean
): Promise<CreateReleaseResponse> {
Expand All @@ -81,6 +83,7 @@ export class GithubReleases implements Releases {
name: name,
discussion_category_name: discussionCategory,
draft: draft,
generate_release_notes: generateReleaseNotes,
owner: this.inputs.owner,
prerelease: prerelease,
repo: this.inputs.repo,
Expand Down

0 comments on commit c8302d1

Please sign in to comment.