Add inputs
This commit is contained in:
@@ -1,4 +1,5 @@
|
|||||||
const mockGetInput = jest.fn();
|
const mockGetInput = jest.fn();
|
||||||
|
const mockReadFileSync = jest.fn();
|
||||||
|
|
||||||
import { Inputs } from "../src/Inputs";
|
import { Inputs } from "../src/Inputs";
|
||||||
import { Context } from "@actions/github/lib/context";
|
import { Context } from "@actions/github/lib/context";
|
||||||
@@ -8,35 +9,81 @@ jest.mock('@actions/core', () => {
|
|||||||
return { getInput: mockGetInput };
|
return { getInput: mockGetInput };
|
||||||
});
|
});
|
||||||
|
|
||||||
|
jest.mock('fs', () => {
|
||||||
|
return { readFileSync: mockReadFileSync };
|
||||||
|
});
|
||||||
|
|
||||||
describe('Inputs', () => {
|
describe('Inputs', () => {
|
||||||
let context: Context;
|
let context: Context;
|
||||||
let inputs: Inputs;
|
let inputs: Inputs;
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
|
mockGetInput.mockReturnValue(null)
|
||||||
context = new Context()
|
context = new Context()
|
||||||
inputs = new Inputs(context)
|
inputs = new Inputs(context)
|
||||||
})
|
})
|
||||||
|
|
||||||
it('token method returns input token', () => {
|
it('returns artifact', () => {
|
||||||
|
mockGetInput.mockReturnValue("a/path")
|
||||||
|
expect(inputs.artifact).toBe("a/path")
|
||||||
|
})
|
||||||
|
|
||||||
|
it('returns targetCommit', () => {
|
||||||
|
mockGetInput.mockReturnValue("42")
|
||||||
|
expect(inputs.commit).toBe("42")
|
||||||
|
})
|
||||||
|
|
||||||
|
it('returns token', () => {
|
||||||
mockGetInput.mockReturnValue("42")
|
mockGetInput.mockReturnValue("42")
|
||||||
expect(inputs.token).toBe("42")
|
expect(inputs.token).toBe("42")
|
||||||
})
|
})
|
||||||
|
|
||||||
|
describe('description', () => {
|
||||||
|
it('returns input description', () => {
|
||||||
|
mockGetInput.mockReturnValue("description")
|
||||||
|
expect(inputs.description).toBe("description")
|
||||||
|
})
|
||||||
|
|
||||||
|
it('returns description file contents', () => {
|
||||||
|
mockGetInput.mockReturnValueOnce("").mockReturnValueOnce("a/path")
|
||||||
|
mockReadFileSync.mockReturnValue("file")
|
||||||
|
|
||||||
|
expect(inputs.description).toBe("file")
|
||||||
|
})
|
||||||
|
|
||||||
|
it('returns empty', () => {
|
||||||
|
expect(inputs.description).toBe("")
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
describe('name', () => {
|
||||||
|
it('returns input name', () => {
|
||||||
|
mockGetInput.mockReturnValue("name")
|
||||||
|
expect(inputs.name).toBe("name")
|
||||||
|
})
|
||||||
|
|
||||||
|
it('returns tag', () => {
|
||||||
|
mockGetInput.mockReturnValue("")
|
||||||
|
context.ref = "refs/tags/sha-tag"
|
||||||
|
expect(inputs.name).toBe("sha-tag")
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
describe('tag', () => {
|
describe('tag', () => {
|
||||||
it('tag property returns input tag', () => {
|
it('returns input tag', () => {
|
||||||
mockGetInput.mockReturnValue("tag")
|
mockGetInput.mockReturnValue("tag")
|
||||||
expect(inputs.tag).toBe("tag")
|
expect(inputs.tag).toBe("tag")
|
||||||
})
|
})
|
||||||
it('tag property returns context sha when input is empty', () => {
|
it('returns context sha when input is empty', () => {
|
||||||
mockGetInput.mockReturnValue("")
|
mockGetInput.mockReturnValue("")
|
||||||
context.ref = "refs/tags/sha-tag"
|
context.ref = "refs/tags/sha-tag"
|
||||||
expect(inputs.tag).toBe("sha-tag")
|
expect(inputs.tag).toBe("sha-tag")
|
||||||
})
|
})
|
||||||
it('tag property returns context sha when input is null', () => {
|
it('returns context sha when input is null', () => {
|
||||||
mockGetInput.mockReturnValue(null)
|
mockGetInput.mockReturnValue(null)
|
||||||
context.ref = "refs/tags/sha-tag"
|
context.ref = "refs/tags/sha-tag"
|
||||||
expect(inputs.tag).toBe("sha-tag")
|
expect(inputs.tag).toBe("sha-tag")
|
||||||
})
|
})
|
||||||
it('tag property throws if no tag', () => {
|
it('throws if no tag', () => {
|
||||||
expect(() => inputs.tag).toThrow()
|
expect(() => inputs.tag).toThrow()
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
import * as core from '@actions/core';
|
import * as core from '@actions/core';
|
||||||
import { Context } from "@actions/github/lib/context";
|
import { Context } from "@actions/github/lib/context";
|
||||||
|
import { isObject } from 'util';
|
||||||
|
import { fstat, readFileSync } from 'fs';
|
||||||
|
|
||||||
export class Inputs {
|
export class Inputs {
|
||||||
private context: Context
|
private context: Context
|
||||||
@@ -8,22 +10,57 @@ export class Inputs {
|
|||||||
this.context = context
|
this.context = context
|
||||||
}
|
}
|
||||||
|
|
||||||
get token(): string {
|
get artifact(): string {
|
||||||
return core.getInput('token', {required: true})
|
return core.getInput('artifact')
|
||||||
}
|
}
|
||||||
|
|
||||||
get tag() : string {
|
get commit(): string {
|
||||||
|
return core.getInput('commit')
|
||||||
|
}
|
||||||
|
|
||||||
|
get description(): string {
|
||||||
|
const description = core.getInput('description')
|
||||||
|
if(description) {
|
||||||
|
return description
|
||||||
|
}
|
||||||
|
|
||||||
|
const descriptionFile = core.getInput('descriptionFile')
|
||||||
|
if(descriptionFile) {
|
||||||
|
return this.stringFromFile(descriptionFile)
|
||||||
|
}
|
||||||
|
|
||||||
|
return ''
|
||||||
|
}
|
||||||
|
|
||||||
|
get name(): string {
|
||||||
|
const name = core.getInput('tag')
|
||||||
|
if (name) {
|
||||||
|
return name
|
||||||
|
}
|
||||||
|
|
||||||
|
return this.tag
|
||||||
|
}
|
||||||
|
|
||||||
|
get token(): string {
|
||||||
|
return core.getInput('token', { required: true })
|
||||||
|
}
|
||||||
|
|
||||||
|
get tag(): string {
|
||||||
const tag = core.getInput('tag')
|
const tag = core.getInput('tag')
|
||||||
if(tag) {
|
if (tag) {
|
||||||
return tag;
|
return tag;
|
||||||
}
|
}
|
||||||
|
|
||||||
const ref = this.context.ref
|
const ref = this.context.ref
|
||||||
const tagPath = "refs/tags/"
|
const tagPath = "refs/tags/"
|
||||||
if(ref && ref.startsWith(tagPath)) {
|
if (ref && ref.startsWith(tagPath)) {
|
||||||
return ref.substr(tagPath.length, ref.length)
|
return ref.substr(tagPath.length, ref.length)
|
||||||
}
|
}
|
||||||
|
|
||||||
throw Error("No tag found in ref or input!")
|
throw Error("No tag found in ref or input!")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private stringFromFile(path: string): string {
|
||||||
|
return readFileSync(path, 'utf-8')
|
||||||
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user