Skip to content

Commit

Permalink
chore: update to using core.input and update tests
Browse files Browse the repository at this point in the history
  • Loading branch information
kellertk committed Jan 29, 2025
1 parent 7057711 commit 5462b73
Show file tree
Hide file tree
Showing 3 changed files with 49 additions and 51 deletions.
16 changes: 7 additions & 9 deletions src/entrypoint.ts
Original file line number Diff line number Diff line change
Expand Up @@ -34,12 +34,10 @@ export type Inputs = {
useCreatedDateForAncient: boolean;
};

const getRequiredInput = (name: string): string => {
return core.getInput(name, { required: true });
};
const getNumberInput = (name: string): number => {
return Number.parseFloat(core.getInput(name)) ?? 0;
};
const getRequiredInput = (name: string): string => core.getInput(name, { required: true });
const getNumberInput = (name: string): number => Number.parseFloat(core.getInput(name));
const getOptionalBooleanInput = (name: string): boolean =>
core.getInput(name, { required: false }).toLowerCase() === 'true';

export function getAndValidateInputs(): Inputs {
const args = {
Expand All @@ -59,9 +57,9 @@ export function getAndValidateInputs(): Inputs {
issueTypes: getInput('issue-types').split(','),
responseRequestedLabel: getInput('response-requested-label'),
minimumUpvotesToExempt: getNumberInput('minimum-upvotes-to-exempt'),
dryrun: getBooleanInput('dry-run'),
useCreatedDateForAncient: getBooleanInput('use-created-date-for-ancient'),
} satisfies Inputs;
dryrun: getOptionalBooleanInput('dry-run'),
useCreatedDateForAncient: getOptionalBooleanInput('use-created-date-for-ancient'),
};

for (const numberInput of [args.daysBeforeAncient, args.daysBeforeClose, args.daysBeforeStale]) {
if (Number.isNaN(numberInput)) {
Expand Down
46 changes: 23 additions & 23 deletions test/entrypoint.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -463,40 +463,40 @@ describe('Configuration tests', {}, () => {
it('Reads and validates action inputs', {}, () => {
const inputs = entrypoint.getAndValidateInputs();
expect(inputs).toEqual({
repoToken: process.env.REPO_TOKEN,
ancientIssueMessage: process.env.ANCIENT_ISSUE_MESSAGE,
ancientPrMessage: process.env.ANCIENT_PR_MESSAGE,
dryrun: !!process.env.DRYRUN,
staleIssueMessage: process.env.STALE_ISSUE_MESSAGE,
stalePrMessage: process.env.STALE_PR_MESSAGE,
daysBeforeStale: Number.parseFloat(process.env.DAYS_BEFORE_STALE ?? '0'),
daysBeforeClose: Number.parseFloat(process.env.DAYS_BEFORE_CLOSE ?? '0'),
daysBeforeAncient: Number.parseFloat(process.env.DAYS_BEFORE_ANCIENT ?? '0'),
staleIssueLabel: process.env.STALE_ISSUE_LABEL,
exemptIssueLabels: process.env.EXEMPT_ISSUE_LABELS,
stalePrLabel: process.env.STALE_PR_LABEL,
exemptPrLabels: process.env.EXEMPT_PR_LABELS,
responseRequestedLabel: process.env.RESPONSE_REQUESTED_LABEL,
minimumUpvotesToExempt: Number.parseInt(process.env.MINIMUM_UPVOTES_TO_EXEMPT ?? '0'),
cfsLabel: process.env.CLOSED_FOR_STALENESS_LABEL,
issueTypes: process.env.ISSUE_TYPES?.split(','),
useCreatedDateForAncient: !!process.env.USE_CREATED_DATE_FOR_ANCIENT,
repoToken: process.env['INPUT_REPO-TOKEN'],
ancientIssueMessage: process.env['INPUT_ANCIENT-ISSUE-MESSAGE'],
ancientPrMessage: process.env['INPUT_ANCIENT-PR-MESSAGE'],
dryrun: !!process.env['INPUT_DRY-RUN'],
staleIssueMessage: process.env['INPUT_STALE-ISSUE-MESSAGE'],
stalePrMessage: process.env['INPUT_STALE-PR-MESSAGE'],
daysBeforeStale: Number.parseFloat(process.env['INPUT_DAYS-BEFORE-STALE'] ?? '0'),
daysBeforeClose: Number.parseFloat(process.env['INPUT_DAYS-BEFORE-CLOSE'] ?? '0'),
daysBeforeAncient: Number.parseFloat(process.env['INPUT_DAYS-BEFORE-ANCIENT'] ?? '0'),
staleIssueLabel: process.env['INPUT_STALE-ISSUE-LABEL'],
exemptIssueLabels: process.env['INPUT_EXEMPT-ISSUE-LABELS'],
stalePrLabel: process.env['INPUT_STALE-PR-LABEL'],
exemptPrLabels: process.env['INPUT_EXEMPT-PR-LABELS'],
responseRequestedLabel: process.env['INPUT_RESPONSE-REQUESTED-LABEL'],
minimumUpvotesToExempt: Number.parseInt(process.env['INPUT_MINIMUM-UPVOTES-TO-EXEMPT'] ?? '0'),
cfsLabel: process.env['INPUT_CLOSED-FOR-STALENESS-LABEL'],
issueTypes: process.env['INPUT_ISSUE-TYPES']?.split(','),
useCreatedDateForAncient: !!process.env['INPUT_USE-CREATED-DATE-FOR-ANCIENT'],
});
});

it('Handles bad inputs', {}, () => {
const env = process.env;
process.env.DAYS_BEFORE_ANCIENT = 'asdf';
process.env['INPUT_DAYS-BEFORE-ANCIENT'] = 'asdf';
expect(() => {
entrypoint.getAndValidateInputs();
}).toThrow();
process.env.DAYS_BEFORE_ANCIENT = env.DAYS_EFORE_ANCIENT;
process.env.DAYS_BEFORE_STALE = 'asdf';
process.env['INPUT_DAYS-BEFORE-ANCIENT'] = env['INPUT_DAYS-BEFORE-ANCIENT'];
process.env['INPUT_DAYS-BEFORE-STALE'] = 'asdf';
expect(() => {
entrypoint.getAndValidateInputs();
}).toThrow();
process.env.DAYS_BEFORE_STALE = env.DAYS_BEFORE_STALE;
process.env.DAYS_BEFORE_CLOSE = 'asdf';
process.env['INPUT_DAYS-BEFORE-STALE'] = env['INPUT_DAYS-BEFORE-STALE'];
process.env['INPUT_DAYS-BEFORE-CLOSE'] = 'asdf';
expect(() => {
entrypoint.getAndValidateInputs();
}).toThrow();
Expand Down
38 changes: 19 additions & 19 deletions test/mockinputs.ts
Original file line number Diff line number Diff line change
Expand Up @@ -310,22 +310,22 @@ export const issueWithoutLabels = {
export const actionInputs = {
GITHUB_REPOSITORY: 'aws-actions/stale-issue-cleanup',
LOGLEVEL: 'DEBUG',
INPUT_REPO_TOKEN: 'FAKE-REPO-TOKEN',
INPUT_ANCIENT_ISSUE_MESSAGE: 'Ancient issue message.',
INPUT_ANCIENT_PR_MESSAGE: 'Ancient Pr message.',
INPUT_STALE_ISSUE_MESSAGE: 'Stale issue message.',
INPUT_STALE_PR_MESSAGE: 'Stale pr message.',
INPUT_DAYS_BEFORE_STALE: '0.05',
INPUT_DAYS_BEFORE_CLOSE: '0.06',
INPUT_DAYS_BEFORE_ANCIENT: '1',
INPUT_STALE_ISSUE_LABEL: 'closing-soon',
INPUT_EXEMPT_ISSUE_LABELS: 'go-away-bot',
INPUT_STALE_PR_LABEL: 'stale-pr',
INPUT_EXEMPT_PR_LABELS: 'go-away-bot',
INPUT_RESPONSE_REQUESTED_LABEL: 'response-requested',
INPUT_CLOSED_FOR_STALENESS_LABEL: 'closed-for-staleness',
INPUT_MINIMUM_UPVOTES_TO_EXEMPT: '1',
INPUT_ISSUE_TYPES: 'issues,pull_requests',
'INPUT_REPO-TOKEN': 'FAKE-REPO-TOKEN',
'INPUT_ANCIENT-ISSUE-MESSAGE': 'Ancient issue message.',
'INPUT_ANCIENT-PR-MESSAGE': 'Ancient Pr message.',
'INPUT_STALE-ISSUE-MESSAGE': 'Stale issue message.',
'INPUT_STALE-PR-MESSAGE': 'Stale pr message.',
'INPUT_DAYS-BEFORE-STALE': '0.05',
'INPUT_DAYS-BEFORE-CLOSE': '0.06',
'INPUT_DAYS-BEFORE-ANCIENT': '1',
'INPUT_STALE-ISSUE-LABEL': 'closing-soon',
'INPUT_EXEMPT-ISSUE-LABELS': 'go-away-bot',
'INPUT_STALE-PR-LABEL': 'stale-pr',
'INPUT_EXEMPT-PR-LABELS': 'go-away-bot',
'INPUT_RESPONSE-REQUESTED-LABEL': 'response-requested',
'INPUT_CLOSED-FOR-STALENESS-LABEL': 'closed-for-staleness',
'INPUT_MINIMUM-UPVOTES-TO-EXEMPT': '1',
'INPUT_ISSUE-TYPES': 'issues,pull_requests',
};

export const now = new Date(Date.now()).toISOString();
Expand Down Expand Up @@ -536,8 +536,8 @@ export const issue261 = {
],
state: 'open',
comments: 1,
created_at: new Date(Date.parse(now) - 864e5 * Number.parseFloat(actionInputs.INPUT_DAYS_BEFORE_STALE)).toISOString(),
updated_at: new Date(Date.parse(now) - 864e5 * Number.parseFloat(actionInputs.INPUT_DAYS_BEFORE_STALE)).toISOString(),
created_at: new Date(Date.parse(now) - 864e5 * Number.parseFloat(actionInputs['INPUT_DAYS-BEFORE-STALE'])).toISOString(),
updated_at: new Date(Date.parse(now) - 864e5 * Number.parseFloat(actionInputs['INPUT_DAYS-BEFORE-STALE'])).toISOString(),
closed_at: '2016-08-19T12:48:43Z',
author_association: 'NONE',
body: null,
Expand All @@ -551,7 +551,7 @@ export const issue261Timeline = [
event: 'labeled',
commit_id: null,
commit_url: null,
created_at: new Date(Date.parse(now) - 864e5 * Number.parseFloat(actionInputs.INPUT_DAYS_BEFORE_STALE)).toISOString(),
created_at: new Date(Date.parse(now) - 864e5 * Number.parseFloat(actionInputs['INPUT_DAYS-BEFORE-STALE'])).toISOString(),
label: { name: 'response-requested', color: 'c5def5' },
},
];
Expand Down

0 comments on commit 5462b73

Please sign in to comment.