Add biome and initial format rules

This commit is contained in:
Nick Cipollo
2025-02-17 16:15:54 -05:00
parent 33bf18d283
commit 17b559883e
37 changed files with 3110 additions and 975 deletions

View File

@@ -1,27 +1,24 @@
const mockGetInput = jest.fn();
const mockGetBooleanInput = jest.fn();
const mockGetInput = jest.fn()
const mockGetBooleanInput = jest.fn()
const mockGlob = jest.fn()
const mockReadFileSync = jest.fn();
const mockStatSync = jest.fn();
const mockReadFileSync = jest.fn()
const mockStatSync = jest.fn()
import {Artifact} from "../src/Artifact";
import {ArtifactGlobber} from "../src/ArtifactGlobber";
import {Context} from "@actions/github/lib/context";
import {Inputs, CoreInputs} from "../src/Inputs";
import { Artifact } from "../src/Artifact"
import { ArtifactGlobber } from "../src/ArtifactGlobber"
import { Context } from "@actions/github/lib/context"
import { Inputs, CoreInputs } from "../src/Inputs"
const artifacts = [
new Artifact('a/art1'),
new Artifact('b/art2')
]
const artifacts = [new Artifact("a/art1"), new Artifact("b/art2")]
jest.mock('@actions/core', () => {
jest.mock("@actions/core", () => {
return {
getInput: mockGetInput,
getBooleanInput: mockGetBooleanInput
};
getBooleanInput: mockGetBooleanInput,
}
})
jest.mock('fs', () => {
jest.mock("fs", () => {
// existsSync is used by Context's constructor
// noinspection JSUnusedGlobalSymbols
return {
@@ -29,452 +26,397 @@ jest.mock('fs', () => {
return false
},
readFileSync: mockReadFileSync,
statSync: mockStatSync
};
statSync: mockStatSync,
}
})
describe('Inputs', () => {
let context: Context;
let inputs: Inputs;
describe("Inputs", () => {
let context: Context
let inputs: Inputs
beforeEach(() => {
mockGetInput.mockReset()
context = new Context()
inputs = new CoreInputs(createGlobber(), context)
})
describe('commit', () => {
it('returns commit', () => {
mockGetInput.mockReturnValueOnce('commit')
expect(inputs.commit).toBe('commit')
describe("commit", () => {
it("returns commit", () => {
mockGetInput.mockReturnValueOnce("commit")
expect(inputs.commit).toBe("commit")
})
it('returns undefined when omitted', () => {
mockGetInput.mockReturnValueOnce('')
it("returns undefined when omitted", () => {
mockGetInput.mockReturnValueOnce("")
expect(inputs.commit).toBeUndefined()
})
})
it('returns token', () => {
mockGetInput.mockReturnValue('42')
expect(inputs.token).toBe('42')
it("returns token", () => {
mockGetInput.mockReturnValue("42")
expect(inputs.token).toBe("42")
})
describe('allowsUpdates', () => {
it('returns false', () => {
describe("allowsUpdates", () => {
it("returns false", () => {
expect(inputs.allowUpdates).toBe(false)
})
it('returns true', () => {
mockGetInput.mockReturnValue('true')
it("returns true", () => {
mockGetInput.mockReturnValue("true")
expect(inputs.allowUpdates).toBe(true)
})
})
describe('artifactErrorsFailBuild', () => {
it('returns false', () => {
describe("artifactErrorsFailBuild", () => {
it("returns false", () => {
expect(inputs.artifactErrorsFailBuild).toBe(false)
})
it('returns true', () => {
mockGetInput.mockReturnValue('true')
it("returns true", () => {
mockGetInput.mockReturnValue("true")
expect(inputs.artifactErrorsFailBuild).toBe(true)
})
})
describe('artifacts', () => {
it('globber told to throw errors', () => {
mockGetInput.mockReturnValueOnce('art1')
.mockReturnValueOnce('contentType')
.mockReturnValueOnce('true')
describe("artifacts", () => {
it("globber told to throw errors", () => {
mockGetInput.mockReturnValueOnce("art1").mockReturnValueOnce("contentType").mockReturnValueOnce("true")
expect(inputs.artifacts).toEqual(artifacts)
expect(mockGlob).toBeCalledTimes(1)
expect(mockGlob).toBeCalledWith('art1', 'contentType', true)
expect(mockGlob).toBeCalledWith("art1", "contentType", true)
})
it('returns empty artifacts', () => {
mockGetInput.mockReturnValueOnce('')
.mockReturnValueOnce('')
it("returns empty artifacts", () => {
mockGetInput.mockReturnValueOnce("").mockReturnValueOnce("")
expect(inputs.artifacts).toEqual([])
expect(mockGlob).toBeCalledTimes(0)
})
it('returns input.artifacts', () => {
mockGetInput.mockReturnValueOnce('art1')
.mockReturnValueOnce('contentType')
.mockReturnValueOnce('false')
it("returns input.artifacts", () => {
mockGetInput.mockReturnValueOnce("art1").mockReturnValueOnce("contentType").mockReturnValueOnce("false")
expect(inputs.artifacts).toEqual(artifacts)
expect(mockGlob).toBeCalledTimes(1)
expect(mockGlob).toBeCalledWith('art1', 'contentType', false)
expect(mockGlob).toBeCalledWith("art1", "contentType", false)
})
it('returns input.artifacts with default contentType', () => {
mockGetInput.mockReturnValueOnce('art1')
.mockReturnValueOnce('')
.mockReturnValueOnce('false')
it("returns input.artifacts with default contentType", () => {
mockGetInput.mockReturnValueOnce("art1").mockReturnValueOnce("").mockReturnValueOnce("false")
expect(inputs.artifacts).toEqual(artifacts)
expect(mockGlob).toBeCalledTimes(1)
expect(mockGlob).toBeCalledWith('art1', 'raw', false)
expect(mockGlob).toBeCalledWith("art1", "raw", false)
})
it('returns input.artifact', () => {
mockGetInput.mockReturnValueOnce('')
.mockReturnValueOnce('art2')
.mockReturnValueOnce('contentType')
.mockReturnValueOnce('false')
it("returns input.artifact", () => {
mockGetInput
.mockReturnValueOnce("")
.mockReturnValueOnce("art2")
.mockReturnValueOnce("contentType")
.mockReturnValueOnce("false")
expect(inputs.artifacts).toEqual(artifacts)
expect(mockGlob).toBeCalledTimes(1)
expect(mockGlob).toBeCalledWith('art2', 'contentType', false)
expect(mockGlob).toBeCalledWith("art2", "contentType", false)
})
})
describe('createdDraft', () => {
it('returns false', () => {
describe("createdDraft", () => {
it("returns false", () => {
expect(inputs.createdDraft).toBe(false)
})
it('returns true', () => {
mockGetInput.mockReturnValue('true')
it("returns true", () => {
mockGetInput.mockReturnValue("true")
expect(inputs.createdDraft).toBe(true)
})
})
describe('createdReleaseBody', () => {
it('returns input body', () => {
mockGetInput
.mockReturnValueOnce('false')
.mockReturnValueOnce('body')
expect(inputs.createdReleaseBody).toBe('body')
describe("createdReleaseBody", () => {
it("returns input body", () => {
mockGetInput.mockReturnValueOnce("false").mockReturnValueOnce("body")
expect(inputs.createdReleaseBody).toBe("body")
})
it('returns body file contents', () => {
mockGetInput
.mockReturnValueOnce('false')
.mockReturnValueOnce('')
.mockReturnValueOnce('a/path')
mockReadFileSync.mockReturnValue('file')
it("returns body file contents", () => {
mockGetInput.mockReturnValueOnce("false").mockReturnValueOnce("").mockReturnValueOnce("a/path")
mockReadFileSync.mockReturnValue("file")
expect(inputs.createdReleaseBody).toBe('file')
expect(inputs.createdReleaseBody).toBe("file")
})
it('returns empty', () => {
mockGetInput
.mockReturnValueOnce('false')
.mockReturnValueOnce('')
.mockReturnValueOnce('')
expect(inputs.createdReleaseBody).toBe('')
it("returns empty", () => {
mockGetInput.mockReturnValueOnce("false").mockReturnValueOnce("").mockReturnValueOnce("")
expect(inputs.createdReleaseBody).toBe("")
})
it('returns undefined when omitted', () => {
mockGetInput
.mockReturnValueOnce('true')
.mockReturnValueOnce('body')
it("returns undefined when omitted", () => {
mockGetInput.mockReturnValueOnce("true").mockReturnValueOnce("body")
expect(inputs.createdReleaseBody).toBeUndefined()
})
})
describe('createdReleaseName', () => {
it('returns input name', () => {
mockGetInput
.mockReturnValueOnce('false')
.mockReturnValueOnce('name')
expect(inputs.createdReleaseName).toBe('name')
describe("createdReleaseName", () => {
it("returns input name", () => {
mockGetInput.mockReturnValueOnce("false").mockReturnValueOnce("name")
expect(inputs.createdReleaseName).toBe("name")
})
it('returns undefined when omitted', () => {
mockGetInput
.mockReturnValueOnce('true')
.mockReturnValueOnce('name')
it("returns undefined when omitted", () => {
mockGetInput.mockReturnValueOnce("true").mockReturnValueOnce("name")
expect(inputs.createdReleaseName).toBeUndefined()
})
it('returns tag', () => {
mockGetInput
.mockReturnValueOnce('false')
.mockReturnValueOnce('')
context.ref = 'refs/tags/sha-tag'
expect(inputs.createdReleaseName).toBe('sha-tag')
it("returns tag", () => {
mockGetInput.mockReturnValueOnce("false").mockReturnValueOnce("")
context.ref = "refs/tags/sha-tag"
expect(inputs.createdReleaseName).toBe("sha-tag")
})
})
describe('discussionCategory', () => {
it('returns category', () => {
mockGetInput.mockReturnValue('Release')
expect(inputs.discussionCategory).toBe('Release')
describe("discussionCategory", () => {
it("returns category", () => {
mockGetInput.mockReturnValue("Release")
expect(inputs.discussionCategory).toBe("Release")
})
it('returns undefined', () => {
mockGetInput.mockReturnValue('')
it("returns undefined", () => {
mockGetInput.mockReturnValue("")
expect(inputs.discussionCategory).toBe(undefined)
})
})
describe('generateReleaseNotes', () => {
it('returns returns true', function () {
describe("generateReleaseNotes", () => {
it("returns returns true", function () {
mockGetInput.mockReturnValue("true")
expect(inputs.generateReleaseNotes).toBe(true)
});
})
it('returns false when omitted', function () {
it("returns false when omitted", function () {
mockGetInput.mockReturnValue("")
expect(inputs.generateReleaseNotes).toBe(false)
});
})
})
describe('makeLatest', () => {
it('returns legacy', () => {
mockGetInput.mockReturnValueOnce('legacy')
expect(inputs.makeLatest).toBe('legacy')
describe("makeLatest", () => {
it("returns legacy", () => {
mockGetInput.mockReturnValueOnce("legacy")
expect(inputs.makeLatest).toBe("legacy")
})
it('returns false', () => {
mockGetInput.mockReturnValueOnce('false')
expect(inputs.makeLatest).toBe('false')
it("returns false", () => {
mockGetInput.mockReturnValueOnce("false")
expect(inputs.makeLatest).toBe("false")
})
it('returns true', () => {
mockGetInput.mockReturnValueOnce('true')
expect(inputs.makeLatest).toBe('true')
it("returns true", () => {
mockGetInput.mockReturnValueOnce("true")
expect(inputs.makeLatest).toBe("true")
})
it('returns undefined', () => {
mockGetInput.mockReturnValueOnce('something_else')
it("returns undefined", () => {
mockGetInput.mockReturnValueOnce("something_else")
expect(inputs.makeLatest).toBe(undefined)
})
})
describe('owner', () => {
it('returns owner from context', function () {
describe("owner", () => {
it("returns owner from context", function () {
process.env.GITHUB_REPOSITORY = "owner/repo"
mockGetInput.mockReturnValue("")
expect(inputs.owner).toBe("owner")
});
it('returns owner from inputs', function () {
})
it("returns owner from inputs", function () {
mockGetInput.mockReturnValue("owner")
expect(inputs.owner).toBe("owner")
});
})
})
describe('createdPrerelase', () => {
it('returns false', () => {
describe("createdPrerelase", () => {
it("returns false", () => {
expect(inputs.createdPrerelease).toBe(false)
})
it('returns true', () => {
mockGetInput.mockReturnValue('true')
it("returns true", () => {
mockGetInput.mockReturnValue("true")
expect(inputs.createdPrerelease).toBe(true)
})
})
describe('replacesArtifacts', () => {
it('returns false', () => {
describe("replacesArtifacts", () => {
it("returns false", () => {
expect(inputs.replacesArtifacts).toBe(false)
})
it('returns true', () => {
mockGetInput.mockReturnValue('true')
it("returns true", () => {
mockGetInput.mockReturnValue("true")
expect(inputs.replacesArtifacts).toBe(true)
})
})
describe('removeArtifacts', () => {
it('returns false', () => {
describe("removeArtifacts", () => {
it("returns false", () => {
expect(inputs.removeArtifacts).toBe(false)
})
it('returns true', () => {
mockGetInput.mockReturnValue('true')
it("returns true", () => {
mockGetInput.mockReturnValue("true")
expect(inputs.removeArtifacts).toBe(true)
})
})
describe('repo', () => {
it('returns repo from context', function () {
describe("repo", () => {
it("returns repo from context", function () {
process.env.GITHUB_REPOSITORY = "owner/repo"
mockGetInput.mockReturnValue("")
expect(inputs.repo).toBe("repo")
});
it('returns repo from inputs', function () {
})
it("returns repo from inputs", function () {
mockGetInput.mockReturnValue("repo")
expect(inputs.repo).toBe("repo")
});
})
})
describe('skipIfReleaseExists', () => {
it('returns false', () => {
describe("skipIfReleaseExists", () => {
it("returns false", () => {
mockGetBooleanInput.mockReturnValue(false)
expect(inputs.skipIfReleaseExists).toBe(false)
})
it('returns true', () => {
it("returns true", () => {
mockGetBooleanInput.mockReturnValue(true)
expect(inputs.skipIfReleaseExists).toBe(true)
})
})
describe('tag', () => {
it('returns input tag', () => {
mockGetInput.mockReturnValue('tag')
expect(inputs.tag).toBe('tag')
describe("tag", () => {
it("returns input tag", () => {
mockGetInput.mockReturnValue("tag")
expect(inputs.tag).toBe("tag")
})
it('returns context sha when input is empty', () => {
mockGetInput.mockReturnValue('')
context.ref = 'refs/tags/sha-tag'
expect(inputs.tag).toBe('sha-tag')
it("returns context sha when input is empty", () => {
mockGetInput.mockReturnValue("")
context.ref = "refs/tags/sha-tag"
expect(inputs.tag).toBe("sha-tag")
})
it('returns context sha when input is null', () => {
it("returns context sha when input is null", () => {
mockGetInput.mockReturnValue(null)
context.ref = 'refs/tags/sha-tag'
expect(inputs.tag).toBe('sha-tag')
context.ref = "refs/tags/sha-tag"
expect(inputs.tag).toBe("sha-tag")
})
it('throws if no tag', () => {
it("throws if no tag", () => {
context.ref = ""
expect(() => inputs.tag).toThrow()
})
})
describe('updatedDraft', () => {
it('returns false', () => {
describe("updatedDraft", () => {
it("returns false", () => {
expect(inputs.updatedDraft).toBe(false)
})
it('returns true', () => {
mockGetInput
.mockReturnValueOnce('false')
.mockReturnValue('true')
it("returns true", () => {
mockGetInput.mockReturnValueOnce("false").mockReturnValue("true")
expect(inputs.updatedDraft).toBe(true)
})
it('returns true when omitted is blank', () => {
mockGetInput
.mockReturnValueOnce('')
.mockReturnValue('true')
it("returns true when omitted is blank", () => {
mockGetInput.mockReturnValueOnce("").mockReturnValue("true")
expect(inputs.updatedDraft).toBe(true)
})
it('returns undefined when omitted for update', () => {
mockGetInput
.mockReturnValueOnce('true')
.mockReturnValueOnce('true')
it("returns undefined when omitted for update", () => {
mockGetInput.mockReturnValueOnce("true").mockReturnValueOnce("true")
expect(inputs.updatedDraft).toBeUndefined()
})
})
describe('updatedReleaseBody', () => {
it('returns input body', () => {
mockGetInput
.mockReturnValueOnce('false')
.mockReturnValueOnce('false')
.mockReturnValueOnce('body')
expect(inputs.updatedReleaseBody).toBe('body')
describe("updatedReleaseBody", () => {
it("returns input body", () => {
mockGetInput.mockReturnValueOnce("false").mockReturnValueOnce("false").mockReturnValueOnce("body")
expect(inputs.updatedReleaseBody).toBe("body")
})
it('returns body file contents', () => {
it("returns body file contents", () => {
mockGetInput
.mockReturnValueOnce('false')
.mockReturnValueOnce('false')
.mockReturnValueOnce('')
.mockReturnValueOnce('a/path')
mockReadFileSync.mockReturnValue('file')
.mockReturnValueOnce("false")
.mockReturnValueOnce("false")
.mockReturnValueOnce("")
.mockReturnValueOnce("a/path")
mockReadFileSync.mockReturnValue("file")
expect(inputs.updatedReleaseBody).toBe('file')
expect(inputs.updatedReleaseBody).toBe("file")
})
it('returns empty', () => {
it("returns empty", () => {
mockGetInput
.mockReturnValueOnce('false')
.mockReturnValueOnce('false')
.mockReturnValueOnce('')
.mockReturnValueOnce('')
expect(inputs.updatedReleaseBody).toBe('')
.mockReturnValueOnce("false")
.mockReturnValueOnce("false")
.mockReturnValueOnce("")
.mockReturnValueOnce("")
expect(inputs.updatedReleaseBody).toBe("")
})
it('returns undefined when omitted', () => {
mockGetInput
.mockReturnValueOnce('true')
.mockReturnValueOnce('false')
.mockReturnValueOnce('body')
it("returns undefined when omitted", () => {
mockGetInput.mockReturnValueOnce("true").mockReturnValueOnce("false").mockReturnValueOnce("body")
expect(inputs.updatedReleaseBody).toBeUndefined()
})
it('returns undefined when omitted for update', () => {
mockGetInput
.mockReturnValueOnce('false')
.mockReturnValueOnce('true')
.mockReturnValueOnce('body')
it("returns undefined when omitted for update", () => {
mockGetInput.mockReturnValueOnce("false").mockReturnValueOnce("true").mockReturnValueOnce("body")
expect(inputs.updatedReleaseBody).toBeUndefined()
})
})
describe('updatedReleaseName', () => {
it('returns input name', () => {
mockGetInput
.mockReturnValueOnce('false')
.mockReturnValueOnce('false')
.mockReturnValueOnce('name')
expect(inputs.updatedReleaseName).toBe('name')
describe("updatedReleaseName", () => {
it("returns input name", () => {
mockGetInput.mockReturnValueOnce("false").mockReturnValueOnce("false").mockReturnValueOnce("name")
expect(inputs.updatedReleaseName).toBe("name")
})
it('returns undefined when omitted', () => {
mockGetInput
.mockReturnValueOnce('true')
.mockReturnValueOnce('false')
.mockReturnValueOnce('name')
it("returns undefined when omitted", () => {
mockGetInput.mockReturnValueOnce("true").mockReturnValueOnce("false").mockReturnValueOnce("name")
expect(inputs.updatedReleaseName).toBeUndefined()
})
it('returns undefined when omitted for update', () => {
mockGetInput
.mockReturnValueOnce('false')
.mockReturnValueOnce('true')
.mockReturnValueOnce('name')
it("returns undefined when omitted for update", () => {
mockGetInput.mockReturnValueOnce("false").mockReturnValueOnce("true").mockReturnValueOnce("name")
expect(inputs.updatedReleaseName).toBeUndefined()
})
it('returns tag', () => {
mockGetInput
.mockReturnValueOnce('false')
.mockReturnValueOnce('false')
.mockReturnValueOnce('')
context.ref = 'refs/tags/sha-tag'
expect(inputs.updatedReleaseName).toBe('sha-tag')
it("returns tag", () => {
mockGetInput.mockReturnValueOnce("false").mockReturnValueOnce("false").mockReturnValueOnce("")
context.ref = "refs/tags/sha-tag"
expect(inputs.updatedReleaseName).toBe("sha-tag")
})
})
describe('updatedPrerelease', () => {
it('returns false', () => {
mockGetInput
.mockReturnValueOnce('false')
.mockReturnValueOnce('false')
describe("updatedPrerelease", () => {
it("returns false", () => {
mockGetInput.mockReturnValueOnce("false").mockReturnValueOnce("false")
expect(inputs.updatedPrerelease).toBe(false)
})
it('returns true', () => {
mockGetInput
.mockReturnValueOnce('false')
.mockReturnValueOnce('true')
it("returns true", () => {
mockGetInput.mockReturnValueOnce("false").mockReturnValueOnce("true")
expect(inputs.updatedPrerelease).toBe(true)
})
it('returns undefined when omitted for update', () => {
mockGetInput
.mockReturnValueOnce('true')
.mockReturnValueOnce('false')
it("returns undefined when omitted for update", () => {
mockGetInput.mockReturnValueOnce("true").mockReturnValueOnce("false")
expect(inputs.updatedPrerelease).toBeUndefined()
})
})
describe('updateOnlyUnreleased', () => {
it('returns false', () => {
describe("updateOnlyUnreleased", () => {
it("returns false", () => {
expect(inputs.updateOnlyUnreleased).toBe(false)
})
it('returns true', () => {
mockGetInput.mockReturnValueOnce('true')
it("returns true", () => {
mockGetInput.mockReturnValueOnce("true")
expect(inputs.updateOnlyUnreleased).toBe(true)
})
})
@@ -482,7 +424,7 @@ describe('Inputs', () => {
function createGlobber(): ArtifactGlobber {
const MockGlobber = jest.fn<ArtifactGlobber, any>(() => {
return {
globArtifactString: mockGlob
globArtifactString: mockGlob,
}
})
mockGlob.mockImplementation(() => artifacts)