Add content type and length to inputs
This commit is contained in:
@@ -1,5 +1,6 @@
|
|||||||
const mockGetInput = jest.fn();
|
const mockGetInput = jest.fn();
|
||||||
const mockReadFileSync = jest.fn();
|
const mockReadFileSync = jest.fn();
|
||||||
|
const mockStatSync = 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";
|
||||||
@@ -10,7 +11,10 @@ jest.mock('@actions/core', () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
jest.mock('fs', () => {
|
jest.mock('fs', () => {
|
||||||
return { readFileSync: mockReadFileSync };
|
return {
|
||||||
|
readFileSync: mockReadFileSync,
|
||||||
|
statSync: mockStatSync
|
||||||
|
};
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('Inputs', () => {
|
describe('Inputs', () => {
|
||||||
@@ -27,6 +31,12 @@ describe('Inputs', () => {
|
|||||||
expect(inputs.artifact).toBe("a/path")
|
expect(inputs.artifact).toBe("a/path")
|
||||||
})
|
})
|
||||||
|
|
||||||
|
it('returns artifactContentLength', () => {
|
||||||
|
mockGetInput.mockReturnValue("a/path")
|
||||||
|
mockStatSync.mockReturnValue({size: 100})
|
||||||
|
expect(inputs.artifactContentLength).toBe(100)
|
||||||
|
})
|
||||||
|
|
||||||
it('returns targetCommit', () => {
|
it('returns targetCommit', () => {
|
||||||
mockGetInput.mockReturnValue("42")
|
mockGetInput.mockReturnValue("42")
|
||||||
expect(inputs.commit).toBe("42")
|
expect(inputs.commit).toBe("42")
|
||||||
@@ -37,6 +47,17 @@ describe('Inputs', () => {
|
|||||||
expect(inputs.token).toBe("42")
|
expect(inputs.token).toBe("42")
|
||||||
})
|
})
|
||||||
|
|
||||||
|
describe('artifactContentType', () => {
|
||||||
|
it('returns input content-type', () => {
|
||||||
|
mockGetInput.mockReturnValue("type")
|
||||||
|
expect(inputs.artifactContentType).toBe("type")
|
||||||
|
})
|
||||||
|
|
||||||
|
it('returns raw as default', () => {
|
||||||
|
expect(inputs.artifactContentType).toBe("raw")
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
describe('description', () => {
|
describe('description', () => {
|
||||||
it('returns input description', () => {
|
it('returns input description', () => {
|
||||||
mockGetInput.mockReturnValue("description")
|
mockGetInput.mockReturnValue("description")
|
||||||
|
|||||||
@@ -1,3 +0,0 @@
|
|||||||
describe('TODO - Add a test suite', () => {
|
|
||||||
it('TODO - Add a test', async () => {});
|
|
||||||
});
|
|
||||||
@@ -5,6 +5,9 @@ inputs:
|
|||||||
artifact:
|
artifact:
|
||||||
description: 'A path to an optional artifact to upload to the release.'
|
description: 'A path to an optional artifact to upload to the release.'
|
||||||
default: ''
|
default: ''
|
||||||
|
artifactContentType:
|
||||||
|
description: 'The content type of the artifact. Defaults to raw'
|
||||||
|
default: ''
|
||||||
commit:
|
commit:
|
||||||
description: 'An optional commit reference. This will be used to create the tag if it doesn't exist.'
|
description: 'An optional commit reference. This will be used to create the tag if it doesn't exist.'
|
||||||
default: ''
|
default: ''
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
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 { readFileSync, statSync } from 'fs';
|
||||||
import { fstat, readFileSync } from 'fs';
|
|
||||||
|
|
||||||
export class Inputs {
|
export class Inputs {
|
||||||
private context: Context
|
private context: Context
|
||||||
@@ -14,18 +13,31 @@ export class Inputs {
|
|||||||
return core.getInput('artifact')
|
return core.getInput('artifact')
|
||||||
}
|
}
|
||||||
|
|
||||||
|
get artifactContentType(): string {
|
||||||
|
const type = core.getInput('artifactContentType')
|
||||||
|
if(type) {
|
||||||
|
return type;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 'raw'
|
||||||
|
}
|
||||||
|
|
||||||
|
get artifactContentLength(): number {
|
||||||
|
return statSync(this.artifact).size
|
||||||
|
}
|
||||||
|
|
||||||
get commit(): string {
|
get commit(): string {
|
||||||
return core.getInput('commit')
|
return core.getInput('commit')
|
||||||
}
|
}
|
||||||
|
|
||||||
get description(): string {
|
get description(): string {
|
||||||
const description = core.getInput('description')
|
const description = core.getInput('description')
|
||||||
if(description) {
|
if (description) {
|
||||||
return description
|
return description
|
||||||
}
|
}
|
||||||
|
|
||||||
const descriptionFile = core.getInput('descriptionFile')
|
const descriptionFile = core.getInput('descriptionFile')
|
||||||
if(descriptionFile) {
|
if (descriptionFile) {
|
||||||
return this.stringFromFile(descriptionFile)
|
return this.stringFromFile(descriptionFile)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -41,10 +53,6 @@ export class Inputs {
|
|||||||
return this.tag
|
return this.tag
|
||||||
}
|
}
|
||||||
|
|
||||||
get token(): string {
|
|
||||||
return core.getInput('token', { required: true })
|
|
||||||
}
|
|
||||||
|
|
||||||
get tag(): string {
|
get tag(): string {
|
||||||
const tag = core.getInput('tag')
|
const tag = core.getInput('tag')
|
||||||
if (tag) {
|
if (tag) {
|
||||||
@@ -60,6 +68,10 @@ export class Inputs {
|
|||||||
throw Error("No tag found in ref or input!")
|
throw Error("No tag found in ref or input!")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
get token(): string {
|
||||||
|
return core.getInput('token', { required: true })
|
||||||
|
}
|
||||||
|
|
||||||
private stringFromFile(path: string): string {
|
private stringFromFile(path: string): string {
|
||||||
return readFileSync(path, 'utf-8')
|
return readFileSync(path, 'utf-8')
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user